2013-11-21 3 views
2

Мы используем SVN 1.7 на Solaris 10. Недавно мы представили сжатые, инкрементные резервные копии.Почему сжатый файл дампа Subversion больше оригинала?

$ svnadmin dump --quiet --incremental --revision 0:30700 /path/to/repo > /path/to/dump 
$ gzip -1 /path/to/dump 

Конечный файл сжат GZIP свалка больше (~ 850MB), чем исходный файл дампа (~ 500MB). Я также пробовал gzip -9, но он все еще создает более крупный файл, чем оригинал (~ 650 МБ).

+0

Ew, плохое редактирование делает gzipped дамп меньше, чем оригинал ... – crashmstr

+0

Я попытался исправить предыдущее редактирование, чтобы это снова стало понятным ... – crashmstr

+0

Хотя, как указано, это больше похоже на общий, вопрос без программирования (поскольку он касается сжатия и результирующего размера файла). Возможные ответы - [Почему файл с 7zip больше, чем необработанный файл?] (Http://superuser.com/questions/464315/why-is-a-7zipped-file-larger-than-the-raw-file), [Поиск Google] (https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=compressed%20file%20larger%20than%20original) – crashmstr

ответ

1

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

Возможно, вы сохраняете данные, которые уже сжаты с эффективным алгоритмом сжатия (например, 7z/LZMA).

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

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

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

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

Вы можете попытаться вызвать svnadmin с опцией --deltas, которая будет выводить только данные, отличающиеся в каждой ревизии, поэтому в основном исправления между ревизиями. Без --deltas он выдаст полные данные об измененных файлах.

Однако, если вы управляете уже сжатыми файлами в вашем репозитории, это не будет делать много (или любое) или разницу, поскольку сжатые данные также не могут быть правильно изменены. (Некоторые алгоритмы Модифицированных сжатий существует, как, например, исправленные версии GZIP с параметром --rsyncable или GZIP-совместимого pigz инструментом, который позволяет это с определенными ограничениями и за счет эффективности сжатия.)

Вы, вероятно, пытались сделать это с установленный вами флаг --incremental, но это означает что-то другое. Это имеет смысл только в том случае, если вы дамете диапазоны ревизий и только контролируете, если первая ревизия содержит полный дамп этой ревизии или только файлы, измененные в этой ревизии. Таким образом, это не будет иметь никакого эффекта, если вы дамп от версии 0 в любом случае.

Смежные вопросы