2012-02-08 13:15:37 +0000 2012-02-08 13:15:37 +0000
29
29

sftp : télécharger 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 fibon82@machineB.com
put /home/a/* /home/b/

mais ça ne marche pas, j'ai le message d'erreur : “sauter le fichier non-régulier /home/a/a1”… [a1 est un sous-répertoire de a] Comment pourrais-je modifier l'instruction put ?

Merci ! :)

EDIT :

J'ai résolu en utilisant scp :

scp -r /home/a/ fibon82@machineB.com:/home/b/

Réponses (6)

21
21
21
2014-10-02 20:33:25 +0000

En sftp cette commande télécharge récursivement le contenu du répertoire courant dans le répertoire courant distant :

put -r .

Voir man sftp .

21
21
21
2012-02-08 22:41:19 +0000

Bien qu'il ne soit 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 vers la machine B, car il ne copie pas les fichiers qui n'ont pas été modifiés ; il est également capable de supprimer les fichiers de la machine B qui ont été supprimés de la machine A (uniquement lorsqu'on le lui demande bien sûr).

Dans votre cas, la syntaxe serait

rsync -zrp /home/a/ user@remote.host.com:/home/b/

L'option -r permet de copier récursivement des fichiers, -z active la compression pendant le transfert, et -p préserve les permissions du fichier (création, modification, etc.) lors de la copie, ce que scp ne fait pas AFAIK. De nombreuses autres options sont possibles ; comme d'habitude, lisez les pages man.

10
10
10
2012-02-08 16:04:32 +0000

scp (copie sécurisée) est le 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/ user@remote.host.com:/home/b/
4
4
4
2014-01-04 14:02:14 +0000

Essayez d'utiliser

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

pour plus d'informations, consultez le site : (http://www.tutonics.com/2012/06/secure-file-transfer-using-sftp.html) [ this ] 0x3& [ this ] 0x3& [ this ] 0x3& [ this ] 0x3

0
0
0
2017-10-05 13:53:58 +0000

En fait, mettre -r devrait fonctionner. Mais le dossier destintion 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
-1
-1
-1
2014-02-14 10:10:51 +0000

Dans mon cas, rsync n'était pas possible, alors j'ai utilisé :

mput -rp /home/a/ /home/b/