Як скопіювати папку з віддаленого на локальний хост за допомогою scp
?
Я використовую ssh
для входу на свій сервер.
Потім я хотів би скопіювати віддалену папку foo
в локальну /home/user/Desktop
.
Як я цього досягти?
Як скопіювати папку з віддаленого на локальний хост за допомогою scp
?
Я використовую ssh
для входу на свій сервер.
Потім я хотів би скопіювати віддалену папку foo
в локальну /home/user/Desktop
.
Як я цього досягти?
Відповіді:
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
Не включаючи трейлінг '/' в кінці foo, ви будете переміщувати сам каталог (включаючи вміст), а не лише вміст каталогу.
Від man scp
(Див. Онлайн-інструкцію )
-r Рекурсивно копіювати цілі каталоги
-C
прапор додає стиснення, і -c
прапор дозволяє переходити в інші типи шифрів для кращої продуктивності, як, наприклад scp -c blowfish a@b:something .
, у відповіді dimuthu
Desktop/foo
чи будете мати, як Desktop/allcontentsofFooGohere
здається, scp здається дивним, іноді для мене це робить одне, а інше
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
вами повинен закінчитися Desktop/foo
. З scp -r user@your.server.example.com:/path/to/foo/. /home/user/Desktop/
вами ви закінчите вміст foo
у Desktop
та всіх підручниках, foo
виведених підDesktop
Щоб використовувати повну потужність scp , потрібно пройти наступні кроки:
Тоді, наприклад, якщо у вас є цей ~ / .ssh / config :
Host test
User testuser
HostName test-site.com
Port 22022
Host prod
User produser
HostName production-site.com
Port 22022
ви вбережете себе від введення пароля та спростите синтаксис scp таким чином:
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)
Оновлення:
Щоб увімкнути віддалене завершення bash, вам потрібно мати bash-shell <source>
і на <target>
хості, і на хостах, і правильно працювати з bash-завершенням. Для отримання додаткової інформації див відповідні питання:
Як включити автодоповнення для віддалених шляхів при використанні scp?
Завершення вкладки імені файлу SCP
Щоб скопіювати все з локального місцезнаходження у віддалене місцезнаходження (Завантажити)
scp -r /path/from/destination username@hostname:/path/to/destination
Щоб скопіювати все з віддаленого місця на локальне місцезнаходження (завантажити)
scp -r username@hostname:/path/from/destination /path/to/destination
Спеціальний порт, де xxxx
є спеціальний номер порту
scp -r -P xxxx username@hostname:/path/from/destination /path/to/destination
Скопіюйте в поточний каталог з віддаленого в локальний
scp -r username@hostname:/path/from/file .
Довідка:
-r
Рекурсивно копіюйте всі каталоги та файли/
, Отримайте повне місцезнаходження за адресоюpwd
scp
замінить усі існуючі файлиhostname
буде ім'ям хоста або IP-адресою-P portnumber
Примітка. Іноді користувацький порт не працюватиме через те, що порт не допускається в брандмауері, тому переконайтеся, що користувальницький порт дозволений у брандмауері для вхідного та вихідного з'єднання.
pwd
щоб знайти місце та використовувати те саме
Я завжди використовую:
scp -r username@IP:/path/to/server/source/folder/ .
. (крапка) : значить current folder
. тому скопіюйте з сервера і вставте лише сюди.
IP : може бути як IP-адреса, так 125.55.41.311
і хост ns1.mysite.com
.
.
стосується поточного каталогу!
Краще спершу стиснути каталог на віддаленому сервері:
tar czfP backup.tar.gz /path/to/catalog
По-друге, скачайте з віддаленого:
scp user@your.server.example.com:/path/to/backup.tar.gz .
В кінці витягніть файли:
tar -xzvf backup.tar.gz
-C
прапором, як scp -C a@b:bigfile .
.
І якщо у вас є пекельні файли для завантаження з віддаленого місця, і якщо ви не дуже дбаєте про безпеку, спробуйте змінити шифрування за замовчуванням scp (Triple-DES) на щось на кшталт "blowfish".
Це значно скоротить час копіювання файлів.
scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
arcfour
замість цього blowfish
, але він має вади безпеки.
Типовий сценарій,
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
Питання полягало в тому, як скопіювати папку з віддаленої в локальну за допомогою scp
команди.
$ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir
Але ось кращий спосіб зробити це за допомогою sftp
- протокол передачі файлів SSH (також протокол безпечної передачі файлів або 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
або ?
.
Не знаю чому, але мені довелося використовувати локальну папку перед директивою вихідного сервера. щоб змусити його працювати
scp -r . root@888.888.888.888:/usr/share/nginx/www/example.org/
root@