J'essaie d'utiliser SFTP pour télécharger l'intégralité du répertoire sur l'hôte distant, mais j'ai une erreur.
J'ai utilisé la commande comme ci-dessous: (echo "put -r LargeFile/"; echo quit)|sftp -vb - username@remotehost:TEST/
Mais j'ai eu l'erreur "Impossible de canoniser: Aucun fichier ou répertoire de ce type" "Impossible de canonaliser le chemin"/home/s1238262/TEST/LargeFile "
Je pensais que c'était causé par les droits d'accès. J'ai donc ouvert une connexion SFTP à l'hôte distant en mode interactif et j'ai essayé de créer un nouveau répertoire "LargeFile" dans TEST /. Et j'ai réussi. Ensuite, j'ai utilisé la même commande que ci-dessus pour télécharger le répertoire complet "LargeFile". J'ai aussi réussi. Les sous-répertoires de LargeFile ont été créés ou copiés automatiquement.
Donc, je suis confus. Il semble que seul le répertoire LargeFile/ne puisse être créé en mode non interactif. Quel est le problème avec elle ou ma commande?
Avec SFTP, vous ne pouvez copier que si le répertoire existe. Alors
> mkdir LargeFile
> put -r path_to_large_file/LargeFile
Identique aux conseils fournis dans le lien de @Vidhuran, mais cela devrait vous éviter quelques lectures.
Cette erreur pourrait éventuellement se produire en raison de l'option -r
. Référez-vous https://unix.stackexchange.com/questions/7004/uploading-directories-with-sftp
Si vous utilisez Ubuntu 14.04, le sftp a un bogue. Si vous avez ajouté le '/' au nom du fichier, vous obtiendrez le Impossible de canoniser: Echec erreur.
Par exemple:
sftp> cd my_inbox/## vous donnera une erreur
sftp> cd my_inbox ## ne vous donnera PAS l'erreur
Notez que la barre oblique manque dans la demande correcte. La barre oblique apparaît lorsque vous utilisez la touche TAB pour renseigner automatiquement les noms dans le chemin.
Le moyen le plus simple pour moi était de compresser mon dossier en LargeFile.Zip
local et simplement put LargeFile.Zip
Zip -r LargeFile.Zip LargeFile
sftp www.mywebserver.com (or ip of the webserver)
put LargeFile.Zip (it will be on your remote server local directory)
unzip Largefile.Zip
Un meilleur moyen est d'utiliser scp.
scp -r LargeFile/"; echo quit)|sftp -vb - username@remotehost:TEST/