Я использую rsync для резервного копирования репозитория, который содержит много файлов gz, включая много новых, каждый день. Резервное копирование rsync выполняется медленнее, чем следовало бы, потому что эти файлы gz не создаются с помощью опции --rsyncable gzip (которая делает файлы gz гораздо более «дружественными к rsync» без значительного увеличения их размера или влияния на их совместимость). И я не могу решить проблему во время создания, потому что файлы генерируются скриптом python (rdiff-backup), который использует модуль gzip python, и это не поддерживает эквивалент grsip --rsyncable.
Поэтому перед запуском rsync я могу определить любые новые файлы gz в исходных данных (т.е. новые с момента последнего запуска rsync). Теперь я хочу повторно скопировать эти файлы, чтобы они были сжаты в формате rsyncable. Затем я могу запустить rsync из оптимизированного источника.
Я думаю, что это означает запуск каждого файла через gunzip и затем gzip --rsyncable, но я не слишком уверен, как сделать это так, чтобы не потерять данные или метаданные. Предложения с благодарностью приняты.
--rsyncable
должен иметь значение, - это если файлы меняются между запусками иrsync
пытается отправить изменения. Новые файлы не заботятся о том, являются ли они Rsyncable или нет, потомуrsync
что все равно должны отправлять все данные. Изменяются ли файлы между запусками rsync?--rsyncable
.-a
флаг. Кроме того, моя версия gzip не имеет--rsyncable
флага, но она поставляется с программой,znew
которая может быть использована для того, что вам нужно.--rsyncable
не поможет. Я надеялся на строку кода или короткий скрипт, который бы безопасно распаковывал архив gz и перепаковывал его, используя--rsyncable
. Но сейчас это просто академический вопрос для меня.Ответы:
источник
gunzip | gzip
, вы теряете несжатое имя и время, сохраненные в файле gz (и видимые вместе с нимgzip -vNl
)