Сжатый (по tar gzip) размер намного больше, чем исходная папка

Я взял резервную копию папки /var/www с tar команда (в том числе -z (GZIP)):

tar -cvzf file.gz /var/www/*

Я проверил размер www, Это около 100 КБ, но размер файла, созданного tar составляет около 185 МБ. Что может вызвать это?

3 ответа

Решение

ls -sh не учитывает подкаталоги.

я хотел бы использовать du -csh -- * рассчитать это (-- предотвращает проблемы с файлами, начинающимися с "тире"). Куда...

   -s, --summarize
      display only a total for each argument
  -h, --human-readable
      print sizes in human readable format (e.g., 1K 234M 2G)
   -c, --total
      produce a grand total

человек ду

Если у вас есть жесткие ссылки, хотя это испортит итоги.

Вы, вероятно, ошибаетесь по поводу того, насколько велик контент вашего исходного каталога. В случае каталогов, ls -l перечисляет размер самого каталога, а не файлов, содержащихся в этом каталоге. Так например

drwxr-xr-x 8 www-data www-data 4096 Sep  2 03:12 some-dir

показывает, что сам каталог занимает 4096 байт. Но это только размер some-dirs запись в структуре вашей файловой системы. Чтобы суммировать размеры содержимого каталога, вы можете использовать du ("использование диска"), например

du -s some-dir

Как с ls и кучу других команд, вы можете использовать переключатель h для "читабельных" единиц:

du -s some-dir
1804    some-dir

du -sh some-dir
1,8M    some-dir

На этот раз дело обстоит не так (см. Принятый ответ), но иногда дополнительные затраты на архивирование и сжатие могут привести к большему архиву, чем исходный контент.

Это верно, когда энтропия чрезвычайно высока, например, каталог, заполненный файлами случайного текста и / или медиа.

Пример 1: Случайные данные

$ 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 7 октября 16:52 test.bz2
-rw-r-r-- 1 adkatz adkatz 104875661 7 октября 16:49 test-fast.tar.gz
-rw-r -r-- 1 adkatz adkatz 104875661 7 октября 16:48 test.tar.gz
-rw-r -r-- 1 adkatz adkatz 104874474 7 октября 16:49 test-best.tar.gz
-rw-r -r-- 1 adkatz adkatz 104874206 7 октября 16:51 test.gz
-rw-r- r-- 1 adkatz adkatz 104867840 7 октября 16:48 test.tar
-rw-r -r-- 1 adkatz adkatz 104864052 7 октября 16:50 test.tar.xz
-rw-r- r-- 1 adkatz adkatz 104862868 7 октября 16:50 test.xz
-rw-r -r-- 1 adkatz adkatz 104857600 7 октября 16:47 тест

Это создало случайный файл размером 100 МБ, а затем заархивировало и сжало его несколькими различными способами. Результаты сортируются по размеру (сначала по величине). Как вы можете видеть, накладные расходы от тарбол-контейнеров и заголовков сжатия велики, и существует явное отсутствие шаблонов для сжатия.

Оригинальный случайный файл, что неудивительно, самый маленький здесь.

(Я использовал -ck и передал вывод команд сжатия, чтобы вы могли более четко увидеть, какой выходной файл он создал. Это было лишним.)

Пример 2: Видео + Аудио данные

$ youtube-dl -o test.mp4 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
[youtube] dQw4w9WgXcQ: загрузка веб-страницы
[youtube] dQw4w9WgXcQ: загрузка веб-страницы с информацией о видео
[youtube] dQw4w9WgXcQ: извлечение видеоинформации
[youtube] dQw4w9WgXcQ: загрузка js-плеера en_US-vflOj6Vz8
[скачать] Пункт назначения: test.mp4
[скачать] 100% от 56,64МБ в 00:07
$ gzip --best -ck test.mp4 >test.mp4.gz
$ xz --fast -ck test.mp4 >test.mp4.xz
$ ls -lS test.mp4*
-rw-r -r-- 1 adkatz adkatz  59388616 7 октября 16:52 test.mp4
-rw-r -r-- 1 adkatz adkatz  59332683 7 октября 16:52 test.mp4.gz
-rw-r -r-- 1 adkatz adkatz  59320572 7 октября 16:52 test.mp4.xz

Я повторил тесты gzip и xz для этого тестового видео. Было достаточно метаданных, чтобы сжать их только сжатием ( xz может сэкономить 68 тыс., Колоссальные 0,1%!). Я подозреваю, что это связано с репликами.mp4, чтобы обеспечить правильную потоковую передачу и аудио-визуальную синхронизацию. В этом конкретном видео отсутствуют субтитры.

Короче говоря, не сжимайте случайные или сжатые данные.

Другие вопросы по тегам