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.
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.
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
sftp> mkdir source
sftp> put -r source
Uploading source/ to /home/myself/source
Entering source/
source/file1
source/file2
Utilisez scp
à la place. Il utilise aussi SSH et peut facilement gérer la récursivité.