Питання Як скопіювати папку з віддаленого до локального? [ЗАЧИНЕНО]


Я не впевнений, чи можна це зробити scp папка з віддаленого до локального, але все одно мені не залишається інших варіантів. Я використовую ssh для входу на мій сервер, і звідти я хотів би скопіювати папку foo до home/user/Desktop (мій місцевий) Чи є якась команда, щоб я міг це зробити?


1931
2017-07-03 05:17


походження


@ 3bdalla Це питання, безумовно, стосується теми для переповнення стека, що включає в себе питання про "програмних інструментах, які зазвичай використовуються програмістами". - Abhi Beckert
Питання OP полягало в тому, чи можна копіювати файл з віддаленого до локального хоста поки ssh'd до віддаленого хосту. Я не знаю, чому жодна відповідь не правильно вирішила його питання. - JeffDror
Стічні переповнення - це сайт для програмного забезпечення та питань розробки. Це питання, здається, не пов'язаний з темою, оскільки мова йде не про програмування чи розробку. Побачити Які теми можна запитати тут у довідковому центрі. Можливо Супер Користувач або Unix і Linux Stack Exchange було б краще запитати. Також див Де я розміщую питання про Dev Ops? - jww
Будь ласка, дивіться meta.stackoverflow.com/questions/294217/.... Питання залишаються тут, ви також можете проголосувати. Це просто не дозволяє більше відповідей. - Andre Figueiredo
Я вирішив це питання, протестуючи проти цього питання! - gota


Відповіді:


scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

Від man scp

-r Recursively copy entire directories

3706
2017-07-03 05:21



use -p, щоб зберегти час зміни файлів, дозволи тощо! scp -pr користувач @ ... - Ber
Ця відповідь не має важливих пояснень. Ви в кінцевому підсумку Desktop/foo або ти будеш Desktop/allcontentsofFooGohere СКП, здається, діє дивно, іноді мені це робить одне, то інше - Toskan
наприклад, це (зазвичай використовується в сценаріях оболонки): su myuser -c "scp -r /var/www/myapp.org/uploads root@$jcrdevip:/var/www/mydevapp.com/uploads" буде копіювати вміст від завантаження до завантаження. scp -r /var/www/myapp.org/uploads root@$jcrdevip:/var/www/mydevapp.com/uploads Схоже, копіює завантажувану папку в mydevapp.com/uploads створення папки небажаної підтеки - Toskan
@jww Як ви можете бачити, що для цієї відповіді є більше 3 тисяч запрошень. Може бути, це питання з відповідями дійсно потрібні людям? - Mikhail Morgunov
Станом на 20180724 рр. Це запитання та відповідь - це два основних звернення для запиту: 'scp copy the dir', схоже, соромно це тема для розробників - я впевнений, що ніякі Unix-розробники ніколи не хотіли робити щось подібне: ) - decuser


Використовувати повну потужність СКП вам потрібно пройти наступні кроки:

  1. Авторизація відкритого ключа
  2. Створіть псевдоніми ssh

Тоді, наприклад, якщо у вас є це ~ / .ssh / config:

Host test
    User testuser
    HostName test-site.com
    Port 22022

Host prod
    User produser
    HostName production-site.com
    Port 22022

ви врятуєте себе від введення пароля та спростіть СКП синтаксис подібний до цього:

scp -r prod:/path/foo /home/user/Desktop   # copy to local
scp -r prod:/path/foo test:/tmp            # copy from remote prod to remote test

Більше того, ви зможете використовувати віддалений шлях завершення:

scp test:/var/log/  # press tab twice
Display all 151 possibilities? (y or n)

Оновлення:

Для того, щоб забезпечити віддалене завершення баш, потрібно мати баш-оболонку обох <source> і <target> хостів, а також належним чином працювати над завершенням. Для отримання додаткової інформації див. Відповідні питання:

Як включити автозавершення для віддалених шляхів при використанні scp?
Завершення вкладки імені файлу SCP


236
2017-12-04 06:21



Не знав про конфігураційний файл, це чудово! - dmastylo
Завершення вкладки - це дурниця, просто завершується для мене з локального хоста. - Bernhard
@ b.long Питання полягає в тому, "Як скопіювати віддалену папку foo на локальний робочий стіл". Моя відповідь є "scp -r prod: / path / foo / home / user / Desktop". Сподіваюся, ви зможете побачити відносини. - Alexander Yancharuk
@Бернхард Для мене це було очевидно, тому що я використовую bash-оболонку. Дякую, що вказали на це! Відповідь оновлено. - Alexander Yancharuk
@ Александер Янчарук: Дякую за відповідь, це більш детально, ніж просто висвітлення синтаксису. - Gladiator


Щоб скопіювати все з Місцевий розташування до Віддалене місцезнаходження (Завантажити)

scp -r /path/from/destination username@hostname:/path/to/destination

Щоб скопіювати все з Віддалене місцезнаходження до Місцевий розташування (Завантажити)

scp -r username@hostname:/path/from/destination /path/to/destination

Custom Port, де xxxx є користувацький порт номер

 scp -r -P xxxx username@hostname:/path/from/destination /path/to/destination

Скопіювати в поточний каталог з Віддалений до локального

scp -r username@hostname:/path/from/file .

Довідка: 

  1. -r Рекурсивно копіює всі каталоги та файли
  2. Завжди використовуйте повне місцезнаходження від /, Отримати повне місцезнаходження по pwd
  3. scp замінить всі існуючі файли
  4. hostname буде ім'я хоста або IP-адреса
  5. якщо потрібний користувацький порт (крім порту 22) -P portnumber
  6. . (крапка) - це означає поточний робочий каталог, тому завантажувати / копіювати з сервера і вставляти сюди тільки.

Примітка: Іноді користувацький порт не буде працювати через те, що порт не буде дозволено в брандмауері, тому переконайтеся, що для брандмауера для вхідного та вихідного з'єднання доступний спеціальний порт.


118
2018-05-23 09:38



Схоже (принаймні в останніх версіях Raspbian Jessie та Ubuntu), що scp використовує -P (верхній регістр P) для порту, тоді як (незвичайно) ssh використовує -p (нижній регістр). - Adam Plocher
@AdamPlocher, Ви правильні, але приблизно я завжди використовую -p (маленький) :) - Shiv Singh
-p зарезервовано для збереження "часу модифікації, часу доступу та режимів з вихідного файлу". Отже, якщо ви використовуєте це для порту, воно, ймовірно, не працює ;-) Якщо у вас немає іншої версії, яка використовувала нижній регістр p по-різному. - Adam Plocher
З SSH, так. Не з SCP (я припускаю). - Adam Plocher
Що слід поставити, якщо в каталозі міститься пробіл? - hyprfrcb


Те, що я завжди користуюся, це:

scp -r username@IP:/path/to/server/source/folder/  .

. (крапка) : це означає current folder. тому скопіюйте з сервера і вставте тут тільки.

IP : може бути IP-адреса, як 125.55.41.311 або це може бути хостом, як ns1.mysite.com.


39
2018-06-10 07:41



Дякую, що вказали . відноситься до поточного каталогу! - ericmjl


Краще спершу згорнути каталог на віддаленому сервері:

tar czfP backup.tar.gz /path/to/catalog

По-друге, завантажувати з пульта:

scp user@your.server.example.com:/path/to/backup.tar.gz .

В кінці, витягніть файли:

tar -xzvf backup.tar.gz

25
2018-05-29 11:12



"Краще" сильно залежить від даних, які ви передаєте, і зусиль, які потрібно зробити для сервера ssh, щоб робити архівування / розпакування. І: ви можете додати стиснення до scp з -C прапор, як scp -C a@b:bigfile .. - Automatico
Це нагадує мені коментар, зроблений @ cptloop! : D xkcd.com/1168 - GoodSp33d


І якщо у вас є один пекло файлів для завантаження з віддаленого розташування, і якщо ви не дуже дбаєте про безпеку, спробуйте змінити стандартне шифрування scp (Triple-DES) на щось на кшталт "blowfish".

Це суттєво зменшить час копіювання файлів.

scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/

20
2018-06-17 06:02



Відповідно до це повідомлення в блозі Ви отримуєте ще кращу продуктивність arcfour замість blowfish, але має дефекти безпеки. - Automatico


Перейдіть до Файли на панелі інструментів вашої спільності

enter image description here

Натисніть Ctrl + l і напишіть here_goes_your_user_name @ 192.168.10.123

192.168.1.103 - це хост, який ви хочете підключити.

Ось один приклад

enter image description here


15
2017-11-09 21:05





Типовий сценарій

scp -r -P port username@ip:/path-to-folder  .

пояснюється зразком

scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .

де

port = 27000
username = "abc" , remote server username
path-to-folder = tmp/hotel_dump
. = current local directory

14
2017-07-06 07:21





Питання в тому, як скопіювати папку з віддаленого до локального з scp команда

$ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir

Але ось кращий спосіб це зробити sftp - Протокол передачі файлів SSH (також Secure File Transfer Protocol або SFTP) - це мережевий протокол, який забезпечує доступ до файлів, передачу файлів та керування файлами через будь-який надійний потік даних (wikipedia).

$ sftp user_remote@remote_ip

sftp> cd /path/to/remoteDir 

sftp> get -r remoteDir

Fetching /path/to/remoteDir to localDir 100% 398 0.4KB/s 00:00

Про допомогу sftp команда просто введіть help або ?.


8
2017-08-15 05:47





У випадку, якщо ти впадеш "Надто багато помилок аутентифікації", вкажіть точний SSH-ключ, який ви додали до свого сервера svers:

scp -r -i /path/to/local/key user@remote.tld:/path/to/folder /your/local/target/dir

8
2017-09-26 21:54