На этот раз это не так (см. принятый ответ), но иногда дополнительные накладные расходы на архивирование и сжатие могут привести к большему архиву, чем исходный контент.
Это верно, когда есть чрезвычайно (! d2)
$ dd if=/dev/urandom of=test bs=1M count=100 $ tar -zcf test.tgz test $ tar -cf test.tar test $ gzip -ck --best test.tar > test-best.tar.gz $ gzip -ck --fast test.tar > test-fast.tar.gz $ xz -ck --fast test.tar >test.tar.xz $ xz --fast -ck test >test.xz $ gzip --best -ck test >test.gz $ bzip2 --best -ck test >test.bz2 $ ls -lS test* -rw-r--r-- 1 adkatz adkatz 105326395 Oct 7 16:52 test.bz2 -rw-r--r-- 1 adkatz adkatz 104875661 Oct 7 16:49 test-fast.tar.gz -rw-r--r-- 1 adkatz adkatz 104875661 Oct 7 16:48 test.tar.gz -rw-r--r-- 1 adkatz adkatz 104874474 Oct 7 16:49 test-best.tar.gz -rw-r--r-- 1 adkatz adkatz 104874206 Oct 7 16:51 test.gz -rw-r--r-- 1 adkatz adkatz 104867840 Oct 7 16:48 test.tar -rw-r--r-- 1 adkatz adkatz 104864052 Oct 7 16:50 test.tar.xz -rw-r--r-- 1 adkatz adkatz 104862868 Oct 7 16:50 test.xz -rw-r--r-- 1 adkatz adkatz 104857600 Oct 7 16:47 test
Это создало случайный файл 100M, а затем архивировался и сжал его несколькими способами. Результаты сортируются по размеру (сначала самые большие). Как вы можете видеть, накладные расходы из контейнеров tarball и заголовков сжатия велики, и существует значительное отсутствие шаблонов для сжатия.
Исходный случайный файл неудивительно наименьший здесь.
(Я использовал -ck и передал выходные данные команд сжатия, чтобы вы могли более четко видеть, какой выходной файл он создал. Это было излишним.)
[ f2]
Я повторил тесты gzip и xz для этого тестового видео. Было достаточно метаданных, чтобы просто сжать сжатие ( принятый ответ может спасти 68k, колоссальные 0,1%!). Я подозреваю, что это связано с репликами .mp4, чтобы обеспечить правильную поточную и аудиовизуальную синхронизацию. В этом конкретном видео отсутствует субтитры.
Короче говоря, не сжимайте случайные или сжатые данные.