Способы дедупликации файлов

10

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

Если я скопирую все эти файлы в один каталог, есть ли инструмент, позволяющий распознать дубликаты файлов и дать мне список или даже удалить один из дубликатов?

User1
источник
1
связанные: unix.stackexchange.com/questions/3037/…
Дэвид Кэри

Ответы:

3

Создайте md5sum для каждого файла, дубликаты md5sum предлагают (но не гарантирует) дубликаты файлов.

Bryan
источник
1
они сильно «предложить», однако :) ..и если файлы имеют одинаковый размер, то вероятность того , что предложение является правильным исключительно высока
садок
2

Вы можете использовать Dupemerge, чтобы превратить идентичные файлы в жесткие ссылки. Хотя на большом наборе файлов это займет очень много времени . Хэши файлов SHA (или MD5) почти наверняка будут работать быстрее, но вам придется приложить больше усилий, чтобы найти дубликаты. Вероятность случайного столкновения настолько мала, что на самом деле вы можете его игнорировать. (На самом деле, многие продукты дедупликации уже делают это.)

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

afrazier
источник
1
hardlinkочень быстро (для файлов
1,2M
1

Что ж, если у вас есть такая возможность, вы можете настроить дедуплицирующую файловую систему и поместить в нее свои резервные копии. Это приведет не только к дедупликации целых файлов, но и к аналогичным фрагментам файлов. Например, если у вас есть один и тот же JPEG в нескольких местах, но с разными тегами EXIF ​​в каждой версии, дедуплицирующая файловая система сохранит данные изображения только один раз.

Дедуплицирующие файловые системы включают lessfs, ZFS и SDFS.

Райан К. Томпсон
источник
1
Я не могу говорить о дедупликации на SDFS или lessfs, но Dedupe на ZFS не работает так. Он проверяет на уровне блоков, поэтому идентичные файлы, скорее всего, будут помечены для дедупликации, но файлы с другим заголовком, скорее всего, не будут. Кроме того, файлы, размер которых меньше размера вашей записи ZFS (по умолчанию 128 КБ), могут быть упакованы в один блок, поэтому они также могут не выиграть от дедупликации.
Notpeter
Дедуплицированная файловая система (zfs или btrfs) экономит место только на резервном хосте. Это не сохраняет количество переданных данных. Есть идея вычислить некоторый хэш для файлов и отправить его на резервный хост. когда он говорит «у меня есть», резервное копирование для этого файла делается. Это реализовано на очень дорогом (денежном) программном обеспечении для резервного копирования. Я никогда не слышал об этом в открытых источниках. Но, может быть, это реализовано сейчас, кто знает :)
Znik
@Znik rsync --link-dest- ваш друг, если вы хотите сэкономить на чтении / передаче. Простое введение здесь: netfuture.ch/2013/08/…
Марсель Вальдвогель
это работает, проверяя inode, назначенные файлу. но когда дедупликация скрыта, например, в файловой системе squashfs, rsync не может проверить это и будет передавать одни и те же данные много раз.
Znik
0

Когда я занимался такими вещами, я понял, что гораздо интереснее / экономичнее просто просматривать файлы в свободное время в течение пары недель. Вы можете отличить вещи лучше, чем ваш компьютер.

Если вы не согласны, то я предлагаю EasyDuplicateFinder . Как я уже упоминал выше, для 5 ГБ файлов, скажем, потребуется много времени, скажем, около суток.

И с другой стороны, Crashplan делает то, что вы делали раньше, но гораздо более организованно, без проблем с версиями.

digitxp
источник
0

Другая возможность, предполагая, что машины, которые вы резервируете, будет поддерживать это, - это использовать что-то вроде rsync.

Если вы переместитесь rsyncиз A в B, затем из C в B, затем из D в B и т. Д., Точные дубликаты (т. Е. По имени файла) будут удалены (и синхронизированы между машинами, для которых вы создаете резервную копию).

Если вы не хотите, чтобы все они синхронизировались друг с другом, это не лучший способ.

кроличий садок
источник
0

Для файлов изображений используйте findimagedupes . Он также упакован в Debian .

cweiske
источник
findimagedupes для фотографий или графики, может быть преобразован из одного формата в другой. фотографии (я дома) является единственным примером, о котором идет речь. Это могут быть любые другие большие файлы.
Znik
0

Жесткие ссылки выполняют дедупликацию, только если весь файл идентичен. Если заголовки (EXIF, ID3, ...) или метаданные (владелец) различаются, они не будут связаны.

Если у вас есть возможность использовать файловую систему с поддержкой дедупликации блоков (ZFS, btrfs,…), используйте ее вместо этого. Мне очень нравится автономная (aka batch ) поддержка дедупликации btrfs, которая поддерживает дедупликацию на уровне экстентов и не постоянно потребляет огромные объемы памяти (как дедупликация ZFS онлайн).

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

Смотрите https://btrfs.wiki.kernel.org/index.php/Deduplication для отличного обсуждения.

Марсель Вальдвогель
источник