2008-12-05 7 views
355

Я SSHing на удаленном сервере в командной строке и пытаюсь скопировать каталог на локальный компьютер с помощью команды scp. Однако удаленный сервер возвращает это сообщение «использование»:Перенос файлов по SSH

[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] 
      [[[email protected]]host1:]file1 [...] [[[email protected]]host2:]file2 
[Stewart:console/ebooks/discostat] jmm% 

Я хотел был бы быть в состоянии передать архивы в обоих направлениях. Из того, что я читал, я думал, что вышеуказанная команда будет работать для загрузки, и scp -p [localpath] [remotepath] для загрузки?

ответ

12

Нет, вам все еще нужно scp [from] [to] какой путь вы копируете

Разница заключается в том, что вам нужно scp -p server:serverpath localpath

+5

что цель -p? – Qinjie 2017-06-21 02:39:21

562

Вы должны scp что-то где-то. У вас есть scp ./styles/, поэтому вы говорите безопасную копию ./styles/, но не там, где ее нужно скопировать.

Вообще, если вы хотите скачать, он будет идти:.

# download: remote -> local 
scp [email protected]_host:remote_file local_file 

где local_file может быть на самом деле каталог поместить файл, который вы копируете в Чтобы загрузить, это наоборот:

# upload: local -> remote 
scp local_file [email protected]_host:remote_file 

Если вы хотите скопировать весь каталог, вам понадобится -r. Подумайте о scp как cp, за исключением того, что вы можете указать файл с [email protected]_host:file, а также только локальные файлы.

Редактировать: Как отмечено в комментарии, если имена пользователей на локальном и удаленном хостах одинаковы, тогда пользователь может быть опущен при указании удаленного файла.

+2

Обратите внимание, что если пользователь является одинаковым на удаленном хосте и локальном хосте, имя пользователя может быть опущено: scp hello.c myserver.net:~/projects/ – strager 2008-12-05 12:53:04

+0

Да, верно, я добавлю об этом примечание. Я включил пользователя, потому что тогда приводимые мной примеры всегда будут работать. :) – lemnisca 2008-12-05 13:10:27

122

При копировании на/из вашего настольного компьютера используйте WinSCP, или если в Linux Nautilus поддерживает SCP через параметр «Подключиться к серверу».

scp может копировать только файлы на машину, работающую под управлением sshd, поэтому вам нужно запустить клиентское программное обеспечение на удаленном компьютере с той, на которой выполняется scp.

При копировании в командной строке, используйте:

# copy from local machine to remote machine 
scp localfile [email protected]:/path/to/whereyouwant/thefile 

или

# copy from remote machine to local machine 
scp [email protected]:/path/to/remotefile localfile 
21

Вы должны указать источник и место назначения, и если вы хотите скопировать каталоги, которые вы должны смотреть на - r.

Так рекурсивно скопировать/дом/пользователь/независимо от удаленного сервера в текущем каталоге:

scp -pr [email protected]:whatever .