Как сжать каталог, передать по scp и распаковать в одну команду?


11

Я часто пересылаю большие каталоги, scpи было бы здорово, если бы я мог каким-то образом сжать каталог, отправить его и разархивировать все в одном.

Возможно ли что-то подобное?

Ответы:


29

Как насчет использования rsyncвместо этого с -zвключенной опцией для сжатия?

rsync -az --progress source_dir/* remote_host:/destination_dir

Это также имеет дополнительное преимущество: если файл уже существует и не изменился в месте назначения, он не будет передан.


7

Благодаря ответу @ johnshen64, я смог придумать что-то очень хорошее

tar -zc path/to/source | ssh user@remote tar -zxC path/to/destination

К сожалению, это не показывает прогресс при передаче. Я заметил невероятные улучшения скорости при использовании этого метода.

Если кто-нибудь знает, как показать прогресс для такого перевода, я очень признателен за помощь :)


1
Вставьте pvмежду tar и ssh .
user1686

Это здорово, если у вас нет rsync
Саймон Хартчер,

2

ну, я бы использовал смолу вместо

tar cf - каталог | ssh сервер 'tar xf -'

Вы можете добавить v, чтобы проверить.

zip должен быть таким же, но, на мой взгляд, tar более устойчив для linux.


+1 спасибо за вашу помощь; это дало мне половину пути туда. Мне удалось найти решение, которое не использует загадочный -символ, а также использует сжатие gzip и позволяет нацеливать каталог назначения.
Мацек

@macek: обратите внимание, что это f -может потребоваться в других операционных системах, так как большинство версий tar в противном случае будут пытаться читать с ленточного накопителя. Чтение из stdin по умолчанию зависит от GNU.
user1686
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.