Як скопіювати файл з віддаленого сервера на локальну машину?


238

У своїй термінальній оболонці я ssh'ed на віддалений сервер, і я cdв потрібний каталог.

Зараз у цьому каталозі є файл під назвою, tableякий я хочу скопіювати на свою локальну машину /home/me/Desktop.

Як я можу це зробити?

Я спробував, scp table /home/me/Desktopале це дало помилку щодо відсутності такого файлу чи каталогу.

Хтось знає, як це зробити?


Якщо ви часто копіюєте за допомогою scp, ви можете змонтувати віддалений каталог у вашому файловому браузері та перетягувати його. На моєму хості Ubuntu 15 він знаходиться під рядком меню "Перейти"> "Введіть місцеположення"> debian@10.42.4.66:/home/debian. Крім того, можна sshfsвстановити файлову систему віддаленої машини на хості. Але це налаштування трохи більше задіяне.
ConvexMartian

Дайте rsyncспробувати. Це здорово , як для локальних і віддалених копій, дає вам копіювати прогрес і т.д. An приклад
sakisk

Відповіді:


380

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

Якщо ви перебуваєте на комп’ютері, з якого потрібно надіслати файл на віддалений комп'ютер:

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

Тут remoteможе бути FQDN або 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щоб отримати більше ідей щодо цього.


4
Що робити, якщо я хочу скопіювати кілька файлів? Я додав пробіл і просто використав ще одне /file/to/sendспасибі за вашу приголомшливу відповідь!
camdixon

6
scp -rкопіюватиметься рекурсивно.
Генрі

Що я хочу скопіювати файли з мережі на мій VM ... як досягти того ж за допомогою scp
Sushivam

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/

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

IMHO, це найшвидший спосіб переслати файл з одного комп'ютера на інший за допомогою цифрових мереж.

Аргументи та параметри командного рядка можуть дещо змінюватися між різними версіями ncта tar, але, безумовно, це працюватиме з останніми дистрибутивами Linux.


2

У Linux, щоб скопіювати папку та її вміст із каталогу користувача (корінь у цьому прикладі), у папку в локальному каталозі користувачів, я запускаю цю команду на локальній машині:

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

Зверніть увагу на ~ /, який я, здається, часто забуваю ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.