110 votes

Transfert de fichiers via SSH

Je me connecte en ligne de commande à un serveur distant et j'essaie de copier un répertoire sur ma machine locale avec la commande scp commandement. Cependant, le serveur distant renvoie ce message "usage" :

[Stewart:console/ebooks/discostat] jmm% scp -p ./styles/
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 [...] [[user@]host2:]file2
[Stewart:console/ebooks/discostat] jmm%

J'aimerais pouvoir transférer des fichiers dans les deux sens. D'après ce que j'ai lu, je pensais que la commande ci-dessus fonctionnerait pour le téléchargement, et scp -p [localpath] [remotepath] pour le téléchargement ?

175voto

lemnisca Points 2308

Vous devez scp quelque chose quelque part. Vous avez scp ./styles/ donc vous dites que la copie sécurisée ./styles/ mais pas où le copier.

En général, si vous voulez télécharger, vous le ferez :

# download: remote -> local
scp user@remote_host:remote_file local_file 

où fichier_local peut en fait être un répertoire dans lequel placer le fichier que vous copiez. Pour le téléchargement, c'est l'inverse :

# upload: local -> remote
scp local_file user@remote_host:remote_file

Si vous voulez copier un répertoire entier, vous aurez besoin de -r . Pensez à scp comme cp sauf que vous pouvez spécifier un fichier avec user@remote_host:file ainsi que les fichiers locaux.

Edit : Comme indiqué dans un commentaire, si les noms d'utilisateur sur les hôtes locaux et distants sont les mêmes, alors l'utilisateur peut être omis lors de la spécification d'un fichier distant.

44voto

JeeBee Points 11882

Si vous copiez vers/depuis votre ordinateur de bureau, utilisez WinSCP, ou si vous êtes sous Linux, Nautilus supporte SCP via l'option Connecter au serveur.

scp ne peut copier des fichiers que sur une machine exécutant sshd, vous devez donc exécuter le logiciel client sur la machine distante à partir de celle sur laquelle vous exécutez scp.

Si vous copiez en ligne de commande, utilisez :

# copy from local machine to remote machine
scp localfile user@host:/path/to/whereyouwant/thefile

ou

# copy from remote machine to local machine
scp user@host:/path/to/remotefile localfile

11voto

Ken Points 23619

Vous devez spécifier à la fois la source et la destination, et si vous voulez copier des répertoires, vous devriez regarder l'option -r.

Ainsi, pour copier récursivement /home/user/quelque chose du serveur distant vers votre répertoire actuel :

scp -pr user@remoteserver:whatever .

1voto

Gareth Points 42402

Non, vous devez toujours scp [from] [to] quelle que soit la façon dont vous copiez

La différence est que vous devez scp -p server:serverpath localpath

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X