web-dev-qa-db-fra.com

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

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

Toute aide serait grandement appréciée.

46
Chris

Ici vous pouvez trouver 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 [email protected]:/some/remote/directory/bar

Cela copiera le répertoire "foo" de l'hôte local vers le "bar" du répertoire de l'hôte distant. Ici -r est la copie récursive de répertoires entiers.

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

[~ # ~] btw [~ # ~] L'erreur "Impossible de canoniser" que vous avez mentionnée apparaît lorsque le serveur sftp n'est pas en mesure d'accéder au fichier/répertoire mentionné dans la commande.

[~ # ~] mise à jour [~ # ~] : Pour les utilisateurs qui souhaitent utiliser put spécifiquement, veuillez vous référer à la réponse de Ben Thielker ici.

25
Eugene S

Pour les personnes voulant réellement une réponse directe à cette question (au lieu de se faire dire 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 peut-être le créer d'abord.

mkdir directoryName
197
Ben Thielker
sftp> mkdir source
sftp> put -r source
 Uploading source/ to /home/myself/source
 Entering source/
 source/file1
 source/file2

enter image description here

3