Comment télécharger un fichier depuis la ligne de commande? via ssh?

21

Je souhaite télécharger des fichiers d'un serveur distant sur mon lecteur local et le faire à partir de la ligne de commande. Je veux également pouvoir le faire via SSH. Comment puis-je faire ceci?

Remarque: le serveur distant est Ubuntu, le local est Mac OS X

Andrew
la source

Réponses:

29

Utilisez scp-command, il s'exécute au-dessus de SSH. Exemple:

scp [email protected]:/path/to/file localfile

Cela fonctionne également dans un autre sens

scp localfile username@host:/path/remotefile

Le nom d'utilisateur, le chemin et le nom de fichier peuvent être omis (mais pas le :!).

Comme Iain l'a dit, SFTP fonctionne également, mais j'ai tendance à privilégier scpson cputilisation similaire.

Ahe
la source
Moins courant, je suis sûr, et corrigez-moi si je me trompe, mais je pense que scp fonctionne également de distance à distance, si vous avez vraiment besoin de: scp username@remote1:/path/to/file username@remote2:/path/to/file
JMD
pouvez-vous copier des répertoires?
Andrew
compris ... -r copie récursivement les répertoires aussi
Andrew
Je recommande d'ajouter l' -poption lors de la copie de fichiers ou de dossiers avec scp. Il copie également les attributs du fichier (horodatages et drapeaux). Je trouve que je veux -pplus souvent que je ne le veux pas!
joeytwiddle
Vous pouvez également acheminer de distance à distance via l'hôte local à l'aide de l' -3indicateur: scp -3 [email protected]:/files/file1.zip [email protected]:/archivesceci est utile si vous devez utiliser une clé privée pour accéder aux deux serveurs uniquement sur localhost: scp -3i /local/path/to/.ssh/private_key dan@host1:/path/to/file.txt miri@host2:/path/to/upload/dir/la barre de progression est désactivée pour -3
Dan Sandland
3

Vous pouvez également l'utiliser rsyncpour cela. Il peut fonctionner sur SSH.

osgx
la source
rsync -avvPest mon préféré pour les fichiers et / ou dossiers, mais il y a un inconvénient: il doit être installé sur la machine distante.
joeytwiddle
Si vous rencontrez des problèmes de connexion, vous devrez peut-être passer -e sshpour dire à rsync de se connecter via ssh.
joeytwiddle
3

J'utilise SFTP pour cela. C'est la ligne de commande et utilise la même sécurité que SSH.

Iain
la source
1

Si vous ne pouvez pas utiliser scpou SFTP, vous pouvez utiliser tarvia SSH:

tar cf - . | ssh otherhost "cd /mydir; tar xvf -"

Celui-ci est également bon si vous avez des fichiers clairsemés qui sinon "exploseront".

Jimmy Hedman
la source