Comment puis-je télécharger un dossier entier, qui contient d'autres dossiers, en utilisant sftp sous linux?

J'ai essayé put -r directory/*, qui n'a téléchargé que les fichiers et non les dossiers. M'a donné l'erreur, ne peut pas Couldn't canonicalise.

Toute aide serait grandement appréciée.

39
demandé sur Eugene S 2012-04-10 11:40:46

4 réponses

Ici Vous trouverez des explications détaillées sur la façon de copier un répertoire en utilisant scp. Dans votre cas, ce serait quelque chose comme:

$ scp -r foo your_username@remotehost.edu:/some/remote/directory/bar

Cela va copier le répertoire " foo "de l'hôte local vers le répertoire"bar" d'un hôte distant. Ici -r est-copie récursivement des répertoires entiers.

Vous pouvez également utiliser rcp avec une syntaxe similaire. La seule différence entre eux est que scp utilise secure shell et rcp utilise le shell distant.

BTW Le "ne pouvait pas canonicalise " erreur que vous avez mentionné apparaît lorsque le serveur sftp est incapable d'accéder au fichier/répertoire mentionné dans la commande.

UPDATE : pour les utilisateurs qui souhaitent utiliser put spécifiquement, veuillez vous référer à la réponse de Ben Thielker ici.

26
répondu Eugene S 2018-01-08 12:44:03

Pour les personnes qui veulent réellement une réponse directe à cette question(au lieu d'être dit d'utiliser autre chose que sftp)...

put -r local/path/to/directoryName

Le répertoire téléchargé doit déjà exister dans le répertoire de travail sur le serveur, vous devrez donc le créer en premier.

mkdir directoryName
168
répondu Ben Thielker 2015-11-24 22:46:02
sftp> mkdir source
sftp> put -r source
 Uploading source/ to /home/myself/source
 Entering source/
 source/file1
 source/file2

entrez la description de l'image ici

2
répondu Girdhar Singh Rathore 2017-05-26 09:00:04

Utilisez scp à la place. Il utilise aussi SSH et peut facilement gérer la récursivité.

-8
répondu IneQuation 2012-04-10 08:06:36