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

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

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

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

4
задан 7 October 2016 в 07:56

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

человек du

, Если у Вас есть hardlinks, хотя он испортит общие количества.

17
ответ дан 23 November 2019 в 11:35

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

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

шоу Вы, что сам каталог берет 4 096 байтов. Но это - только размер some-dir запись с в Вашей структуре файловой системы. Для подведения размеров содержания каталога можно использовать du ("использование диска"), например

du -s some-dir

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

du -s some-dir
1804    some-dir

du -sh some-dir
1,8M    some-dir
4
ответ дан 23 November 2019 в 11:35

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

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

Пример 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 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 и переданный по каналу вывод сжатия управляет, таким образом, можно более ясно видеть, какой выходной файл это создало. Это было лишним.)

Пример 2: данные Video+Audio

$ youtube-dl -o test.mp4 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
[youtube] dQw4w9WgXcQ: Downloading webpage
[youtube] dQw4w9WgXcQ: Downloading video info webpage
[youtube] dQw4w9WgXcQ: Extracting video information
[youtube] dQw4w9WgXcQ: Downloading js player en_US-vflOj6Vz8
[download] Destination: test.mp4
[download] 100% of 56.64MiB in 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 Oct  7 16:52 test.mp4
-rw-r--r-- 1 adkatz adkatz  59332683 Oct  7 16:52 test.mp4.gz
-rw-r--r-- 1 adkatz adkatz  59320572 Oct  7 16:52 test.mp4.xz

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

 

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

1
ответ дан 23 November 2019 в 11:35

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

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