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

fdupes: найти и удалить дубликаты файлов в Linux

• 7 min read • Linux • Обновлено 29 Nov 2025
fdupes: найти и удалить дубликаты в Linux
fdupes: найти и удалить дубликаты в Linux

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

find remove duplicate files using fdupes

Изображение: рабочая папка с дубликатами файлов, показана структура каталогов и список файлов

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

Если версия выводится — утилита готова к работе.

Основная идея работы

  1. fdupes группирует файлы по размеру и затем вычисляет MD5 для ускорения поиска.
  2. На совпадающих хэшах выполняется побайтовая проверка для подтверждения.
  3. Результат — список групп дубликатов, где можно выбрать, что удалить или заменить ссылками.

Это простая и надежная стратегия: сначала фильтрация по размеру, затем по хэшу, затем точная проверка.

Как искать дубликаты с помощью fdupes

Поиск дубликатов в директории (без рекурсии):

fdupes path/to/directory

Пример для папки Documents:

fdupes ~/Documents

Identifying-duplicate-files-in-a-directory

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

Если папка содержит подкаталоги и вы хотите просмотреть их — используйте рекурсивный режим.

Рекурсивный поиск:

fdupes -r path/to/directory

Пример:

fdupes -r ~/Documents

fdupes-recursive-search

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

Исключение нулевых файлов (пустых файлов):

По умолчанию fdupes включает нулевой-байт файлы. Чтобы исключить пустые файлы, добавьте ключ -n:

fdupes -n path/to/directory

Пример:

fdupes -n ~/Documents

Recursive-non-empty-duplicate-files-search-fdupes

Изображение: вывод fdupes с исключением пустых файлов

Сохранение вывода в файл (полезно для отчёта или последующей обработки):

fdupes path/to/directory > file_name.txt

Пример:

fdupes /home/Documents > output.txt

Просмотр сводки по дубликатам: ключ -m

fdupes -m path/to/directory

Пример:

fdupes -m ~/Documents

Viewing-summary-of-duplicate-files-using-fdupes

Изображение: пример сводки по найденным дубликатам

Справка по опциям:

fdupes -h

fdupes-help-menu

Изображение: вывод справки 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)

  1. Создать резервную копию каталога: rsync -a ~/Documents /media/backup/Documents.bak
  2. Просканировать и сохранить вывод: fdupes -r ~/Documents > ~/fdupes-results.txt
  3. Проанализировать файл fdupes-results.txt вручную или через скрипт.
  4. На тестовом примере выполнить удаление: mkdir ~/test; cp -a ~/Documents/sample* ~/test/; fdupes -d ~/test
  5. После верификации — запустить удаление в рабочей директории с опцией -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).
  • Все дубликаты для тестовой папки корректно сгруппированы и подтверждены побайтово.
  • Процесс удаления отработал на тестовой копии без потери не-дубликатных данных.
  • Для массового удаления принято решение о резервном копировании и сохранены логи.

Тест-кейсы и контроль качества

  1. Тест: каталог с тремя одинаковыми файлами разного имени. Ожидаем: группа из трёх файлов.
  2. Тест: один пустой файл, несколько нулевых копий. Ожидаем: включение при -n отсутствует, при обычном запуске включены.
  3. Тест: файлы одинакового размера, разного содержимого. Ожидаем: не объединяются.
  4. Тест: файлы на разных разделах при -L. Ожидаем: замена не будет выполнена для файлов на разных FS.

Риски и способы их смягчения

Риски:

  • Непреднамеренное удаление нужных файлов.
  • Потеря контекста (который файл был «оригиналом»).
  • Проблемы с правами доступа.

Митигаторы:

  • Всегда делать резервные копии перед массовыми операциями.
  • Тестировать на копиях данных.
  • Использовать журналы вывода (redirect в файл).

Миграция и совместимость

  • Жесткие ссылки работают только в одной файловой системе. Для данных, распределённых по разделам, используйте симлинки вручную или перенос на один раздел перед операцией.
  • Совместимость: fdupes доступен в репозиториях большинства дистрибутивов; для BSD-систем могут потребоваться другие утилиты.

Короткий глоссарий

  • Жесткая ссылка — альтернатива копии файла, указывающая на тот же inode.
  • Символическая ссылка — отдельный файл, указывающий на путь к другому файлу.
  • MD5 — алгоритм контрольной суммы (быстрый, распространённый).

Итоги

Fdupes — простой и эффективный инструмент для обнаружения дубликатов в Linux. Работает быстро и надёжно благодаря сочетанию фильтрации по размеру, вычислению MD5 и побайтовой проверке. Всегда начинайте с анализа и тестов на копии, используйте резервное копирование, а для автоматизации — сохраняйте логи и применяйте ключи разумно.

Если задача сложнее (большие NAS, мультиразделы, метаданные, облачные хранилища), рассмотрите rmlint, rdfind или графические инструменты для удобства.

Краткая подсказка для социальных сетей и превью: используйте теги, упоминающие “освободить место” и “удалить дубликаты”.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро