Гид по технологиям

Как найти и удалить дубликаты файлов в Linux с помощью fdupes

6 min read Linux Обновлено 10 Apr 2026
fdupes — найти и удалить дубликаты в Linux
fdupes — найти и удалить дубликаты в Linux

Поиск и удаление дубликатов файлов с помощью fdupes

Кратко о fdupes

fdupes — это консольная утилита для поиска и удаления дубликатов файлов в Linux. Вкратце: она группирует файлы по совпадающим контрольным суммам (MD5), а затем подтверждает совпадение побайтовым сравнением, чтобы исключить ложные срабатывания.

Определение в одну строку: fdupes сравнивает содержимое файлов и показывает наборы идентичных файлов для дальнейших действий (удаление, замена ссылками или анализ).

Важное: прежде чем удалять файлы, делайте резервную копию или экспортируйте результаты поиска в файл для проверки.

Основные сценарии использования (основные команды)

  • Обязательные флаги, описанные в этой статье: -r (рекурсивно), -n (исключить нулевой размер), -d (удаление интерактивно), -N (удаление без запроса — оставить первый файл в каждом наборе), -m (вывод статистики), -h (помощь).
  • Для безопасной работы сначала выводите результаты в файл: fdupes /путь > results.txt и просматривайте.

Как установить fdupes

На Ubuntu / Debian:

sudo apt install fdupes

На Fedora / CentOS / RHEL (dnf):

sudo dnf install fdupes

На Arch Linux / Manjaro:

sudo pacman -S fdupes

Если пакет отсутствует в репозитории, проверьте исходники на GitHub под лицензией MIT и соберите из исходников.

Поиск дубликатов: базовые примеры

Найти дубликаты в каталоге (без рекурсии):

fdupes ~/Documents

Если дубликаты найдены, fdupes выведет наборы файлов, каждый набор отделён пустой строкой. Пример вывода можно увидеть на изображении ниже.

Выявление дубликатов в каталоге

Рекурсивный поиск (включая подкаталоги):

fdupes -r ~/Documents

Рекурсивный поиск дубликатов с помощью fdupes

Исключение пустых (нуль-байт) файлов — полезно, если в результате много пустых файлов, которые вас не интересуют:

fdupes -n ~/Documents

Рекурсивный поиск непустых дубликатов с помощью fdupes

Запись вывода в файл для последующего анализа:

fdupes /home/Documents > output.txt

Сводка по дубликатам (количество наборов, суммарный объём) — флаг -m:

fdupes -m ~/Documents

Просмотр сводки по дубликатам с fdupes

Справка по утилите:

fdupes -h

Меню помощи fdupes

Удаление дубликатов

Интерактивное удаление: fdupes предлагает сохранить один или несколько файлов в каждом наборе, остальные будут удалены.

fdupes -d ~/Downloads

После выполнения команда выведет наборы и попросит выбрать файлы для сохранения — вводите номера через запятую или одно число.

Пример: сохранить файлы 1,3 и 5 в наборе:

1,3,5

Автоматическое удаление с сохранением первого файла в каждом наборе (внимание — без подтверждения):

fdupes -d -N ~/Documents

Совет: сначала запустите команду без -d и сохраните список, чтобы вручную проверить потенциально удаляемые файлы.

Важно о замене на жёсткие ссылки: fdupes может заменить дубликаты жёсткими ссылками, чтобы сохранять только один инод, если это поддерживает файловая система. Перед такой операцией убедитесь, что вы понимаете последствия: восстановление отдельных копий станет невозможным без резервной копии.

Когда fdupes может «не подойти» или дать некорректные ожидания

  • Разные файловые системы: замена на жёсткие ссылки невозможна между разными смонтированными файловыми системами; операция только в пределах одной FS.
  • Символьные ссылки (symlink) и жёсткие ссылки: поведение зависит от опций и от того, рассматриваются ли ссылки как отдельные объекты. Проверяйте вывод перед удалением.
  • Метаданные и временные метки: fdupes сравнивает содержимое, а не время модификации или права доступа; то есть файлы с одинаковым содержимым, но разными метаданными, будут считаться дубликатами.
  • Отсутствие блокировки во время работы: если файлы активно изменяются в процессе сканирования, результаты могут быть некорректными.

Альтернативы и когда выбирать другую утилиту

  • rmlint — более гибкая и быстрая утилита с большим набором правил и возможностью создания отчётов и скриптов для исправления.
  • dupeGuru — GUI-инструмент, полезен пользователям на рабочем столе (кроссплатформенный).
  • fslint — набор утилит с графическим интерфейсом (иногда не поддерживается в новых дистрибутивах).

Выбор зависит от объёма данных, требований к автоматизации и предпочтения GUI/CLI.

Пошаговый SOP для безопасного удаления дубликатов (Playbook)

  1. Подготовка: определить каталоги для проверки. Создайте резервную копию критичных данных.
  2. Сканирование: fdupes -r -n /путь > results.txt
  3. Верификация: вручную откройте results.txt, особенно большие файлы и файлы в системных папках.
  4. Тестовая выборка: для пары наборов выполните ручную проверку содержимого (cmp или md5sum).
  5. Удаление: fdupes -d /путь и интерактивно подтверждайте или fdupes -d -N /путь для автоматизации.
  6. Проверка: просмотрите журнал shell и убедитесь в ожидаемом освобождении места.
  7. Резервное копирование итогов: сохраните итоговый список удалённых файлов и используйте snapshot/RSYNC, если нужно откатиться.

Критерии приёмки

  • Все подтверждённые дубликаты были удалены/заменены согласно принятой политике.
  • Сервисы и приложения не потеряли доступа к нужным файлам.
  • Резервная копия позволила восстановить файлы в случае ошибки.

Роли и чек-листы

Для системного администратора:

  • Не запускать массовое удаление без резервной копии сервера.
  • Исключать каталоги с системными файлами.
  • Проверять операции на тестовом разделе.

Для домашнего пользователя:

  • Сканировать сначала каталоги пользователя (Downloads, Pictures, Music).
  • Открывать результаты перед удалением.

Для фотографа/медиаменеджера:

  • Сравнивать файлы по размеру и визуально проверять наборы перед удалением.
  • Использовать EXIF/метаданные как дополнительную проверку, если надо сохранить разные версии.

Тесты и критерии приёмки

  • Тест 1: Сканирование каталога с известными копиями — fdupes должен вывести все наборы.
  • Тест 2: Исключение пустых файлов — опция -n убирает нулевые файлы.
  • Тест 3: Рекурсивный поиск — опция -r должна найти дубликаты в подкаталогах.
  • Тест 4: Интерактивное удаление — после fdupes -d выбранные файлы удалены, сохранённые — нет.

Ментальные модели (как fdupes работает)

  1. Хеширование: файлы группируются по MD5 (быстрая фильтрация).
  2. Побайтовое сравнение: для групп с одинаковым хешем выполняется точная проверка, чтобы исключить коллизии.
  3. Действие: на основе подтверждённых групп предлагается удалить дубликаты или заменить их ссылками.

Эта модель помогает понять, почему утилита быстрая и почему точная.

Безопасность и приватность

  • Запускать как обычный пользователь, а не под root, если сканируете пользовательские каталоги.
  • Удаление данных может привести к утрате персональной информации — создавайте резервную копию перед массовыми операциями.
  • Жёсткие ссылки сохраняют содержимое, но объединяют inode: это меняет модель восстановления — учтите это в политике хранения персональных данных.

Совместимость и ограничения файловых систем

  • Жёсткие ссылки возможны только в пределах одной файловой системы.
  • Если вы сканируете смонтированные внешние диски (NTFS через ntfs-3g, exFAT через FUSE), поведение может отличаться — тестируйте на небольших выборках.

Итог и рекомендации

fdupes — надёжный инструмент для быстрой идентификации и удаления дубликатов по содержимому. Используйте его в связке с резервным копированием и проверкой результатов, особенно при автоматическом удалении. Для сложных политик очистки рассмотрите rmlint или GUI-решения для предварительного просмотра.

Краткое резюме:

  • Сканируйте рекурсивно: -r
  • Исключайте пустые файлы: -n
  • Интерактивное удаление: -d
  • Автоматическое удаление без запроса: -d -N

Если вам нужно восстановление после ошибки, используйте резервную копию. При замене на жёсткие ссылки помните об ограничениях файловой системы.


Дополнительно: схема выбора подхода к удалению дубликатов (decision tree)

flowchart TD
  A[Начать: нужно удалить дубликаты?] --> B{Каталог небольшой?}
  B -- Да --> C[Использовать fdupes интерактивно]
  B -- Нет --> D{Нужна автоматизация?}
  D -- Да --> E[Сформировать список, протестировать, затем fdupes -d -N]
  D -- Нет --> C
  C --> F{Требуется GUI-просмотр?}
  F -- Да --> G[Использовать dupeGuru или fslint]
  F -- Нет --> H[Проверить результаты, сделать backup]
  E --> H
  G --> H
  H --> I[Выполнить удаление и мониторинг дискового пространства]

Однострочный глоссарий

  • MD5: криптографическая хеш-функция, используемая для предварительной группировки файлов.
  • Жёсткая ссылка: ссылка на один и тот же inode; несколько имён — один и тот же файл.
  • Рекурсивный поиск: обход каталогов и подкаталогов.
  • Нулевой файл: файл с размером 0 байт.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как отключить Handoff на Mac, iPhone и Apple Watch
Apple

Как отключить Handoff на Mac, iPhone и Apple Watch

Установка Apache Tomcat 10 на Ubuntu 20.04
DevOps

Установка Apache Tomcat 10 на Ubuntu 20.04

Отключить иллюстрации в строке поиска Windows
Windows

Отключить иллюстрации в строке поиска Windows

Как сообщить о посте или профиле в Facebook
Социальные сети

Как сообщить о посте или профиле в Facebook

SMTP в Python: отправка писем через Gmail
Python

SMTP в Python: отправка писем через Gmail

Wi‑Fi точка на Linux с linux-wifi-hotspot
Инструкции

Wi‑Fi точка на Linux с linux-wifi-hotspot