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

11

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

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

Мацек
источник

Ответы:

29

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

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

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

AaronM
источник
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.

johnshen64
источник
+1 спасибо за вашу помощь; это дало мне половину пути туда. Мне удалось найти решение, которое не использует загадочный -символ, а также использует сжатие gzip и позволяет нацеливать каталог назначения.
Мацек
@macek: обратите внимание, что это f -может потребоваться в других операционных системах, так как большинство версий tar в противном случае будут пытаться читать с ленточного накопителя. Чтение из stdin по умолчанию зависит от GNU.
user1686