Как скопировать файл с удаленного сервера на локальный компьютер?

239

В моей терминальной оболочке я ssh'ed на удаленный сервер, и я cdв каталог, который я хочу.

Теперь в этом каталоге есть файл, tableкоторый я хочу скопировать на мой локальный компьютер /home/me/Desktop.

Как я могу это сделать?

Я пытался, scp table /home/me/Desktopно он выдал ошибку об отсутствии такого файла или каталога.

Кто-нибудь знает как это сделать?

омега
источник
Если вы часто копируете с помощью scp, вы можете смонтировать удаленный каталог в файловом браузере и перетаскивать его мышью. На моем хосте Ubuntu 15 он находится под строкой меню «Go»> «Enter Location»> debian@10.42.4.66:/home/debian. Кроме того, можно использовать sshfsдля монтирования файловой системы удаленного компьютера на хосте. Но эта настройка немного сложнее.
ConvexMartian
Дай rsyncпопробовать. Это здорово , как для локальных и удаленных копий, дает вам копировать прогресс и т.д. An пример
sakisk

Ответы:

384

Синтаксис для scp:

Если вы находитесь на компьютере, с которого хотите отправить файл на удаленный компьютер:

scp /file/to/send username@remote:/where/to/put

Здесь remoteможет быть полное доменное имя или IP-адрес.

С другой стороны, если вы находитесь на компьютере, который хочет получить файл с удаленного компьютера:

scp username@remote:/file/to/send /where/to/put

scp также может отправлять файлы между двумя удаленными хостами:

scp username@remote_1:/file/to/send username@remote_2:/where/to/put

Итак, основной синтаксис:

scp username@source:/location/to/file username@destination:/where/to/put

Вы можете прочитать, man scpчтобы получить больше идей по этому вопросу.

heemayl
источник
4
Что если я хочу скопировать несколько файлов? Я добавил пробел и просто использовал еще один /file/to/sendСпасибо за ваш удивительный ответ!
Камдиксон
6
scp -rбудет копировать рекурсивно.
Генри
Что я хочу, чтобы скопировать файлы из сети на мою виртуальную
машину
2
@heemayl +1 за хороший ответ. Мысль добавить, что в случае, если это безопасное соединение (которое требует аутентификации), вы можете использовать следующее (для копирования файла с локального на удаленный): scp -i mykey.pem somefile.txt root@remotehost.ip.address : / some / folder / in / remote
Гай Авраам
1
Используйте scp -P 123для указания пользовательского порта
aexl
14

Вы можете использовать rsyncв качестве альтернативы. Это в основном для синхронизации файлов .. но вы можете использовать его и для этой цели.

rsync -avzh --stats --progress remoteuser@remoteip  localpath 

добавить опции ssh:

rsync -e "ssh -P $port_value" remoteuser@remoteip  localpath

--progressи --statsполезны для отображения передачи в реальном времени.

беглец
источник
12
scp root@10.240.179.4:/root/Jmeter/reports.jtl Downloads/
user135545
источник
4
Мне нравится такой ответ.
xtluo
8
scp username@ipaddress:pathtofile localsystempath

scp sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .

Если вы используете с портом:

scp -Pportnumber username@ipaddress:pathtofile localsystempath 

scp -P2233 sadananad@ipaddress:/home/demo/public_html/myproject.tar.gz .
Садананд Кенганал
источник
Это скопирует файл в тот же удаленный каталог.
Макс Юдин
3

Если вы полностью доверяете всем в сети , и вы можете подключить порт машины назначения напрямую, вы можете использовать Netcat: nc.

Скажем, IP-адрес компьютера назначения 192.168.1.123

На месте назначения выполните:

nc -l -p 7777 0.0.0.0 | tar zxvf - -C dest_dir

Вы можете выбрать другой порт, а также привязать к другому IP вашего интерфейса, 0.0.0.0 просто перехватывает все интерфейсы.

На исходнике запустите:

tar zxcf - filename | nc 192.168.1.123 7777

ИМХО, это самый быстрый способ отправки файла с одного компьютера на другой с использованием цифровых сетей.

Аргументы и параметры командной строки могут незначительно отличаться между различными версиями ncи tar, но это определенно будет работать с последними дистрибутивами Linux.

онур гюнгёр
источник
2

В Linux, чтобы скопировать папку и ее содержимое из каталога пользователя (в данном примере root) в папку в локальном каталоге пользователя, я запускаю эту команду на локальном компьютере:

scp -r root@178.62.54.83: ~ / folderinremoteuserdir ~ / folderinlocaluserdir

Обратите внимание на ~ /, который я часто забываю ...

Маленький мозг
источник