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?
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.
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.
scp [email protected]:/root/Jmeter/reports.jtl Downloads/
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 .
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.
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 ...