Перенос файлов через 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