Як скопіювати папку з віддаленого на локальний хост за допомогою 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 Рекурсивно копіюйте всі каталоги та файли/, Отримайте повне місцезнаходження за адресоюpwdscp замінить усі існуючі файли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@