Существует ли программа сжатия или архивирования для Windows, которая также выполняет дедупликацию? [закрыто]

12

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

Пока я нашел:

Кто-нибудь знает о каких-либо других?

Это, вероятно, будет отличным дополнением к 7-zip.

Ларри Сильверман
источник

Ответы:

12

Почти все современные архиваторы делают именно это, единственное отличие состоит в том, что они называют это «сплошным» архивом, поскольку все файлы объединяются в один поток перед подачей в алгоритм сжатия. Это отличается от стандартного сжатия zip, который сжимает каждый файл один за другим и добавляет каждый сжатый файл в архив.

7-zip по своей природе эффективно устраняет дублирование. Например, 7-Zip будет искать файлы, сортировать их по типам файлов и именам файлов, и поэтому два файла одного типа и данных будут размещены рядом в потоке, идущем к алгоритмам компрессора. Затем компрессор увидит много данных, которые он видел совсем недавно, и эти два файла увидят значительное увеличение эффективности сжатия по сравнению со сжатием файлов один за другим.

Linux долгое время сталкивался с подобным поведением благодаря преобладанию их формата ".tgz" (или ".tar.gz", чтобы использовать его полную форму), поскольку tar просто объединяет все файлы в один поток (хотя и без сортировка и группировка файлов), а затем сжатие с помощью gzip. Чего не хватает, так это сортировки, выполняемой 7-zip, которая может немного снизить эффективность, но все же намного лучше, чем просто объединение большого количества отдельно сжатых файлов вместе, как это делает zip.

Мокубай
источник
Узнавайте что-то новое каждый день. Я не осознавал, что zip сжимал каждый файл отдельно, но после нескольких тестов на моем компьютере я понял, что вы действительно правы. очень интересно, спасибо!
ЦентрОрбит
7ip отлично справляется с дедупликацией, но она также предназначена для эффективного сжатия недублируемых данных и использует много ресурсов ЦП и памяти для достижения этой цели, что делает ее очень неэффективным способом дедупликации данных. Если вы сжимаете два идентичных файла размером 100 МБ, вам потребуется много усилий, чтобы эффективно сжимать первый файл, и только тогда (если размер словаря достаточно большой) сжимать второй файл как копию первого.
Mwfearnley
Разве gzip не .tar.gzсжимает только относительно небольшие блоки (например, 900 КБ) за один раз полностью независимо друг от друга и, таким образом, не способен дедуплицировать два больших, но одинаковых файла (например, пару изображений размером 4 МБ)?
Бинки
Например, 7z удалось выполнить дедупликацию между большими файлами, а gzip - нет: gist.github.com/binki/4cf98fb4f1f4aa98ee4a00edaf6048fa
binki
4

Нет смысла использовать дедупликацию в процессе сжатия. Большинство алгоритмов сжатия создают так называемый «словарь», который будет искать наиболее распространенные или повторно используемые биты данных. оттуда он будет просто ссылаться на словарную статью вместо того, чтобы снова писать целое «слово». Таким образом, большинство процессов сжатия уже вырезают избыточные или дублирующиеся данные из всех файлов.

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

Это очень простое объяснение того, что происходит, но суть все еще хорошо изложена.

CenterOrbit
источник
1
Поскольку размер словаря очень ограничен для большинства архивов сжатия, это не подходит для повседневного использования. Попробуйте это с 50 МБ файлами, и ваш сжатый размер удвоится с двумя одинаковыми входными файлами.
Chaos_99
1
Zip-файлы, в отличие от 7zip-файлов, не поддерживают дедупликацию между файлами. Zip-файлы сжимают и хранят каждый файл отдельно, поэтому дубликаты файлов будут просто несколько раз храниться в архиве.
Mwfearnley
1
Хотя 7zip поддерживает дедупликацию между файлами, он предназначен для поиска и сжатия гораздо более коротких совпадений. Его алгоритмы намного медленнее и занимают больше памяти, чем это потенциально возможно для чего-то, предназначенного для поиска крупномасштабного дублирования данных.
mwfearnley
4

7-Zip, zip, gzip и все остальные архиваторы не обнаруживают идентичные области, расположенные далеко друг от друга, например, несколько мегабайт или выше, внутри одного файла или размещенные в разных местах внутри разных файлов.

Так что нет, обычные архиваторы не работают так же хорошо, как exdupe и другие, в некоторых ситуациях. Вы можете увидеть это, если вы сжимаете некоторые виртуальные машины или другие вещи.

Ян
источник
1
Это верно. Как только объем уникальных данных превышает размер словаря компрессоров, сжатие теряется. Exdupe предлагает превосходную производительность для больших объемов данных.
USR