Gzip, переданный в Rsync

Gzip, переданный в Rsync

Я хочу сделать что-то вроде gzip файла, а затем немедленно rsync его на другой сервер, чтобы созданный gzip файл не был записан на локальном сервере. Я думал сделать что-то вроде этого... но, очевидно, это не сработает.

gzip-файл | rsync -auv другой_сервер

У кого-нибудь есть идеи по этому поводу? Или это вообще возможно?

решение1

Я обычно использую gzip и ssh следующим образом:

gzip -c файл | ssh[email protected]"cat > destination.gz"

Это отправит zip-вывод через ssh прямо в файл "destination.gz" на удаленном хосте. Если вы делаете это вручную, просто введите свой пароль ssh; если вы хотите сделать это автоматически, вам нужно будет настроить ключи ssh, примерно так:

http://pkeck.myweb.uga.edu/ssh/

решение2

Не принимайте это на свой счет, но из вашего вопроса и комментариев следует, что вы на самом деле не понимаете, что такое rsync.для. Он не предназначен для перемещения файлов из одного места в другое, а длясинхронизацияфайлы между двумя местами. Если вы не хотите сохранять копию на локальной машине, то вы не синхронизируетесь, и rsync — не тот инструмент, который вам нужен.

Вы пытаетесь передать файл. Для этого вы можете записать его на диск и использовать ssh, ftp, sftp, ftps и т. д., или вы можете передать его через ssh, как предложил Гленн, что является правильным ответом и единственным правильным способом сделать то, что вы хотите. Если вы беспокоитесь об использовании ресурсов (а для высокоскоростных соединений это может иметь значение), то измените шифры:

gzip -c somefile | ssh -c blowfish user@host 'cat > someotherfile'

Если вы пытаетесь что-то сделать (например, pipe to rsync), и это не работает, возможно, вы делаете это неправильно, или, возможно, вы пытаетесь сделать что-то неправильно. Это вопрос инструмента для работы, и важно не исключать, что что бы вы ни пытались сделать, для этого есть подходящий инструмент.

Понимание и сохранение в памяти назначения различных инструментов, доступных в среде UNIX, позволит вам использовать и манипулировать этой средой более эффективно. Многие инструменты имеют тонкие различия или пересекаются в функциональности, но если вы не обратите внимание на них все, вы упустите множество лучших способов выполнения задач.

решение3

В этом случае Rsync, скорее всего, не даст никаких преимуществ, поскольку отправляемый им контент будет уникальным.

Сжатие файла и отправка вывода в STDOUT достаточно просты:

gzip -c file > another-file

Если вам нужна скорость и контроль над обоими концами, то netcat практически не имеет накладных расходов.

Настройте целевой компьютер на прослушивание порта 1234.

user@bar$ nc -l -p 1234 > file.gz

Отправить, 'file.gz', на машину bar:1234

user@foo$ gzip -c file | nc bar 1234

решение4

Сочетание gzip и rsync не работает.

Если вы отправляете несжатый файл, то rsync работает, отправляя только измененные биты. Но когда вы сжимаете файл gzip, конечный файл каждый раз будет существенно отличаться. Передача его в rsync в лучшем случае даст результат, аналогичный ssh, а может быть даже хуже.

Причина, по которой сжатый файл каждый раз отличается, заключается в том, что он профилирует данные перед сжатием. Это означает, что даже небольшое изменение в файле может означать изменение в профиле, затрагивая каждый сжатый байт.

Связанный контент