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?
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 .
$ 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.
utiliser le chemin scp approprié
scp ssh://user@hostname/tmp/foo.txt .
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
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 .