Je suis SSH sur un serveur distant en ligne de commande et j'essaie de copier un répertoire sur ma machine locale à l'aide de la commande scp
. Cependant, le serveur distant renvoie le message "usage" suivant:
[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?
Vous devez scp
quelque chose quelque part. Vous avez scp ./styles/
, vous indiquez donc une copie sécurisée ./styles/
, mais vous ne savez pas où le copier.
Généralement, si vous voulez télécharger, cela ira:
# download: remote -> local
scp user@remote_Host:remote_file local_file
où local_file
pourrait en fait être un répertoire dans lequel vous placerez le fichier que vous copiez. Pour télécharger, c'est l'inverse:
# upload: local -> remote
scp local_file user@remote_Host:remote_file
Si vous souhaitez 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 des fichiers locaux uniquement.
Éditer: comme indiqué dans un commentaire, si les noms d'utilisateur des hôtes local et distant sont identiques, l'utilisateur peut être omis lors de la spécification d'un fichier distant.
Si vous effectuez une copie vers/à partir de votre ordinateur de bureau, utilisez WinSCP ou sous Linux, Nautilus prend en charge SCP via l’option Connexion au serveur.
scp ne pouvant copier que des fichiers 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 sur la 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
Vous devez spécifier à la fois la source et la destination. Si vous souhaitez copier des répertoires, vous devez utiliser l'option -r.
Donc, pour copier récursivement/home/user/que ce soit du serveur distant dans votre répertoire actuel:
scp -pr user@remoteserver:whatever .
Non, vous devez toujours scp [from] [to]
quelle que soit la manière dont vous copiez.
La différence est que vous devez scp -p server:serverpath localpath