Назад | Перейти на главную страницу

rsync в сжатый архив файла

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

Т.е. если исходные файлы в прямом эфире фу, бар и баз, в резервной копии есть foo.gz, bar.gz и baz.gz.

Повторюсь: мне нужны сжатые файлы на одном конце и несжатые файлы на другом. Я не хочу сжимать перед rsync, потому что даже с --rsyncable это делает rsync менее эффективным. Я знаю о параметре -z для rsync. У меня нет места на резервной машине для хранения всех файлов без сжатия.

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

gzip(1)

--rsyncable
       While compressing, synchronize the output occasionally based on
       the  input.   This  increases  size by less than 1 percent most
       cases, but means that the rsync(1) program can much more  effi‐
       ciently  synchronize  files  compressed with this flag.  gunzip
       cannot tell the difference between a  compressed  file  created
       with this option, and one created without it.

Я думаю, что rsyncing с файловой системой, смонтированной на fuseCompress, может быть лучшим вариантом. В истории проекта особо упоминается, что с его помощью они улучшали производительность rsync.

http://code.google.com/p/fusecompress/

https://github.com/tex/fusecompress/

Вы можете написать оболочку для rsync. Если «тянуть» данные, делать особо нечего. Если вы хотите «протолкнуть» данные с исходных машин на сервер резервного копирования, более деликатно заставить их работать:

Сначала вы должны убедиться, что оболочка вызывается с тем же именем, путем и параметрами, что и исходный rsync, по крайней мере, для пользователя, под которым вы запускаете резервное копирование.

Во-вторых, убедитесь, что ничего не пишете в stdout, потому что это нарушит канал связи.

И в-третьих, не забудьте передать все параметры, которые вы получаете, просто изменив их в соответствии с новым несжатым местом назначения.

Вероятно, он ищет сжатие передачи данных через rsync, а не сжатие файлов на другом конце.

Проверять, выписываться: http://jimmyg.org/blog/2007/rsync-basics.html

Параметры сжатия из справочной страницы:

   -z, --compress              compress file data during the transfer

        --compress-level=NUM    explicitly set compression level

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