Erreur lors de l'utilisation de SCP: «fichier non standard»

73

Je cherche 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

Résultats dans une requête pour un mot de passe puis ...

scp: .: not a regular file
JeffM
la source

Réponses:

59

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

Vous avez transmis en root@IP:tant que source de la copie et en /path/to/picture.jpgtant que destination. La source est le répertoire de base de l'utilisateur rootsur la machine IP. Ceci est utile en tant que destination, mais pas en tant que source. Ce que vous avez tapé requis pour copier un répertoire sur un fichier; scpne peut pas copier un répertoire sauf si vous demandez une copie récursive avec l' -roption (et il refuserait d'écraser un fichier existant avec un répertoire même avec -r, mais il écraserait discrètement un fichier normal si la source était un fichier normal).

Si /path/to/picture.jpgle chemin sur la machine distante du fichier que vous souhaitez copier est correct, vous devez coller le nom du fichier sur 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.jpgsur 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.jpgau même emplacement localement, vous devez répéter le chemin. Vous pouvez faire en sorte que votre shell répète 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
Gilles, arrête de faire le mal
la source
2
assurez-vous qu'il n'y a pas d'espace entre le nom d'hôte et le fichier
chris
Je me sens incroyablement stupide après avoir lu ceci. source, destination! Duh!
Chaim Eliyah
112

Lors de la copie d'un répertoire, vous devez utiliser l' -roption suivante:

scp -r root@IP:/path/to/file /path/to/filedestination
utilisateur48435
la source
1
Bien que la réponse acceptée réponde techniquement à la question, cette réponse correspond très probablement à ce que recherchent les personnes qui se rendent sur cette page.
Cgnorthcutt
4

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

root @ IP:

et

/chemin

lurker
la source
Mais alors vous n’avez plus de cible pour vous scp.
Bernhard
Ouaip. J'ai appuyé sur entrer trop rapidement et il me manque le représentant pour le réparer. surpris je peux même commenter ici. à votre santé.
lurker
2
Je pense que vous pouvez toujours commenter vos propres contributions, et j'ai pensé que vous pourriez aussi toujours les éditer?
Bernhard
Je ne pense pas que cela puisse causer cette erreurnot a regular file
HISI
@hisi utilise -rcomme argument scp.
Ankur Loriya
2

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 de base de root (scp users home .).

Donc, vous devez fournir le chemin exact du fichier

Manula Waidyanatha
la source
Cela a fonctionné. Merci beaucoup, mec. Continuez!
JeffM
2

Vous obtenez cette erreur parce que vous essayez de copier un dossier et non un fichier. Vous devez donc copier vos fichiers de manière récursive à l'aide de l' -roption

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

OU

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

scp -r /path/to/file root@RemoteIP:/path/to/filedestination
Yogesh Darji
la source
0
scp root@IP:/path/to/*.jpg  /path/to/filedestination/

Cela fonctionnera (au moins sur mon Mac)

utilisateur253616
la source