Сжатый (по 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-dir
s запись в структуре вашей файловой системы. Чтобы суммировать размеры содержимого каталога, вы можете использовать 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, чтобы обеспечить правильную потоковую передачу и аудио-визуальную синхронизацию. В этом конкретном видео отсутствуют субтитры.
Короче говоря, не сжимайте случайные или сжатые данные.