web-dev-qa-db-fra.com

Comment extraire un fichier d'un serveur en utilisant scp?

Je suis sur la machine A et je veux extraire un fichier de la machine B.

A$ scp <myuserid>@hostB:<path of file in B> .

il dit que:

scp: <path of file in B>: No such file or directory

Mais sur la machine B, ce fichier existe dans ce chemin.

Qu'est-ce qui ne va pas?

32
xyz

Vous n'avez spécifié aucun fichier: vous devez ajouter le fichier (avec chemin) après les deux points:

A$ scp <myuserid>@hostB:/absolutepath/file .

ou

A$ scp <myuserid>@hostB:relativepath/file .

pour un chemin relatif à votre répertoire personnel.

Si vous ne spécifiez pas un utilisateur différent (c'est-à-dire que l'utilisateur sur A et B sont les mêmes), vous n'avez pas besoin du @

A$ scp hostB:/path/file .
45
Matteo
$ scp username@remoteip:remote_location_file /location/where/you/save

Cela ne fonctionne que lorsque vous copiez un fichier. si vous voulez copier un répertoire utilisez

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

Option que vous pouvez utiliser à votre demande

-P port
Spécifie le port auquel se connecter sur l'hôte distant. Notez que cette option est écrite avec un "P" majuscule, car -p est déjà réservé pour conserver les heures et les modes du fichier dans rcp.

-p
Préserve les temps de modification, les temps d'accès et les modes du fichier d'origine.

-r
Copiez récursivement des répertoires entiers.

-v

Mode verbeux. Demande à scp et ssh d'imprimer des messages de débogage sur leur progression. Cela est utile pour déboguer les problèmes de connexion, d'authentification et de configuration.

4
Rakib

utiliser le chemin scp approprié

scp ssh://user@hostname/tmp/foo.txt .
2
BigMike

On peut SCP dans les deux sens facilement si l'on a le DMZ utilisateur et mot de passe Vous êtes sur votre machine locale: De DMZ vers votre machine linux locale (pull)). Signifie copier abc.text dans le dossier2 vers votre PWD actuellement connecté.

scp user@111111:folder1/folder2/abc.txt .

Il vous demandera un mot de passe

c'est tout

Vous voulez maintenant envoyer un dossier avec des sous-dossiers et des fichiers de votre machine locale vers DMZ:

usr @ localmachine: ~/abc/defs> dossier scp -r/usr @ 111111: vkrishna/docker /

nouveau mot de passe sera demandé

: est le dossier racine de la machine distante et vkrishna est un dossier là-bas & sous-dossier docker. Le dossier defs localement a un dossier appelé "dossier" que nous voulons transférer complètement.

Comme/abc/defs/dossier

1
vimal krishna

Vous pouvez spécifier soit un chemin de fichier relatif à votre répertoire personnel, soit un chemin de fichier absolu. Par exemple, si foo.txt se trouve dans un répertoire appelé docs sous votre répertoire personnel et bar.txt est dans /var/tmp, tu peux faire

scp [email protected]:docs/foo.txt .
scp [email protected]:/var/tmp/bar.txt .

Notez que si le nom de fichier contient des caractères spéciaux pour le shell distant (généralement des espaces ou !"#$&'*;<>?[\]^`{|}~), vous devez les échapper pour le shell distant en plus de les échapper pour le shell local. Par exemple, si le fichier est appelé foo bar.txt et se trouve dans votre répertoire personnel:

scp [email protected]:'foo\ bar.txt' .

Si vous rencontrez des difficultés avec les fichiers contenant des caractères de ponctuation, essayez d'utiliser sftp au lieu de scp pour les transférer. Ou utilisez une méthode encore plus pratique, si vous pouvez utiliser Fuse : montez le système de fichiers de la machine distante en utilisant sshfs , puis utilisez des commandes de manipulation de fichiers ordinaires.

mkdir Host.example.com
sshfs [email protected]:/ Host.example.com
cp Host.example.com/path/to/file .