Команда Gzip для создания точно того же самого вывода, чем tar-cvzf?

Смотрите здесь: https://wiki.ubuntu.com/DashAsBinSh, возможно, Это поможет.

2
задан 27 November 2012 в 20:51
1 ответ

Разница в выходных файлах, вероятно, НЕ связана с методом сжатия. По умолчанию GNU tar использует стандартный режим GZIP deflate . Одна из причин разницы заключается в формате файла, сжатого GZIP.

Структура первых 8 байтов заголовка GZIP следующая

      OFFSET  SIZE  VALUE    COMMENT
        0       1    0x1F    First "magic" id
        1       1    0x8B    Second "magic" id
        2       1    CM      Compression method
        3       1    FLAGS   8-bit flag register
        4       4    MTIME   Object modification time

Проблема связана с полем MTIME . Для данных, поступающих из канала, это значение текущего времени Unix (секунды с 1 января 1970 г.). Поэтому два идентичных сжатых архива, созданных с интервалом не менее одной секунды, будут отличаться друг от друга.

Попробуйте выполнить tar -cvzf дважды для одних и тех же данных и сравните результаты. Результаты будут отличаться пятым байтом, младшим байтом значения временной метки.

$ tar czvf test1.tgz tmp/ ; sleep 2 ; \
  tar czvf test2.tgz tmp/ ; md5sum test1.tgz test2.tgz
tmp/
tmp/test
tmp/
tmp/test
23d46f62dd4a9a0851279df7fe15842e  test1.tgz
c8ae65026a5f771c63acf87a18f7379c  test2.tgz
5
ответ дан 3 December 2019 в 09:39

Теги

Похожие вопросы