web-dev-qa-db-fra.com

Quelle est la cause de l'erreur "Impossible de canoniser: Aucun fichier ou répertoire de ce type" dans SFTP?

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?

13
dmoney

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.

18
Joe Susnick

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

5
Vidhuran

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.

1
Growling Flea

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
1

Un meilleur moyen est d'utiliser scp.

scp -r LargeFile/"; echo quit)|sftp -vb - username@remotehost:TEST/
1
Salah