Оценка размера сжатого файла с помощью параметра списка

В настоящее время я сжимаю список файлов из каталога в следующем формате:

tar -cvjf test_1.tar.gz -T test_1.lst --no-recursion

Приведенная выше команда сжимает только те файлы, которые указаны в списке. Я делаю это, потому что этот список создан так, что он соответствует DVD. Однако во время сжатия степень сжатия уменьшает предполагаемый размер файла, и на DVD остается много свободного места. Это что-то вроде алгоритма ранца.

Я хотел бы оценить размер сжатого файла и добавить еще несколько файлов в список. Я обнаружил, что можно оценить размер файла, используя следующую команду:

tar  -cjf - Folder/ | wc -c

Эта команда не принимает параметр списка. Есть ли способ оценить размер сжатого файла? Я также ищу варианты, такие как сценарии Perl и т. Д.

1
задан 24 October 2016 в 16:48

1 ответ

Сжатие будет сильно зависеть от повторения сжимаемого текста. Если ваши файлы представляют собой простой текст и все очень похожи, то вы получите отличное сжатие, если они отличаются, сжатие начнет страдать. И если они уже сжаты (т.е. JPG, MP3 и т. Д.), То сжатие будет еще меньше.

Как вы и предполагали, с помощью алгоритма «ранца» с достаточным временем и ресурсами ЦП, должна быть возможность попробовать все комбинации файлов в одном сжатом tar-файле. К сожалению, это может занять слишком много времени.

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

Единственным недостатком является то, что оценка потерпит неудачу и создаст меньший конечный файл tar.bz2, если файлы похожи, и алгоритм сжатия может использовать сходство в своих интересах.

0
ответ дан 24 October 2016 в 16:48

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

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