Утилита командной строки 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
помогает освободить место на диске и поддерживать более организованную файловую систему, эффективно идентифицируя и обрабатывая дубликаты файлов.
Из этой статьи ясно, что пользоваться этим весьма полезным инструментом очень просто.