6 лучших инструментов для поиска и удаления дубликатов файлов в Linux

Организовать домашний каталог или даже систему может быть особенно сложно, если у вас есть привычка скачивать из интернета всевозможные файлы с помощью менеджеров загрузок.
Часто бывает так, что вы скачиваете один и тот же mp3-файл, pdf-файл и epub-файл (а также файлы с другими расширениями) и копируете их в разные каталоги. Из-за этого ваши каталоги могут быть переполнены бесполезными дубликатами.
Из этого руководства вы узнаете, как находить и удалять дубликаты файлов в Linux с помощью инструментов командной строки rdfind, fdupes, и rmlint, а также с помощью графических инструментов DupeGuru и FSlint.
Предупреждение: всегда будьте осторожны при удалении данных в вашей системе, так как это может привести к нежелательной потере информации. Если вы используете новый инструмент, сначала попробуйте его в тестовом каталоге, где удаление файлов не вызовет проблем.
1. Rdfind — поиск дубликатов файлов в Linux
Rdfind — это сокращение от redundant data find, бесплатного инструмента командной строки, который используется для поиска дубликатов файлов в нескольких каталогах или внутри них. Он рекурсивно сканирует каталоги и находит файлы с идентичным содержимым, что позволяет выполнять соответствующие действия, например удалять или перемещать дубликаты.
использует алгоритм для классификации файлов и определяет, какой из дубликатов является исходным файлом, а остальные считает дубликатами.
Правила ранжирования таковы:
- Если A было найдено при сканировании входного аргумента раньше, чем B, то A имеет более высокий приоритет.
- Если A было найдено на глубине меньшей, чем B, то A имеет более высокий рейтинг.
- Если A было найдено раньше, чем B, то A имеет более высокий приоритет.
Последнее правило используется, в частности, когда в одном каталоге находятся два файла.
Установите Rdfind в Linux
Чтобы установить rdfind в Linux, используйте следующую команду в зависимости от вашего дистрибутива Linux.
$ sudo apt install rdfind [В Debian, Ubuntu и Mint] $ sudo yum install rdfind [В RHEL/CentOS/Fedora и Rocky/AlmaLinux] $ sudo emerge -a sys-apps/rdfind [В Gentoo Linux] $ sudo apk add rdfind [В Alpine Linux] $ sudo pacman -S rdfind [В Arch Linux] $ sudo zypper install rdfind [В OpenSUSE]
Чтобы запустить rdfind в каталоге, просто введите rdfind и укажите целевой каталог.
$ rdfind /home/user
Как видите, rdfind сохраняет результаты в файле results.txt, расположенном в том же каталоге, откуда вы запустили программу. Файл содержит все дубликаты файлов, обнаруженные rdfind. При желании вы можете просмотреть файл и удалить дубликаты вручную.
Ещё один способ — использовать -dryrun
и опцию, которая предоставит список дубликатов без каких-либо действий:
$ rdfind -dryrun true /home/user
Когда вы найдёте дубликаты, вы можете заменить их жёсткими ссылками.
$ rdfind -makehardlinks true /home/user
А если вы хотите удалить дубликаты, вы можете запустить.
$ rdfind -deleteduplicates true /home/user
Чтобы ознакомиться с другими полезными функциями rdfind, воспользуйтесь руководством rdfind.
$ man rdfind
2. Fdupes — поиск дубликатов файлов в Linux
Fdupes — это ещё одна программа командной строки, которая позволяет находить дубликаты файлов в вашей системе. Она выполняет рекурсивный поиск в каталогах, сравнивая размеры и содержимое файлов для выявления дубликатов.
Для определения дубликатов файлов используются следующие методы:
- Сравнение частичных сигнатур md5sum
- Сравнение полных сигнатур md5sum
- проверка путём побайтового сравнения
Как и rdfind, он имеет схожие параметры:
- Рекурсивный поиск
- Исключить пустые файлы
- Показывает размер дубликатов файлов
- Немедленно удаляйте дубликаты
- Исключить файлы с другим владельцем
Установите Fdupes в Linux
Чтобы установить fdupes в Linux, используйте следующую команду в зависимости от вашего дистрибутива Linux.
$ sudo apt install fdupes [В Debian, Ubuntu и Mint] $ sudo yum install fdupes [В RHEL/CentOS/Fedora и Rocky/AlmaLinux] $ sudo emerge -a sys-apps/fdupes [В Gentoo Linux] $ sudo apk add fdupes [В Alpine Linux] $ sudo pacman -S fdupes [В Arch Linux] $ sudo zypper install fdupes [В OpenSUSE]
Fdupes аналогичен rdfind. Просто введите команду, а затем укажите каталог, который нужно просканировать.
$ fdupes <dir>
Чтобы выполнить рекурсивный поиск файлов, необходимо указать параметр -r
следующим образом.
$ fdupes -r <dir>
Вы также можете указать несколько каталогов и dir для рекурсивного поиска.
$ fdupes <dir1> -r <dir2>
Чтобы fdupes рассчитал размер дубликатов файлов, используйте опцию -S
.
$ fdupes -S <dir>
Чтобы получить сводную информацию о найденных файлах, используйте опцию -m
.
$ fdupes -m <dir>
Наконец, если вы хотите удалить все дубликаты, используйте -d
или аналогичный параметр.
$ fdupes -d <dir>
Fdupes спросит, какой из найденных файлов нужно удалить. Вам нужно будет ввести номер файла:
Решение, которое точно не рекомендуется, — использовать опцию -N
, которая приведёт к сохранению только первого файла.
$ fdupes -dN <dir>
Чтобы получить список доступных параметров для использования с fdupes, просмотрите страницу справки, выполнив команду.
$ fdupes -help
3. Jdupes — улучшенная версия Fdupes
jdupes — это более современная версия классического fdupes, но она намного быстрее, активно поддерживается и имеет множество функций, которых нет в fdupes.
Как и fdupes, он находит дубликаты файлов, сравнивая их содержимое, но он оптимизирован для работы с большими наборами данных и сложными сценариями использования.
Ключевые улучшения по сравнению с fdupes:
- Значительно более быстрое сканирование больших каталогов (благодаря улучшенным алгоритмам и распараллеливанию).
- Для экономии места можно заменить дубликаты жёсткими ссылками.
- Возможность создания символических ссылок вместо удаления.
- Более подробный вывод данных и расширенные возможности сценариев.
- Более безопасные способы удаления с интерактивными подсказками.
Установите Jdupes в Linux
Чтобы установить Jdupes в Linux, используйте следующую команду в зависимости от вашего дистрибутива Linux.
sudo apt install jdupes # Debian, Ubuntu, Mint sudo yum install jdupes # RHEL, CentOS, Fedora, Rocky, AlmaLinux sudo pacman -S jdupes # Arch Linux sudo zypper install jdupes # openSUSE
Примеры использования:
jdupes <dir> # сканирование каталога jdupes -r <dir> # рекурсивное сканирование jdupes -d <dir> # удаление дубликатов в интерактивном режиме jdupes -L <dir> # замена дубликатов жёсткими ссылками jdupes -s <dir> # замена символическими ссылками
Проверьте дополнительные параметры с помощью:
jdupes --help
4. Rmlint — удаление дубликатов файлов
Rmlint — это инструмент командной строки, который используется для поиска и удаления дубликатов и файлов, похожих на lint, в системах Linux. Он помогает выявлять файлы с идентичным содержимым, а также различные формы избыточности или lint, такие как пустые файлы, неработающие символические ссылки и потерянные файлы.
Установите Rmlint в Linux
Чтобы установить Rmlint в Linux, используйте следующую команду в зависимости от вашего дистрибутива Linux.
$ sudo apt install rmlint [В Debian, Ubuntu и Mint] $ sudo yum install rmlint [В RHEL/CentOS/Fedora и Rocky/AlmaLinux] $ sudo emerge -a sys-apps/rmlint [В Gentoo Linux] $ sudo apk add rmlint [В Alpine Linux] $ sudo pacman -S rmlint [В Arch Linux] $ sudo zypper install rmlint [В OpenSUSE]
5. dupeGuru — поиск дубликатов файлов в Linux
dupeGuru — это кроссплатформенный инструмент с открытым исходным кодом, который можно использовать для поиска дубликатов файлов в системе Linux. Инструмент может сканировать имена файлов или их содержимое в одной или нескольких папках. Он также позволяет находить имена файлов, похожие на те, которые вы ищете.
dupeGuru доступен в разных версиях для платформ Windows, Mac и Linux. Благодаря функции быстрого нечеткого сопоставления вы сможете найти дубликаты файлов за минуту. Программа настраивается, вы можете выбрать нужные дубликаты и удалить ненужные файлы из системы.
Установите dupeGuru в Linux
Чтобы установить dupeGuru в Linux, используйте следующую команду в зависимости от вашего дистрибутива Linux.
$ sudo apt install dupeguru [В Debian, Ubuntu и Mint] $ sudo yum install dupeguru [В RHEL/CentOS/Fedora и Rocky/AlmaLinux] $ sudo emerge -a sys-apps/dupeguru [В Gentoo Linux] $ sudo apk add dupeguru [В Alpine Linux] $ sudo pacman -S dupeguru [В Arch Linux] $ sudo zypper install dupeguru [В OpenSUSE]
6. Czkawka — современный инструмент для поиска дубликатов и очистки файлов в Linux
Czkawka (произносится как «ч-ка-вка» — в переводе с польского «икота») — это бесплатная утилита с открытым исходным кодом, написанная на Rust, которая помогает находить и удалять ненужные файлы в вашей системе. Она разработана как быстрая, безопасная и лёгкая альтернатива более старым инструментам, таким как FSlint.
С помощью Czkawka вы можете обнаружить дубликаты файлов, пустые папки, временные файлы, неработающие символические ссылки и даже большие неиспользуемые файлы. Программа имеет как интерфейс командной строки, так и графический интерфейс для удобства использования.
[ВНИМАНИЕ] — поддержка snap-версии этого приложения прекращена. Вы можете использовать другие форматы пакетов, например flatpak, или готовые двоичные файлы из официального проекта на GitHub.
Czkawka не входит в состав большинства репозиториев Linux, но вы можете легко установить его с помощью Flatpak или Snap:
# Установка через Flatpak (рекомендуется) flatpak install flathub com.github.qarmin.czkawka # Установка через Snap sudo snap install czkawka
После установки вы можете запустить его из меню приложений (для графического интерфейса) или из терминала с помощью czkawka_cli
.
czkawka_cli
Заключение
Это очень полезные инструменты для поиска дубликатов файлов в вашей системе Linux, но при удалении таких файлов следует быть очень осторожным.
Если вы не уверены, нужен вам файл или нет, лучше создать его резервную копию и запомнить его расположение в каталоге перед удалением. Если у вас есть вопросы или комментарии, пожалуйста, оставьте их в разделе комментариев ниже.
Редактор: AndreyEx