web-dev-qa-db-fra.com

Comment copier un fichier d'un serveur distant vers une machine locale?

Dans mon terminal Shell, j'ai ssh'ed dans un serveur distant, et je cd dans le répertoire que je veux.

Maintenant, dans ce répertoire, il y a un fichier appelé table que je veux copier sur ma machine locale /home/me/Desktop.

Comment puis-je faire ceci?

J'ai essayé scp table /home/me/Desktop mais il a donné une erreur sur aucun fichier ou répertoire de ce type.

Est-ce que quelqu'un sait comment faire ça?

278
omega

La syntaxe de scp est:

Si vous êtes sur l'ordinateur à partir duquel vous souhaitez envoyer un fichier à un ordinateur distant:

scp /file/to/send username@remote:/where/to/put

Ici, le remote peut être un nom de domaine complet ou une adresse IP.

D'un autre côté, si vous êtes sur l'ordinateur et souhaitez recevoir des fichiers d'un ordinateur distant:

scp username@remote:/file/to/send /where/to/put

scp peut également envoyer des fichiers entre deux hôtes distants:

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

La syntaxe de base est donc:

scp username@source:/location/to/file username@destination:/where/to/put

Tu peux lire man scp pour avoir plus d'idées à ce sujet.

445
heemayl

Vous pouvez utiliser rsync comme alternative. C'est principalement pour la synchronisation de fichiers .. mais vous pouvez également l'utiliser à cette fin.

rsync -avzh --stats --progress remoteuser@remoteip:/path/  localpath 

pour ajouter des options ssh:

rsync -e "ssh -P $port_value" remoteuser@remoteip:/path/  localpath

--progress et --stats sont utiles pour l'affichage en temps réel du transfert.

Je pense que c'est une meilleure option que SCP, car il ignore les fichiers déjà transférés, ce qui est visible lorsque vous copiez beaucoup de fichiers.

16
fugitive
scp [email protected]:/root/Jmeter/reports.jtl Downloads/
12
user135545
scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Si vous utilisez avec le port:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .
9

Si vous faites entièrement confiance à tout le monde sur le réseau et que vous pouvez connecter directement un port de la machine de destination, vous pouvez utiliser netcat: nc.

Disons que l'adresse IP de la machine de destination est 192.168.1.123

Sur la course de destination:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir

Vous pouvez choisir un port différent, et également vous lier à une autre IP de vos interfaces, 0.0.0.0 n'attrape que toutes les interfaces.

Sur le run source:

tar zcvf - filename | nc 192.168.1.123 7777

À mon humble avis, c'est le moyen le plus rapide possible d'envoyer un fichier d'un ordinateur à un autre en utilisant des réseaux numériques.

Les arguments et les options de ligne de commande peuvent légèrement changer entre les différentes versions de nc et tar, mais cela fonctionnera certainement avec les distributions Linux récentes.

3
onur güngör

Sous Linux, pour copier un dossier et son contenu depuis le répertoire utilisateur (racine dans cet exemple), vers un dossier du répertoire utilisateur local, j'exécute cette commande sur la machine locale:

scp -r [email protected]: ~/folderinremoteuserdir ~/folderinlocaluserdir

Notez le ~/que je semble souvent oublier ...

2
Little Brain