Comment télécharger récursivement un répertoire à l'aide de smbclient?

23

Lorsque j'essaie de récupérer un répertoire avec get "Path To\Directory\", j'obtiens l'erreur suivante:

NT_STATUS_FILE_IS_A_DIRECTORY opening remote file Path To\Directory

Comment télécharger récursivement ce répertoire?

(Utilisation de smbclient v3.6.23. Le serveur est un ordinateur exécutant Windows 7 Home Edition.)

hololeap
la source
smbclient utilise le même type de sémantique que les clients serveurs comme FTP et HTTP, où chaque get ou put cible un fichier. vous pouvez écrire des scripts pour effectuer des récupérations par répertoire, ou vous pouvez utiliser les commandes mget / mput pour spécifier un masque ou un caractère générique pour récupérer plusieurs fichiers, comme indiqué dans ma réponse. il se peut que smbclient ne soit pas tout à fait le bon outil pour vos besoins.
Frank Thomas

Réponses:

51

selon la page de manuel smbclient , vous devez utiliser la mgetcommande, avec a masket recursionet promptset. Ensuite, cdvers le répertoire que vous souhaitez obtenir récursivement

    smbclient '\\server\share'
    mask ""
    recurse ON
    prompt OFF
    cd 'path\to\remote\dir'
    lcd '~/path/to/download/to/'
    mget *

ou, tous sur une seule ligne,

smbclient '\\server\share' -N -c 'prompt OFF;recurse ON;cd 'path\to\directory\';lcd '~/path/to/download/to/';mget *'

si vous devez vous authentifier auprès du serveur, supprimez -N et utilisez le paramètre Mot de passe de la commande connect.

http://technotize.blogspot.com/2011/12/copy-folder-with-ubuntu-smb-client.html

Frank Thomas
la source
2
De plus, je pense que vos citations sont un peu confuses dans le one-liner. Mon smbclientseul semble aimer traiter les répertoires entre "guillemets doubles".
c24w
Juste copié et remplacé les dossiers mais cela n'a pas fonctionné - se termine par un suivi>
Wax Cage
Pour les gens qui veulent vraiment copier sans problème, suivez cet article: indradjy.wordpress.com/2010/04/14/… (m'a aidé)
Wax Cage
0

utilisez l'option -D pour définir le répertoire

smbclient -D "\" -c ls
smbclient -D "\Path\To\Directory" -c ls

si vous voulez télécharger / obtenir le fichier, faites

smbclient -D "\Path\To\Directory" -c "get target /tmp/target"
aGuegu
la source