Завантажте відразу багато файлів через SSH


1

Я хочу завантажити папку з сервера, що містить кілька тисяч файлів за допомогою ssh. Я використовую Ubuntu, і у мене немає дозволу на запис на сервері, тому я не в змозі створити .tar на сервері та скопіювати його згодом. Але завантаження всіх файлів окремо відбувається дуже повільно.

Тож як я можу завантажити цю папку з такою кількістю файлів як один архів за допомогою командного рядка?

Відповіді:


2

Ви можете зробити щось подібне:

ssh username@hostname 'tar -cf - /dir/to/download' | gzip > remote_files.tgz

Це запустить tar на віддаленому сервері, але замість запису у файл він виведе на stdout. Це буде повернуто через SSH на вашу локальну машину, gzipped і потім записане у файл.


Якби у мене було достатньо репутації для голосування, я б точно став;)
Патрік Вайс

1
Можливо, краще вписати на сервер команду gzip, щоб зберегти використання пропускної здатності.
Яап Старійшина

Погоджуйтеся з Яапом. ssh username@hostname 'tar -cf - /dir/to/download | gzip -9c' > remote_files.tgzВи можете зберегти велику пропускну здатність, якщо Ви копіюєте текстові файли або що-небудь легко стиснене.
Болверк

2

Безпечна копія "scp" встановлюється за допомогою OpenSSH. Отже, це має зробити трюк ...

scp -r username@yourserver.com:/path/to/remote/files /path/to/local/files

-r Рекурсивно копіювати цілі каталоги.

man scp для отримання детальної інформації.


Якби у мене було достатньо репутації для голосування, я б точно став;)
Патрік Вайс

1

Обидві попередні відповіді спрацюють, але я здивований, що ніхто не згадав rsync, як у:

rsync -az username@yourserver.com:/path/to/remote/files/ /path/to/local/files/

Бонусні бали полягають у тому, що якщо з'єднання буде перервано, ви можете перезапустити, і він з’ясує, що потрібно скопіювати.

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