web-dev-qa-db-fra.com

sftp: télécharge tous les fichiers, répertoires et sous-répertoires contenus dans un dossier

Sur la machine A j'ai le dossier

/home/a/

Sur la machine B, j'ai le dossier

/home/b/

Je souhaite transférer tous les fichiers, répertoires et sous-répertoires de/home/a dans/home/b avec sftp. Sur la machine A, j’ai essayé les commandes:

sftp [email protected]
put /home/a/* /home/b/

mais cela ne fonctionne pas, je reçois le message d'erreur suivant: "ignorer le fichier non régulier/home/a/a1" ... [a1 est un sous-répertoire d'un]
Comment pourrais-je modifier l'instruction de vente?

Merci! :)

MODIFIER:

J'ai résolu en utilisant scp:

scp -r /home/a/ [email protected]:/home/b/
27
fibon82

Bien que n'étant pas strictement équivalent à sftp, rsync est une alternative très puissante pour scp et sftp, en particulier lors de la mise à jour des copies de la machine A à la machine B, car elle ne copie pas les fichiers non modifiés; il est également capable de supprimer des fichiers de la machine B qui ont été supprimés de la machine A (uniquement lorsque cela est indiqué à bien sûr).

Dans votre cas, la syntaxe serait la suivante:

rsync -zrp /home/a/ [email protected]:/home/b/

L'option -r sert à la copie récursive de fichiers, -z permet la compression pendant le transfert et -p préserve les autorisations du fichier (création, édition, etc.) lors de la copie, ce que scp n'effectue pas autant que je sache. Beaucoup plus d'options sont possibles. comme d'habitude, lisez les pages man.

21
Karolos

Dans sftp, cette commande télécharge de manière récursive le contenu du répertoire actuel dans le répertoire actuel distant:

 put -r .

Voir man sftp .

16
Carlos Da Costa

scp (copie sécurisée) est Linux de facto pour le transfert de fichiers via un tunnel sécurisé. Dans votre cas, vous voudriez utiliser le commutateur récursif, par exemple:

scp -r /home/a/ [email protected]:/home/b/
9
deed02392

Essayez d'utiliser

put -r /home/a/ /home/b/

pour plus d'informations, consultez: this

4
guest_who

En fait, put -r devrait fonctionner. Mais le dossier de destination doit être présent sur votre hôte distant:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2
0
Dieter