fdupes
Использование
user@comp:~$ fdupes [опции] КАТАЛОГ...
где КАТАЛОГ - это абсолютный или относительный путь к каталогу, где мы будем искать дубликаты файлов. Также может быть указано несколько каталогов через пробел.
Опции | Описание | |
---|---|---|
-r | --recurse | проходить по подкаталогам каждого из КАТАЛОГОВ, указанных в командной строке |
-R | --recurse: | проходить по подкаталогам каждого из КАТАЛОГОВ, указанных в командной строке после данной опции |
-s | --symlinks | проходить по символическим ссылкам |
-H | --hardlinks | при обычном поведении программы, в случае когда два или больше файлов указывают на одну и ту же область жёсткого диска (жёсткие ссылки) они не определяются как дубликаты; данная опция меняет такое поведение. Более того: если данная опция не установлена (а это случай по умолчанию), то файлы, на которые существует хотя бы одна жёсткая ссылка вообще исключаются из поиска дубликатов. Проверено опытным путём. |
-n | --noempty | исключить из поиска файлы нулевой длины |
-f | --omitfirst | не включать первый файл в каждый из наборов дубликатов |
-1 | --sameline | выдавать набор дубликатов в одну строку через пробел. Опция - это цифра 1 (один), а не латинская буква L :) |
-S | --size | показывать размер дубликата |
-m | --summarize | вывести суммарную информацию о дубликатах. Выдаётся общее количество дубликатов, количество из них уникальных файлов и занимаемое дубликатами место. Информация по самим файлам при этом не выводится (!) |
-q | --quiet | не показывать ход процесса. Полезно при выводе результатов в файл |
-d | --delete | спрашивать у пользователя о действиях над каждым найденным набором дубликатов: какие файлы сохранить, а какие удалить. При глупых настройках файлы могут быть безвозвратно утеряны. Например, если список КАТАЛОГОВ пересекается подкаталогами или если вместе с этой опцией задана опция -s (--symlinks) |
-N | --noprompt | вместе с опцией --delete, сохраняет первый файл в каждом наборе дубликатов и удаляет все остальные файлы без подтверждения пользователя |
-v | --version | выводит версию fdupes |
-h | --help | выводит справку (на английском) |
Работа программы
После ввода команды fdupes сканирует все заданные файлы (подходящие под выборку), составляет их список и генерирует контрольные суммы. Дальше идёт сверка файлов.
Выводится ход процесса сверки (если опциями не указано другое поведение).
Результат сканирования выводится по умолчанию в консоль и только в конце проверки, а не по мере нахождения одинаковых файлов. Пути к файлам выводятся с новой строки, наборы дубликатов разделяются пустой строкой. Размер файла (если указано опциями) выводится в начале каждого набора.
Элементы набора дубликатов сортируются в соответствии со списком КАТАЛОГОВ. То есть элемент из первого КАТАЛОГА будет стоять первым в списке дубликатов, а остальные элементы идут по алфавиту.
Итого
Плюсы: программа работает очень быстро. Предусмотрены различные варианты вывода результатов, что удобно для транслирования в другие приложения для дальнейшей работы с дубликатами. Сбоев замечено не было.
Минусы: По умолчанию из поиска файлов полностью исключаются те, на которые существуют жёсткие ссылки.
FSlint
Пакет FSlint - это прежде всего графический интерфейс fslint-gui, а также ряд утилит для диагностики, исправления и оптимизации файловой системы, которые могут быть вызваны по отдельности из консоли.

Помимо поиска дубликатов FSlint умеет находить плохие или конфликтующие имена, временные файлы, мёртвые символические ссылки, пустые каталоги и другой «мусор» файловой системы.
Поддерживаются различные операции с результатом поиска.
Отдельно надо отметить возможность объединения одинаковых файлов с помощью жёстких ссылок.
Основной состав консольных утилит (скриптов) FSlint
Находятся по адресу /usr/share/fslint/fslint/
.
fslint
— описания скриптов
findbl
— ищет битые символические ссылки (Bad Links)
finded
— ищет пустые каталоги (Empty Directories)
findid
— ищет неиспользуемые или плохие идентификаторы файлов (IDs)
findnl
— ищет плохие имемна файлов или каталогов (Name Lint)
findns
— ищет неисполняемые бинарники (NonStripped)
findrs
— ищет лишние пробельные символы в именах (Redundant whiteSpace)
findsn
— ищет файлы с одинаковыми или конфликтующими именами ()
findtf
— ищет временные файлы (Temporary Files)
findu8
— ищет имена с неверной перекодировкой в UTF8 (UTF8)
findul
— ищет лишние библиотеки (Unused Libraries)
findup
— ищет дубликаты файлов (dUPlicate files)
Работа программы
Интерфейс - графический и интуитивно понятный, собственно этим всё и сказано.
Единственное, что можно отметить - при объединении файлов за основу берётся первый в списке дубликатов.
Итого
Плюсы: мощная программа с простым и понятным графическим интерфейсом.
Минусы: бинарники (вместо скриптов) работали бы быстрее.
Комментарии
Максим
#cid770
Ответить
Почему-то в папке в которой есть заведомо одинаковые файлы с одинаковыми суммами программа не удаляет!!!
Максим
#cid771
Ответить
max@mail:~$ ls -la ./test
-rw-rw-rw- 2 root root 17890 2010-12-13 13:15 1292235300.M968450P952.mail,W=18195,S=17890:2,ST
max@mail:~$ sudo md5sum ./test/1292235300.M935468P30122.mail,W=18195,S=17890:2,Sd
a9ffcfb1b8dbab357ccd0e756fac7930 ./test/1292235300.M935468P30122.mail,W=18195,S=17890:2,Sd
max@mail:~$ sudo md5sum ./test/1292235300.M968450P952.mail,W=18195,S=17890:2,ST
a9ffcfb1b8dbab357ccd0e756fac7930 ./test/1292235300.M968450P952.mail,W=18195,S=17890:2,ST
max@mail:~$ sudo fdupes -N -d -R ./test
max@mail:~$
#cid772
Ответить
По умолчанию программа не удаляет дубликаты в виде жёстких ссылок. Это - тот самый случай, обрати внимание на цифру 2 после прав доступа.
Чтобы удаляла надо запускать с ключом -H
Кстати, а где файл
./test/1292235300.M935468P30122.mail,W=18195,S=17890:2,Sd
?
Андрей
#cid90366
Ответить
Просканировал на дубликаты,от 2 до "много" одинаковых.Что нажимать,"удалить","обьединить".?Не спец я в програмировании.
#cid90367
Ответить
#cid90366, Андрей
"Объединить" — это вместо второго файла создать жёсткую ссылку на первый. То есть, после объединения у тебя две записи в файловой системе будут ссылаться на одну и ту же область диска. Дубликат будет удалён, место освободится.
Удалять дубли или объединять с оригиналом — решать тебе, для этого не надо быть программистом.
При обеих операциях освобождается одно и то же дисковое пространство.
Андрей
#cid90368
Ответить
Забыл добавить,программа FSlint.
Борис
#cid91145
Ответить
Замечена неправильная работа скрипта findbl комплекта fslint. Если сделана символическая ссылка на директорию, а потом её путём переименования папки где-то в середине пути к ней сделать недействительной, то findbl выдаёт результат поиска такой ссылки не всегда корректно.
Вот рапорт об оборванной ссылке на файл, всё правильно:
2015-11-28/tramwaj/Tatra-t3/2014-01-01/d92c.png -> /home/user1000/Documents/history-index/2015-11-28/kabeli/kalendar/d92c.png
Переименовали tatra-t3 на Tatra-t3, и ссылка стала недействительной, успешно обнаружена, теперь её можно вручную исправить миднайт командером ctrl-x ctrl-s.
А вот рапорт об оборванной ссылке на директорию:
-> /home/user1000/Documents/history-index/2015-11-28/tramwaj/tatra-t3/2015-11-28
Местожительство плохой ссылки в рапорте пропущено, показано только, куда она ссылается. Команда была такая:
user1000@ubuntu-dy530:$ /usr/share/fslint/fslint/findbl -d ./
Аналогичный результат был получен под Убунту "14.04.3 LTS" и под Дебианом "squeeze" на другой машине в такой же ситуации.
Куда бежать?
imen
#cid91146
Ответить
#cid91145, Борис
Как куда?!?
Направление стандартное — bug tracker разработчика.
Начинать искать с http://www.pixelbeat.org/fslint/