Я хочу выполнить серию повторных сжатий сжатых файлов, чтобы изучить их свойства.
Сначала я попытался просто сжать файлы .zip в цикле:
for f in $(seq 1 100)
do
zip $f.zip -9 -v $(($f-1)).zip
done
Начиная с фиксированного файла 0.zip , я заметил, что, если я перезапущу эти строки, все файлы, кроме первых нескольких, будут иметь разные размеры. После некоторого исследования я понял, что это было вызвано метками времени сжатых файлов. Затем я сбрасываю метки времени перед повторным сжатием:
for f in $(seq 1 100)
do
touch $(($f-1)).zip -t 200101010101
zip $f.zip -9 -v $(($f-1)).zip
done
И на этот раз я получил детерминированные результаты для сжатия с использованием zip . Однако использование tar с алгоритмом gzip прежнему не работает. Каждый раз, когда я бегу:
for f in $(seq 1 100)
do
touch $(($f-1)).tar.gz -t 200101010101
tar cvfz $f.tar.gz $(($f-1)).tar.gz
done
Я получаю файлы разных размеров, от 4.tar.gz до 100.tar.gz
Почему это происходит, и что я могу сделать, чтобы предотвратить это?
