web-dev-qa-db-fra.com

scp ne fonctionne pas en disant que c'est une erreur de répertoire

J'essaie de copier un fichier sur un serveur distant dans un certain dossier.

C'est un plan de sauvegarde adrive. Mais il vient avec scp. Je peux copier le fichier si je ne sélectionne pas le répertoire. Même si je mets un répertoire qui n'existe pas, il dit que c'est un répertoire.

root@Host1 [/usr/src]# scp ftpdelete.sh user@[email protected]:/mysql-only/
scp: /mysql-only/: Is a directory
16
user4603311

Étonnamment dans mon cas, c'est que le répertoire n'existait pas !! : | Le message d'erreur est-il un bug? ... ou c'est moi. Tenté pour ce dernier.

29

SCP ne crée pas automatiquement de nouveau répertoire si vous voulez scp fichier (il crée un répertoire uniquement si vous faites une copie récursive). Il y a un mauvais message d'erreur. L'erreur doit être No such file or directory ou similaire.

C'est un problème connu et il y a un bugzilla en amont à ce sujet [1].

[1] https://bugzilla.mindrot.org/show_bug.cgi?id=1768

10
Jakuje

Vous copiez le fichier sh dans un nouveau répertoire sur le serveur, et le répertoire devrait être là mais en fait pas (alors la machine pense que vous voulez changer le fichier pour être un répertoire). Le répertoire que vous définissez est probablement incorrect.

5
Lerner Zhang

-r 'Copie récursivement des répertoires entiers. Notez que scp suit les liens symboliques rencontrés dans la traversée de l'arborescence.
Mais il ne crée pas de répertoire mais vous pouvez le faire ci-dessous

ssh remote mkdir /diretcory

root@Host1 [/usr/src]# scp -r ftpdelete.sh user@[email protected]:/complete_path/mysql-only/

ou

rsync peut faire la création d'un répertoire s'il n'existe pas sa syntaxe de commande de base est similaire à scp: ²

$ rsync -r -e ssh ftpdelete.sh me @ my-system:/complete_path/mysql-only /

3
HashSu
scp -r source_location user@servername:/target_location
2

J'ai vu une erreur similaire, lorsque j'ai essayé scp vers le chemin d'accès relatif au répertoire home. L'erreur a été corrigée après la suppression de l'interlignage inutile / dans le chemin:

# scp ftpdelete.sh user@[email protected]:mysql-only/

plutôt que

# scp ftpdelete.sh user@[email protected]:/mysql-only/
                                            ^
0
Oleg Svechkarenko

Essayez de télécharger le fichier directement dans votre répertoire racine local, puis copiez-le à partir de là: root @ Host1 [/ usr/src] # scp user @ Host: /root/Desktop/file.txt/root/home /

0
Firas BC