Утилита командной строки fdupes предназначена для поиска и удаления дубликатов файлов в каталогах операционной системы Linux.
Инструмент, сканируя указанные каталоги, сравнивает файлы по размеру и содержимому, что позволяет ему идентифицировать одинаковые файлы, даже если у них разные имена.
Содержание
- Зачем использовать fdupes
- Проблемы, вызываемые дубликатами
- Синтаксис
- Параметры
- Использование утилиты fdupes
- Ошибки
- Заключение
Зачем использовать fdupes
Утилита помогает освободить место на диске и поддерживать более организованную файловую систему, эффективно идентифицируя и обрабатывая дубликаты файлов.
Проблемы, вызываемые дубликатами
Причины возникновения проблем:
Потребление памяти
Дублирующиеся файлы занимают ценное дисковое пространство, что приводит к проблемам с ёмкостью диска
Путаница
Дублирующиеся файлы могут вызвать путаницу и неэффективность при поиске определённых документов
Избыточность
Дублирующиеся файлы могут создавать ненужную избыточность, что приводит к увеличению времени резервного копирования и использования ресурсов
Все вышеперечисленные проблемы эффективно решает fdupes.
Синтаксис
oleg@mobile:~:$ fdupes [options] DIRECTORY...Параметры
-r --recurse
За каждым указанным каталогом следуют подкаталоги, обнаруженные внутри
-R --recurse:
За каждым каталогом, указанным после этой опции, следуют подкаталоги, обнаруженные внутри (обратите внимание на
:в конце опции, страница man для получения более подробной информации)-s --symlinks
следовать символическим ссылкам
-H --hardlinks
Обычно, когда два или более файлов указывают на одну и ту же область диска, они рассматриваются как недубликаты; эта опция изменит такое поведение
-G --minsize=SIZE
Рассматривать только файлы, размер которых больше или равен SIZE байт
-L --maxsize=SIZE
Рассматривать только файлы, меньшие или равные SIZE байт
-c --cache
Ускорить сравнение файлов, отслеживая их подписи в базе данных; дополнительные параметры могут быть предоставлены с использованием одного или нескольких параметров кэша (как показано ниже)
-x cache.OPTION
Указать необязательный параметр кэша, где OPTION — одно из ключевых слов ниже, а несколько параметров могут быть указаны с помощью последовательных аргументов
-x:readonly
Читать, но не обновлять подписи файлов
prune
Просмотреть весь кэш и удалить ненужные записи
clear
Очистить все записи из кэша
vacuum
Уменьшить размер файла базы данных, если это возможно (обратите внимание, что параметры
prune,clearиvacuumмогут использоваться без указания аргумента DIRECTORY и вступят в силу, даже если также указаноreadonly)-n --noempty
Исключить файлы нулевой длины из рассмотрения
-A --nohidden
Исключить скрытые файлы из рассмотрения
-f --omitfirst
Пропустить первый файл в каждом наборе совпадений
-1 --sameline
Перечислить каждый набор совпадений в одной строке
-S --size
Показать размер дубликатов файлов
-t --time
Показать время модификации дубликатов файлов
-m --summarize
Суммировать дубликат информации
-q --quiet
Скрыть индикатор прогресса
-d --delete
Запрашивать у пользователя файлы для сохранения и удалять все остальные; важно: при определённых обстоятельствах данные могут быть потеряны при использовании этой опции вместе с
-sили--symlinks, или при указании определённого каталога более одного раза; дополнительную информацию см. в документации fdupes-D --deferconfirmation
В интерактивном режиме отложить побайтовое подтверждение дубликатов до момента непосредственно перед удалением файла
-P --plain
Вместе с
--deleteиспользовать строковую подсказку (как в старых версиях fdupes) вместо интерфейса в экранном режиме-N --noprompt
Вместе с
--deleteсохранить первый файл в каждом наборе дубликатов и удалить остальные без запроса пользователя-I --immediate
Удалить дубликаты по мере их обнаружения, не группируя в наборы; подразумевает --noprompt
-p --permissions
Не считать дубликатами файлы с разными владельцами/группами или битами разрешений
-o --order=BY
Выбрать порядок сортировки для вывода и удаления; по времени изменения файла (BY='time'; по умолчанию), времени изменения статуса (BY='ctime') или имени файла (BY='name')
-i --reverse
Обратный порядок при сортировке
-l --log=LOGFILE
Варианты удаления файла журнала в LOGFILE
-v --version
Отобразить версию
fdupes-h --help
Отобразить эту справку
Использование утилиты fdupes
Сканирование каталога
Просканировать каталог и найти дубликаты файлов предельно просто. Для примера просканируем подкаталог Directory домашнего каталога:
oleg@mobile:~:$ fdupes ./Directory/
./Directory/example.txt
./Directory/ar1.txt
oleg@mobile:~:$Можно указать и полный путь:
oleg@mobile:~:$ fdupes /home/oleg/Directory/
/home/oleg/Directory/example.txt
/home/oleg/Directory/ar1.txt
oleg@mobile:~:$Был отображёт список дубликатов файлов.
Рекурсивное сканирование
Для рекурсивного сканирования команда запускается с опцией -r:
oleg@mobile:~:$ fdupes -r ./webprojects/mensh.ru/img/mensh.ru/img/
./webprojects/mensh.ru/img/baldtopdugout/baldtop-dugout-3.png
./webprojects/mensh.ru/img/baldtopdugout/baldtopdugout3.png
./webprojects/mensh.ru/img/baldtopdugout/baldtop-dugout-2.png
./webprojects/mensh.ru/img/baldtopdugout/baldtopdugout2.png
./webprojects/mensh.ru/img/dacha/small-week-end-house-2.jpg
./webprojects/mensh.ru/img/dacha/small-week-end-house-2.png
...
./webprojects/mensh.ru/img/peacedome/peace-dome.jpg
./webprojects/mensh.ru/img/ogeiger/ogeiger-peacedome-2.jpg
./webprojects/mensh.ru/img/waterproofing/waterproof6.png
./webprojects/mensh.ru/img/waterproofing/waterproof-6.png
./webprojects/mensh.ru/img/dholloway/dh
./webprojects/mensh.ru/img/dholloway/dholloway-solar-5.png
oleg@mobile:~:$Сканирование нескольких каталогов
В данном случае каталоги, предназначенные для сравнения, указываются в качестве аргументов. При необходимости рекурсивного сканирования используется опция -r:
oleg@mobile:~:$ fdupes -r ./webprojects/mensh.ru/img/ -r ./webprojects/mensh.ru/images/
./webprojects/mensh.ru/images/hebron/hebron2_800.png
./webprojects/mensh.ru/img/solarhouses/91solarhomes-hebron-2.png
./webprojects/mensh.ru/images/nautilushouse/nautilushouse2_1000.jpg
./webprojects/mensh.ru/img/jsenosian/nautilushouse2_1000.jpg
./webprojects/mensh.ru/images/nautilushouse/nautilushouse4.jpg
./webprojects/mensh.ru/img/jsenosian/nautilushouse4.jpg
./webprojects/mensh.ru/images/nautilushouse/nautilushouse3.jpg
./webprojects/mensh.ru/img/jsenosian/nautilushouse3.jpg
./webprojects/mensh.ru/images/nautilushouse/nautilushouse9.jpg
./webprojects/mensh.ru/img/jsenosian/nautilushouse9.jpg
./webprojects/mensh.ru/images/nautilushouse/nautilushouse1.jpg
./webprojects/mensh.ru/img/jsenosian/nautilushouse1.jpg
...
oleg@mobile:~:$Показаны группы дубликатов, найденных во всех указанных каталогах.
Удаление дубликатов файлов
Для удаления дубликатов файлов используется опция -d:
oleg@mobile:~:$ fdupes -d ./Directory/При необходимости используется и опцию -r.
При нежелании получать запрос на выбор удаляемого файла добавляется опция -N. Набор опций может выглядеть как -rdN, но следует помнить о последствиях в случае ошибки.
Перед удалением любых файлов убедитесь, что у вас есть резервная копия критически важных данных.
Проблемы при удалении дубликатов
Всегда следует помнить о некоторых потенциальных подводных камнях:
Потеря данных
При удалении файлов без проверки можно непреднамеренно удалить критически важные файлы
Производительность
Сканирование очень больших каталогов может занять значительное время
Ошибки
Существуют распространённые ошибки при использовании утилиты:
Отказано в доступе
Необходимо наличие разрешений для доступа к сканируемым каталогам
Дубликаты не найдены
Вероятнее всего сканируются не те каталоги
Заключение
Утилита Linux fdupes помогает освободить место на диске и поддерживать более организованную файловую систему, эффективно идентифицируя и обрабатывая дубликаты файлов.
Из этой статьи ясно, что пользоваться этим весьма полезным инструментом очень просто.