Перенос файлов через SSH
Я использую SSHing на удаленном сервере в командной строке и пытаюсь скопировать каталог на локальный компьютер с помощью команды scp
. Однако удаленный сервер возвращает это сообщение об использовании:
[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]
для загрузки?
Ответы
Ответ 1
Вам нужно 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
При копировании на/из вашего настольного компьютера используйте 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
Ответ 3
Вам нужно указать как источник, так и пункт назначения, и если вы хотите скопировать каталоги, вы должны посмотреть на параметр -r.
Итак, чтобы рекурсивно скопировать /home/user/whatever с удаленного сервера в ваш текущий каталог:
scp -pr [email protected]:whatever .
Ответ 4
Нет, вам все равно нужно scp [from] [to]
независимо от того, как вы копируете
Разница в том, что вам нужно scp -p server:serverpath localpath