web-dev-qa-db-fra.com

Erreur lors de l'utilisation de SCP: "not a regular file"

Je recherche depuis un moment et je ne trouve pas la définition d'un fichier normal. Mon chemin est permanent (je commence à /) et je me connecte à

scp root@IP: /path/to/picture.jpg

Se traduit par une demande de mot de passe, puis ...

scp: .: not a regular file
81
JeffM

Un fichier normal est un fichier qui n'est pas un répertoire ou des types plus exotiques de fichiers "spéciaux" tels que les canaux nommés, les périphériques, les sockets, les portes, etc. Liens symboliques ne sont pas non plus des fichiers normaux, mais ils se comportent comme leur cible lorsqu'une application accède au contenu du fichier.

Tu es passé root@IP: comme source de la copie et /path/to/picture.jpg comme destination. La source est le répertoire personnel de l'utilisateur root sur la machine IP. Ceci est utile comme destination, mais pas comme source. Ce que vous avez tapé requis pour copier un répertoire sur un fichier; scp ne peut pas copier un répertoire sauf si vous demandez une copie récursive avec le -r option (et il refuserait d'écraser un fichier existant avec un répertoire même avec -r, mais il écraserait tranquillement un fichier normal si la source était un fichier normal).

Si /path/to/picture.jpg est le chemin sur la machine distante du fichier que vous souhaitez copier, vous devez coller le nom du fichier à la spécification de l'hôte. C'est le colon : qui sépare le nom d'hôte du chemin distant. Vous devrez également spécifier une destination.

scp root@IP:/path/to/picture.jpg /some/destination

Si vous souhaitez copier le fichier local /path/to/picture.jpg à l'hôte distant, vous devez échanger les arguments. Les commandes de copie Unix placent la ou les sources en premier et la destination en dernier.

scp /path/to/picture.jpg root@IP:

Si vous souhaitez copier le fichier distant /path/to/picture.jpg au même emplacement localement, vous devez répéter le chemin. Vous pouvez demander à votre Shell de répéter pour vous (moins de frappe, moins de lisibilité).

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg

Lors de la copie d'un répertoire, vous devez utiliser le -r option:

scp -r root@IP:/path/to/file /path/to/filedestination
129
user48435

Vous obtenez cette erreur parce que vous essayez de copier un dossier et non un fichier et que vous devez donc copier vos fichiers récursivement en utilisant -r option

Utilisez la commande ci-dessous lors de la copie de fichiers d'une machine distante vers une machine locale

scp -r root@RemoteIP:/path/to/file /path/to/filedestination

OR

Lors de la copie de fichiers d'une machine locale vers une machine distante

scp -r /path/to/file root@RemoteIP:/path/to/filedestination
5
Yogesh Darji

problème de syntaxe - supprimer l'espace blanc entre

root @ IP:

et

/chemin

4
lurker

scp root@IP:/path/to/file /path/to/filedestination

La commande ci-dessus copie un fichier du serveur distant sur votre ordinateur. Si vous tapez uniquement scp root@IP: il essaiera de copier le répertoire personnel de root (utilisateurs scp home .).

Vous devez donc fournir le chemin exact du fichier

2
Manula Waidyanatha
scp root@IP:/path/to/*.jpg  /path/to/filedestination/

Cela fonctionnera (au moins sur mon Mac)

0
user253616