Вопрос или проблема
Я использую UbuntuStudio 20.04.
Я хочу знать, существует ли какое-либо Linux-приложение (с GUI) для удаления дубликатов файлов, не только по именам файлов, но и по их содержимому.
Я говорю о сравнении длины и внутренних значений, чтобы узнать, есть ли дубликаты файлов, даже если их имена не одинаковы (например, одно и то же видео с разными именами в разных папках).
Есть ли что-то подобное? Где?
fdupes
Не знаю о программе с GUI, но есть мощный инструмент командной строки: fdupes
Ищет заданный путь на наличие дубликатов файлов. Такие файлы находятся путем сравнения размеров файлов и MD5-хешей, за которыми следует побайтное сравнение.
Исходный код на GitHUB
Страница справочника Ubuntu
Установка
sudo apt install fdupes
Использование
# Список дубликатов в целой директории
# -r : рекурсивно
fdupes -r /path/to/adir
# Список и удаление дубликатов в директории
# -r : рекурсивно
# -d : сохранить первый файл, удалить другие дубликаты
fdupes -rd /path/to/adir
Связано: Где fslint (поисковик дубликатов файлов) для Ubuntu 20.04?
dupeGuru
Посмотрите на dupeGuru. Это альтернатива с GUI.
dupeGuru — это кроссплатформенный (Linux, OS X, Windows) инструмент с GUI для поиска дубликатов файлов в системе. Он в основном написан на Python 3 и имеет особенность использования нескольких комплектов GUI, при этом во всех случаях используется тот же основной код на Python. На OS X интерфейс написан на Objective-C и использует Cocoa. На Linux и Windows интерфейс написан на Python и использует Qt5.
Для установки выполните:
sudo apt install dupeguru
Я нашел список некоторых GUI-программ для поиска дубликатов во время поиска и подумал, что добавлю его сюда, так как эта страница имела довольно хорошие рейтинги SEO в моих поисках.
Обратите внимание, что они все должны быть дистрибутивно-агностичными (например, они должны работать с Ubuntu, а также с любым другим дистрибутивом), но я не тестировал их. Перечисленные приложения действительно соответствуют требованиям, упомянутым в оригинальном сообщении, по моим данным (например, они являются Linux родными приложениями и имеют GUI, по описаниям все они должны работать как детекторы дубликатов). Я постарался сделать свои записи также довольно дистрибутивно-агностичными.
Ссылка содержит таблицу, которая пытается провести сравнение функций. Я не собираюсь копировать таблицу, но понимаю, что людям нравится, когда в ответах больше, чем просто ссылка, поэтому я также перечислю приложения из списка вместе с некоторыми моими собственными заметками:
- DupeGuru: То же самое, что предлагается в другом ответе, это то, что я бы рекомендовал большинству пользователей (особенно для тех, кто на Ubuntu, так как есть официальный PPA для Ubuntu Focal/Bionic/Xenial в момент написания или deb файлы на странице релизов их GitHub). Если вы используете дистрибутив на базе не Ubuntu/Debian, есть tar файл или вы можете скомпилировать из исходников.
- Rmlint-GUI: Некоторые страницы упоминали, что она ранее называлась “Shredder”. Онлайн много хороших упоминаний, но я пока сам не пробовал ее. Я нашел эту ссылку на документацию до того, как нашел связанную таблицу сравнения. В данный момент я не на компьютере с Ubuntu, но согласно repology она должна быть в центральных репозиториях большинства дистрибутивов, включая Ubuntu, Debian, Arch, Manjaro, Fedora и многих других. Она не имеет предварительно скомпилированных бинарных релизов на GitHub, но может быть скомпилирована из исходников.
- DetWinner: Я не знаю о нем ничего. Интересно, что в их readme на GitHub написано, что он поддерживает “поиск и удаление дубликатов файлов и похожих изображений“. Имеется flatpak здесь. Но он не присутствует ни в одном центральном репозитории какого-либо дистрибутива (по данным repology), и не предлагает snap или предварительно скомпилированные бинарные файлы. Если flatpak не подходит, скомпиляция из исходников может быть единственным другим путем.
- Czkawka: Интересный интерфейс на основе Rust, но может возникнуть проблема, если вы хотите только отчет без фактического удаления дубликатов (см. примечание и связанную проблему ниже — я лично не проверял эту проблему, просто передаю предупреждение). Согласно этой странице, она должна быть доступна через snap, flatpak, appimage, менеджер `cargo` для Rust, PPA, AUR (для пользователей Arch), предварительно скомпилированные бинарные файлы на GitHub, или путем скомпиляции из исходников.
- FSlint: Это приложение было устаревшим в Ubuntu 20.04 и позже из-за зависимостей Python2, но существуют обходные пути, если вас устраивает установка устаревших пакетов или использование неофициального snap. Я не рекомендую это большинству пользователей. (если только не появится новый форк для Python3… не стоит задерживать дыхание по этому поводу, так как разработчик — pixelb — уже заявил “Мне действительно не хватает времени [для продолжения поддержки fslint] честно говоря.” и рекомендовал czkawka как более современную замену).
Однако я думаю, что по крайней мере один из связанных проектов может потребовать ручной компиляции, если вы не используете flatpak и другие подобные приложения.
Есть и по крайней мере одна проблема, о которой стоит знать: пользователь в связанном потоке сообщил, что “Czkawka просто удалит все копии файла без предупреждения, в отличие от FSlint“. Я видел на одной странице для него упоминание о кнопке “Предварительный просмотр”, так что возможно, что существуют разные действия и только предварительный просмотр не делает изменений. Так что неясно из комментариев, была ли это ошибка / непредвиденное поведение программы или недопонимание со стороны пользователя. В любом случае, если вы решите попробовать Czkawk, кажется разумным для начала провести несколько тестов на данных, которые вы не боитесь потерять.
rmlint
rmlint
— это отличный инструмент, написанный на Rust. Он не будет напрямую удалять файлы, но генерирует настроенный rmlint.sh
, который предлагает несколько параметров для выполнения задачи.
Примеры:
# Поиск дубликатов файлов размером более 10 МБ с индикатором прогресса
rmlint -T "df" --size 10M -g
# Запустить необязательный графический интерфейс для rmlint под названием Shredder
rmlint --gui
rmlint
находит потери пространства и другие дефекты на файловой системе и предлагает их удалить. Он способен найти:
- Дубликаты файлов и директорий.
- Неотрезанные исполняемые файлы
- Неработающие символические ссылки.
- Пустые файлы.
- Рекурсивные пустые директории.
- Файлы с неработающими идентификаторами пользователей или групп.
Еще одна отличная альтернатива — czkawka
.
Ответ или решение
Для устранения дублирующихся файлов в операционной системе Linux, в частности на UbuntuStudio 20.04, существует несколько подходов и инструментов, которые позволяют анализировать файлы не только по их именам, но и по содержимому, размеру и другим характеристикам. Рассмотрим наиболее подходящие решения, полагаясь на существующую информацию и доступные программные инструменты с графическим интерфейсом.
Теория
Дублирующиеся файлы на компьютере могут занимать значительное количество места на жестком диске и создавать путаницу в системе хранения данных. Необходимо использовать программы, которые могут сравнивать файлы не просто по названию, но и по содержимому, используя такие методы, как вычисление контрольных сумм. Это позволяет выявлять идентичные файлы даже при разных именах.
Основные методы идентификации дублирующихся файлов включают сравнение размеров файлов, использование хэш-функций для вычисления контрольных сумм (например, MD5 или SHA-256), а также побайтовое сравнение содержимого файлов. Эти методы обеспечивают высокую точность и позволяют точно определить дубликаты.
Примеры
-
fdupes: CLI-инструмент, основанный на сравнение размеров и MD5-сигнатур, после чего идёт побайтовое сравнение. Несмотря на отсутствие GUI, это мощный инструмент для тех, кто предпочитает командную строку. Использовать его можно с помощью таких команд:
sudo apt install fdupes fdupes -r /path/to/adir # Поиск дубликатов fdupes -rd /path/to/adir # Удаление дубликатов, оставляя первый найденный
-
dupeGuru: Это кроссплатформенное приложение с графическим интерфейсом, специально созданное для поиска дублирующихся файлов. Оно может быть установлено на Ubuntu через:
sudo apt install dupeguru
DupeGuru предлагает различные режимы поиска, например, «музыкальный», который более релевантен для аудиофайлов.
-
rmlint: Этот инструмент написан на Rust и не удаляет файлы напрямую, а генерирует скрипт, который можно использовать для удаления обнаруженных дубликатов. Он предлагает различные параметры для поиска и удаления нежелательных файлов. Используется следующими командами:
rmlint -T "df" --size 10M -g rmlint --gui # Запуск GUI для удобного управления
-
Czkawka: Это современный инструмент, предлагающий удобный и функциональный GUI. Он поддерживает различные форматы распространения, включая AppImage, Flatpak и Snap, что делает его простым в установке и использовании на любой Linux-системе.
-
DetWinner: Особенностью данного инструмента является поддержка поиска схожих изображений. Он доступен через Flatpak, что обеспечивает широкую совместимость с различными дистрибутивами Linux.
Применение
Для эффективного управления дублирующимися файлами важно не только выбирать правильный инструмент, но и правильно его использовать. Перед удалением дубликатов всегда рекомендуется:
- Создать резервные копии данных.
- Провести анализ полученных результатов, особенно если используются агрессивные параметры удаления.
- Начинать с анализа тестового набора данных, чтобы убедиться в корректной работе инструмента.
Для интеграции инструмента в рабочий процесс, можно создать скрипты автоматизации, которые будут запускать указанные инструменты в указанные временные интервалы, либо по запросу пользователя, обеспечивая тем самым постоянное поддержание чистоты файловой системы.
Использование таких инструментов как dupeGuru или Czkawka с графическим интерфейсом особенно удобно для пользователей, которые предпочитают визуальное взаимодействие с программой. Эти инструменты предлагают интуитивно понятный опыт, что особенно важно для менее технически подкованных пользователей.
В заключение, выбор инструмента для удаления дублирующихся файлов в UbuntuStudio зависит от специфики задач и предпочтений пользователя. Среди представленных решений есть как мощные командные инструменты, так и удобные графические приложения, каждое из которых может эффективно использоваться для оптимизации организации данных на вашем устройстве.