fdupes: найти и удалить дубликаты файлов в Linux
Если на Linux накопились повторяющиеся файлы, fdupes — простой и надёжный CLI-инструмент для их поиска и удаления или замены на жесткие ссылки. Прочитайте краткое руководство, чек-лист безопасности, альтернативы и шаблоны команд, чтобы безопасно очистить хранилище.

Изображение: рабочая папка с дубликатами файлов, показана структура каталогов и список файлов
Когда вы работаете с большим количеством медиа и документов, на диске неизбежно появляются одинаковые копии файлов. В результате место на диске заполняется дубликатами, усложняя поиск и резервное копирование. Fdupes — легкий инструмент командной строки для Linux, который помогает найти и удалить такие дубликаты.
В этом материале вы найдёте: как установить fdupes, основные команды, подробные примеры, рекомендации по безопасности, сценарии использования, альтернативы и чек-листы для разных ролей.
Кому это пригодится
- Домашним пользователям, желающим освободить место на диске.
- Системным администраторам, управляющим резервными копиями и центрами хранения.
- Девопсам и инженерам данных, у которых часто дублируются лог-файлы или артефакты сборки.
Важно: fdupes работает на содержимом файлов — он сравнивает хэши и при необходимости делает побайтовую проверку, поэтому риск ложных совпадений минимален. Тем не менее всегда сначала проверяйте результаты перед массовым удалением.
Что такое fdupes?
Fdupes — это консольная утилита для обнаружения и управления дублирующимися файлами в Linux. Она свободно распространяется (MIT License) и доступна в популярных репозиториях. Работает в два этапа: сначала сравнивает контрольные суммы (MD5) файлов, затем выполняет побайтовое сравнение для подтверждения совпадения.
Кратко: сначала хэш, затем «byte-by-byte» при необходимости. Это экономит время и снижает вероятность ошибок.
Установка fdupes
Fdupes есть в репозиториях большинства дистрибутивов. Выберите команду под ваш дистрибутив:
На Ubuntu/Debian:
sudo apt install fdupesНа Fedora / RHEL / CentOS (dnf):
sudo dnf install fdupesНа Arch Linux и Manjaro:
sudo pacman -S fdupesПроверка установки:
fdupes -VЕсли версия выводится — утилита готова к работе.
Основная идея работы
- fdupes группирует файлы по размеру и затем вычисляет MD5 для ускорения поиска.
- На совпадающих хэшах выполняется побайтовая проверка для подтверждения.
- Результат — список групп дубликатов, где можно выбрать, что удалить или заменить ссылками.
Это простая и надежная стратегия: сначала фильтрация по размеру, затем по хэшу, затем точная проверка.
Как искать дубликаты с помощью fdupes
Поиск дубликатов в директории (без рекурсии):
fdupes path/to/directoryПример для папки Documents:
fdupes ~/DocumentsИзображение: консольный вывод fdupes — группы дубликатов файлов
Если папка содержит подкаталоги и вы хотите просмотреть их — используйте рекурсивный режим.
Рекурсивный поиск:
fdupes -r path/to/directoryПример:
fdupes -r ~/DocumentsИзображение: вывод fdupes при рекурсивном поиске, группы файлов по совпадению содержимого
Исключение нулевых файлов (пустых файлов):
По умолчанию fdupes включает нулевой-байт файлы. Чтобы исключить пустые файлы, добавьте ключ -n:
fdupes -n path/to/directoryПример:
fdupes -n ~/DocumentsИзображение: вывод fdupes с исключением пустых файлов
Сохранение вывода в файл (полезно для отчёта или последующей обработки):
fdupes path/to/directory > file_name.txtПример:
fdupes /home/Documents > output.txtПросмотр сводки по дубликатам: ключ -m
fdupes -m path/to/directoryПример:
fdupes -m ~/DocumentsИзображение: пример сводки по найденным дубликатам
Справка по опциям:
fdupes -hИзображение: вывод справки fdupes с перечнем флагов
Удаление дубликатов безопасным способом
Удалять файлы следует осторожно. Всегда проверяйте список перед удалением и делайте резервную копию важных данных.
Интерактивное удаление (по одному набору):
fdupes -d path/to/directoryПример:
fdupes -d ~/DownloadsПри выполнении команды fdupes покажет наборы дубликатов и предложит выбрать, какие файлы сохранить. Введите цифру с номером файла, который нужно сохранить, и нажмите Enter.
Если хотите сохранить несколько файлов из набора — введите через запятую, например:
1,3,5Автоматическое сохранение первого файла в каждом наборе (без подтверждения):
fdupes -d -N path/to/directoryПример:
fdupes -d -N ~/DocumentsЗамена дубликатов на жесткие ссылки:
fdupes -L path/to/directoryКлюч -L заменяет дубликаты на жесткие ссылки на оставленный файл — это уменьшает использование пространства без потери данных. Учтите, что жесткие ссылки работают только в пределах одной файловой системы.
Чек-лист безопасности перед массовым удалением
- Сделайте резервную копию важных каталогов (rsync, tar).
- Выполните fdupes без параметров удаления, сохраните вывод в файл.
- Просмотрите группы дубликатов вручную или с помощью скрипта.
- Если сомневаетесь — используйте -N только после теста в копии каталога.
- Проверьте, что файлы не являются конфигурационными ссылками или активными артефактами сервисов.
Чек-лист для ролей
Системный администратор
- Проверить файловые системы и разрешения.
- Работать с копиями резервных данных.
- Планировать окна обслуживания для массового удаления.
Домашний пользователь
- Начать с папки Downloads и Pictures.
- Использовать -n чтобы исключить пустые файлы.
- Сохранять вывод в файл перед удалением.
Разработчик/Девопс
- Исключать каталоги сборки (.git, node_modules) или включать их явно.
- Использовать скрипты для автоматизации в CI только после тестов.
Шаблон пошаговой процедуры (SOP)
- Создать резервную копию каталога:
rsync -a ~/Documents /media/backup/Documents.bak - Просканировать и сохранить вывод:
fdupes -r ~/Documents > ~/fdupes-results.txt - Проанализировать файл
fdupes-results.txtвручную или через скрипт. - На тестовом примере выполнить удаление:
mkdir ~/test; cp -a ~/Documents/sample* ~/test/; fdupes -d ~/test - После верификации — запустить удаление в рабочей директории с опцией -N или вручную.
Примеры типичных сценариев и команд (cheat sheet)
- Найти дубликаты в папке:
fdupes /path/to/dir - Рекурсивный поиск:
fdupes -r /path/to/dir - Исключить пустые файлы:
fdupes -n -r /path/to/dir - Вывести краткую сводку:
fdupes -m /path/to/dir - Сохранить вывод в файл:
fdupes -r /path/to/dir > duplicates.txt - Удалить интерактивно:
fdupes -d /path/to/dir - Удалить, сохранив первый файл без подтверждений:
fdupes -d -N /path/to/dir - Заменить дубликаты на жесткие ссылки:
fdupes -L /path/to/dir
Когда fdupes не подходит или даёт ложные срабатывания
- Файлы с одинаковым содержимым, но разным назначением (например, копии конфигураций для разных сервисов) могут быть неочевидно критичны. Всегда проверяйте путь и контекст.
- Жесткие ссылки (-L) работают только внутри одной файловой системы — если каталоги на разных разделах, замена невозможна.
- Fdupes использует MD5 — это быстрый и практичный подход, но если у вас крайне высокие требования к коллизиям, рассмотрите более сильные хэши в пользовательских инструментах.
Альтернативы и сравнение
- rdfind — быстрый и удобный инструмент с возможностью автоматического удаления и симлинков.
- rmlint — мощный и быстрый, умеет находить дубликаты, симлинки и «лишние» файлы с подробными опциями.
- dupeGuru — графический инструмент, удобен для обычных пользователей (кросс-платформенный).
Mental model: сначала фильтр по размеру → затем по хэшу → затем финальная проверка по байтам. Эта последовательность минимизирует лишние сравнений и ложные срабатывания.
Критерии приёмки
- Утилита найдена и установлена (
fdupes -V). - Все дубликаты для тестовой папки корректно сгруппированы и подтверждены побайтово.
- Процесс удаления отработал на тестовой копии без потери не-дубликатных данных.
- Для массового удаления принято решение о резервном копировании и сохранены логи.
Тест-кейсы и контроль качества
- Тест: каталог с тремя одинаковыми файлами разного имени. Ожидаем: группа из трёх файлов.
- Тест: один пустой файл, несколько нулевых копий. Ожидаем: включение при -n отсутствует, при обычном запуске включены.
- Тест: файлы одинакового размера, разного содержимого. Ожидаем: не объединяются.
- Тест: файлы на разных разделах при -L. Ожидаем: замена не будет выполнена для файлов на разных FS.
Риски и способы их смягчения
Риски:
- Непреднамеренное удаление нужных файлов.
- Потеря контекста (который файл был «оригиналом»).
- Проблемы с правами доступа.
Митигаторы:
- Всегда делать резервные копии перед массовыми операциями.
- Тестировать на копиях данных.
- Использовать журналы вывода (redirect в файл).
Миграция и совместимость
- Жесткие ссылки работают только в одной файловой системе. Для данных, распределённых по разделам, используйте симлинки вручную или перенос на один раздел перед операцией.
- Совместимость: fdupes доступен в репозиториях большинства дистрибутивов; для BSD-систем могут потребоваться другие утилиты.
Короткий глоссарий
- Жесткая ссылка — альтернатива копии файла, указывающая на тот же inode.
- Символическая ссылка — отдельный файл, указывающий на путь к другому файлу.
- MD5 — алгоритм контрольной суммы (быстрый, распространённый).
Итоги
Fdupes — простой и эффективный инструмент для обнаружения дубликатов в Linux. Работает быстро и надёжно благодаря сочетанию фильтрации по размеру, вычислению MD5 и побайтовой проверке. Всегда начинайте с анализа и тестов на копии, используйте резервное копирование, а для автоматизации — сохраняйте логи и применяйте ключи разумно.
Если задача сложнее (большие NAS, мультиразделы, метаданные, облачные хранилища), рассмотрите rmlint, rdfind или графические инструменты для удобства.
Краткая подсказка для социальных сетей и превью: используйте теги, упоминающие “освободить место” и “удалить дубликаты”.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента