Полуавтоматическая дедуплиуация файлов [linux]

YUAL

на ноуте накопилось куча вского говна. всякие необработанные фоточки, срочно слитые флэшки, стопицот папок темп, слитые хомы с двух рабочик компов прошлой работы и т.п.
На глаз я вижу что там многие файлы там явно дупликаты. В том числе куча фоточек. Сумарно всё это весит достаточно много. Есть какой-нить софт который найдёт все дупликаты, а потом предложит поудалять лишнее и предоставит выбор что конкретно удалять.
Я чё-то не могу нагуглить. Гуглю по "ручная дедупликация файлов linux".

procenkotanya

поискал бы в дистрибутиве просто "dup". в генту на раз находится:
[N] app-misc/fdupes (1.50_pre2): Identify/delete duplicate files residing within specified directories

aladin13

Отличная идея!
А для винды есть такое?

Marinavo_0507

я просто новый диск ставлю и всё

YUAL

cygwin же

erotic

По-моему это делается в консоли командами find, md5, и sort.

YUAL

Я думал на счёт find, sort, md5sum и пришёл к выводу что не очень удобно. Буквально на днях занимался подобным.на сервере с простой иерархической структурой и более-менее понятным расположением дупликатов. Говно.

erotic

Говно
Так любой сказать может. Ты конкретику давай.

YUAL

ну например есть такая структура директорий
a/{b,c} d/{e,f}
в a/b и d/e лежат дупликаты из которых надо оставить те что в а/b
в a/c и d/f лежат дупликаты из которых надо оставить те что в d/f
в этом простом случае можно дважды выполнит что-то духе find md5sum sort uniq rm для каждой из директорий. а если таких директорий не 2, а больше? У меня в хоме полтора миллиона файлов из которых 600 тысяч - дупликаты. Ручками чистить ваще не вариант. сел писать софтинку на питоне, которая просканирует весь хом а потом будет выводить дупликаты по каталогам и предлагать выбрать кого оставить.

goshop

Отформатируй диск - начни жизнь с чистого листа! :)

erotic

Ясно. Вторую часть твоего первого поста я упустил из виду, думал, тебе просто найти надо.

okis

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

dkmv

Апну тему с очень похожей задачей.
Есть куча материалов с конференции, тоже много всяких директорий/файлов,
в виде двух копий от разных дат.
Некоторые файлы там различаются по размеру, не отличаясь по названию.
Как удобнее всего получить список отличающихся файлов? (желательно в винде, но вариант для *nix тоже порадует).

okis

можно сделать find в одной директории для каждого файла из другой директории, ну и выводить где суммы не сходятся
сложность квадратичная, но это не важно

#!/bin/bash
find . | while read x; do
if [ -f "$x" ]; then
find "$1" -name "$(basename "$x")" | while read y; do
if [[ "$(md5sum "$y")" == "$(md5sum "$x")" ]]; then
echo \# $x ok
else
echo diff "$y" "$x"
fi
done
fi
done

BondarAndrey

Кажись, есть алгоритм со сложностью NlogN — вначале генерируешь список (md5sum, path), потом сортируешь его быстрой сортировкой по хэшу. А уж поиск повторений в отсортированной последовательности вроде как вообще линеен.

okis

В общем да, нужно тогда ещё пометить принадлежность к каталогу, иначе он обнаружит внутренние несхождения, а нужны, как я понял, только внешние
Оставить комментарий
Имя или ник:
Комментарий: