Чи існує програма стиснення або архівації для Windows, яка також робить дедуплікацію? [зачинено]


12

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

Поки що я знайшов:

Хтось знає про інших?

Це, мабуть, було б дивним доповненням до 7-блискавок.

Відповіді:


12

Практично всі сучасні архіватори роблять саме це, різниця полягає лише в тому, що вони посилаються на це як на "суцільний" архів, оскільки всі файли об'єднані в єдиний потік, перш ніж подавати в алгоритм стиснення. Це відрізняється від стандартного стиснення zip, яке стискає кожен файл по одному і додає кожен стислий файл до архіву.

7-блискавка за своєю суттю ефективно домагається дедублювання. Наприклад, 7-Zip буде шукати файли, сортуватиме їх за подібними типами файлів та іменами файлів, і тому два файли одного типу та дані будуть розміщені поруч у потоці, що йде до алгоритмів компресора. Потім компресор побачить багато даних, які він бачив зовсім недавно, і ці два файли побачать значне підвищення ефективності стиснення порівняно зі стисненням файлів по одному.

Linux вже давно бачив подібну поведінку завдяки розповсюдженню їх ".tgz" формату (або ".tar.gz" для використання його в повному вигляді), оскільки tar просто об'єднує всі файли в один потік (хоча і без сортування та групування файлів), а потім стиснення за допомогою gzip. Цього не вистачає - це сортування, яке роблять 7-zip, що може дещо знизити ефективність, але все-таки набагато краще, ніж просто збивати безліч індивідуально стислих файлів разом так, як це робить zip.


щодня дізнаватися щось нове. Я не усвідомлював, що zip стискає кожен файл окремо, але, провівши пару тестів на моєму комп’ютері, я зрозумів, що ти справді правильний. дуже цікаво, дякую!
CenterOrbit

7ip виконує справжню роботу з дедупіляції, але він також призначений для ефективного стиснення даних, що не повторюються, та використовує багато процесора та пам'яті для досягнення цього, що робить дуже неефективним способом дедуплікації даних. Якщо ви стиснете два однакових 100 МБ файлів, вам буде потрібно багато проблем, щоб спробувати і стиснути перший файл ефективно, і лише потім (якщо розмір словника досить великий) стиснути другий файл як дублікат першого.
mwfearnley

Хіба gzip не .tar.gzстискає лише відносно невеликі блоки (наприклад, 900 КБ) одночасно, незалежно один від одного, і, таким чином, не має можливості виводити два великих, але однакових файлу (наприклад, пару зображень 4 МБ)?
бінкі

Наприклад, 7z зміг виводити великі файли, але gzip не було: gist.github.com/binki/4cf98fb4f1f4aa98ee4a00edaf6048fa
binki

цікавий підхід - "git add" файли, а потім стиснути папку
.git

4

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

Наприклад, якщо ви берете файл 1 Мб і копіюєте його 100 разів з іншим іменем кожен раз (загалом 100 МБ дискового простору), тоді ви стискаєте його у 7zip або zip-файл, у вас буде поштовий файл загальним розміром 1 Мб. Це тому, що всі ваші дані були введені в один словник і посилалися на 100 разів, що займає дуже мало місця.

Це дуже просте пояснення того, що відбувається, але суть все-таки добре передається.


1
Оскільки розмір словника дуже обмежений для більшості архівів стиснення, це не є дійсним у повсякденному використанні. Спробуйте це з файлами 50MB, і ваш стислий розмір подвоїться з двома однаковими вхідними файлами.
Chaos_99

1
Zip-файли, на відміну від 7zip-файлів, не підтримують дедупликацію між файлами. Zip-файли стискають і зберігають кожен файл окремо, тому копії файлів просто зберігатимуться кілька разів в архіві.
mwfearnley

1
Хоча 7zip підтримує дедупликацію між файлами, він призначений для пошуку та стиснення набагато коротших збігів. Його алгоритми набагато повільніші та більш зайняті в пам'яті, ніж це можливо для чогось, призначеного для пошуку масштабного дублювання даних.
mwfearnley

4

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

Отже, ні, звичайні архіватори не працюють так добре, як exdupe та інші, в деяких ситуаціях. Це можна побачити, якщо стиснути деякі віртуальні машини чи інші речі.


1
Це вірно. Як тільки унікальний обсяг даних перевищує розмір словника компресорів, стиснення знижується в стоку. exdupe пропонує чудову продуктивність для великих обсягів даних.
usr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.