Почти все современные архиваторы делают именно это, единственное отличие состоит в том, что они называют это «сплошным» архивом, поскольку все файлы объединяются в один поток перед подачей в алгоритм сжатия. Это отличается от стандартного сжатия zip, который сжимает каждый файл один за другим и добавляет каждый сжатый файл в архив.
7-zip по своей природе эффективно устраняет дублирование. Например, 7-Zip будет искать файлы, сортировать их по типам файлов и именам файлов, и поэтому два файла одного типа и данных будут размещены рядом в потоке, идущем к алгоритмам компрессора. Затем компрессор увидит много данных, которые он видел совсем недавно, и эти два файла увидят значительное увеличение эффективности сжатия по сравнению со сжатием файлов один за другим.
Linux долгое время сталкивался с подобным поведением благодаря преобладанию их формата ".tgz" (или ".tar.gz", чтобы использовать его полную форму), поскольку tar просто объединяет все файлы в один поток (хотя и без сортировка и группировка файлов), а затем сжатие с помощью gzip. Чего не хватает, так это сортировки, выполняемой 7-zip, которая может немного снизить эффективность, но все же намного лучше, чем просто объединение большого количества отдельно сжатых файлов вместе, как это делает zip.
.tar.gz
сжимает только относительно небольшие блоки (например, 900 КБ) за один раз полностью независимо друг от друга и, таким образом, не способен дедуплицировать два больших, но одинаковых файла (например, пару изображений размером 4 МБ)?Нет смысла использовать дедупликацию в процессе сжатия. Большинство алгоритмов сжатия создают так называемый «словарь», который будет искать наиболее распространенные или повторно используемые биты данных. оттуда он будет просто ссылаться на словарную статью вместо того, чтобы снова писать целое «слово». Таким образом, большинство процессов сжатия уже вырезают избыточные или дублирующиеся данные из всех файлов.
Например, если вы берете файл размером 1 МБ и каждый раз копируете его 100 раз под другим именем (всего 100 МБ на диске), то вы сжимаете его в файл размером 7zip или zip, у вас будет общий файл zip размером 1 МБ. Это потому, что все ваши данные были помещены в одну словарную запись и на них ссылались 100 раз, что занимает очень мало места.
Это очень простое объяснение того, что происходит, но суть все еще хорошо изложена.
источник
7-Zip, zip, gzip и все остальные архиваторы не обнаруживают идентичные области, расположенные далеко друг от друга, например, несколько мегабайт или выше, внутри одного файла или размещенные в разных местах внутри разных файлов.
Так что нет, обычные архиваторы не работают так же хорошо, как exdupe и другие, в некоторых ситуациях. Вы можете увидеть это, если вы сжимаете некоторые виртуальные машины или другие вещи.
источник