Поиск дубликатов файлов в Linux
Дубликаты файлов могут появляться при сохранении резервных копий на диск, одновременном редактировании нескольких версий одного и того же файла или при изменении структуры каталогов. Одни и те же файлы могут быть сохранены несколько раз с различными именами или в разных папках и только засоряют дисковое пространство.
Охота на них каждый раз может стать большой проблемой. Но к счастью существует маленькая утилита которая может сберечь ваше время потраченное на поиск и уничтожение дубликатов файлов на компьютере — FSLint. Она написана на Python. Время навести порядок и удалить старые файлы.
Поиск дубликатов файлов в Linux
Вы можете установить утилиту из официальных репозиториев большинства дистрибутивов Linux. Давайте рассмотрим пример для Ubuntu. Сначала обновите списки пакетов:
Затем установите утилиту:
sudo apt install fslint
После завершения установки вы можете запустить утилиту из главного меню:
В главном окне программы можно выбрать различные варианты поиска неисправностей файловой системы. По умолчанию выбран Поиск дубликатов, ещё вам предстоит настроить папки, в которых будет выполнятся поиск, по умолчанию добавлена только домашняя папка:
После того как вы выберите каталоги, запустите поиск дубликатов Linux. Для этого надо нажать кнопку Поиск. Утилита сразу же начнёт выводить обнаруженные дубликаты файлов:
Когда поиск завершится вы сможете удалить файлы, которые вам не нужны, для этого выделите их мышью и нажмите кнопку Удалить. Программа спросит подтверждения действия и удалит файл:
Также вы можете объединить файлы дубликаты с помощью жесткой ссылки. По нажатию кнопки Объединить, утилита объединяет все файлы кроме выделенных. Кроме того, утилита позволяет искать несовместимые имена файлов, временные файлы, плохие ссылки, пустые директории и многое другое. Поэкспериментируйте с ней если будет желание.
Как найти повторяющиеся файлы в Linux и удалить их
Краткая информация: FSlint — отличный инструмент для поиска дубликатов файлов в Linux и их удаление.
FDUPES также находит файлы с тем же именем в Linux, но в командной строке.
Если у вас есть такая привычка скачивать все из Интернета, как я, у вас будет много дубликатов файлов.
Чаще всего я могу найти те же песни или кучу изображений в разных каталогах или в конечном итоге создать резервные копии некоторых файлов в двух разных местах.
Это боль, локализуя эти повторяющиеся файлы вручную и удаляя их для восстановления дискового пространства.
Если вы хотите избавиться от этой боли, существуют различные приложения Linux, которые помогут вам найти эти дубликаты файлов и удалить их.
В этой статье мы расскажем о том, как вы можете найти и удалить эти файлы в Ubuntu.
Примечание. Вы должны знать, что делаете.
Если вы используете новый инструмент, всегда лучше попробовать его в структуре виртуального каталога, чтобы выяснить, что он делает, прежде чем принимать его в корневую или домашнюю папку.
Кроме того, всегда лучше создавать резервную копию вашей системы Linux!
FSlint: инструмент GUI для поиска и удаления дубликатов файлов
FSlint помогает вам искать и удалять повторяющиеся файлы, пустые каталоги или файлы с неправильными именами.
Он имеет командную строку, а также графический интерфейс с набором инструментов для выполнения множества задач.
Чтобы установить FSlint, введите следующую команду в Terminal.
Откройте FSlint из поиска Dash.
FSlint включает в себя ряд опций на выбор.
Существуют варианты поиска дубликатов файлов, установленных пакетов, плохих имен, конфликтов имен, временных файлов, пустых каталогов и т. д.
Выберите путь поиска и задачу, которую вы хотите выполнить с левой панели, и нажмите «Найти», чтобы найти файлы.
После этого вы можете выбрать файлы, которые хотите удалить, и удалить их.
Вы можете щелкнуть по любому файловому каталогу из результата поиска, чтобы открыть его, если вы не уверены, и хотите дважды проверить его перед удалением.
Вы можете выбрать параметры расширенного поиска, где вы можете определить правила для исключения определенных типов файлов или исключить каталоги, которые вы не хотите искать.
FDUPES: инструмент CLI для поиска и удаления дубликатов файлов
FDUPES — это утилита командной строки для поиска и удаления дубликатов файлов в Linux.
Он может отображать дубликаты файлов в определенной папке или рекурсивно в папке.
Он запрашивает, какой файл сохранить перед удалением, а опция noprompt позволяет удалить все дубликаты файлов, сохраняя первый, не спрашивая вас.
Установка на Debian / Ubuntu
Установка на Fedora
Для рекурсивного поиска в папке используйте параметр -r
Это будет только список дубликатов файлов и не удалит их самостоятельно.
Вы можете вручную удалить дубликаты файлов или использовать -d, чтобы удалить их.
fdupes -d /path/to/folder
Это ничего не удалит самостоятельно, но отобразит все дубликаты файлов и даст вам возможность удалять файлы по одному или выбрать диапазон для его удаления.
Если вы хотите удалить все файлы без запроса и сохранения первого, вы можете использовать опцию noprompt -N.
На приведенном выше снимке экрана вы можете увидеть команду -d, показывающую все дубликаты файлов в папке, и попросит вас выбрать файл, который вы хотите сохранить.
Существует много других способов и инструментов для поиска и удаления дубликатов файлов в Linux.
Лично я предпочитаю инструмент командной строки FDUPES; это просто и не требует никаких ресурсов.
Записки админа и инженера
Инструменты пользователя
Инструменты сайта
Боковая панель
Содержание
Как найти и удалить дубликаты файлов в Linux
Я всегда резервирую файлы конфигурации или любые файлы где-нибудь на своем жестком диске перед редактированием или изменением, поэтому я могу восстановить их из резервной копии, если случайно сделал что-то неправильно.
Но проблема в том, что я периодически забываю удалить эти файлы, и мой жесткий диск заполняется большим количеством дубликатов файлов через определенный промежуток времени.
Мне иногда лень удалить старые файлы или просто боюсь, что могу удалить важные файлы.
Если вы похожи на меня и делаете по несколько резервных копий одинаковых файлов в разных каталогах, вы можете найти и удалить дубликаты файлов, используя приведенные ниже инструменты в Unix-подобных операционных системах.
Предупреждение:
Будьте осторожны при удалении дубликатов. Если вы не будете осторожны, это приведет к случайной потере данных. Я советую вам быть очень внимательными при использовании этих инструментов.
Поиск и удаление дубликатов файлов в Linux
Для целей этого руководства я собираюсь уделить внимание трем утилитам, а именно:
Эти три утилиты бесплатны, с открытым исходным кодом и работают в большинстве Unix-подобных операционных систем.
1. Rdfind
Rdfind, означает redundant data find, что переводится как — поиск избыточных данных, и представляет собой бесплатную утилиту с открытым исходным кодом для сквозного поиска дубликатов файлов в корне и/или внутри каталогов и подкаталогов. Он сравнивает файлы на основе их содержимого, а не по именам файлов. Rdfind использует алгоритм ранжирования для классификации оригинальных и повторяющихся файлов. Если у вас есть два или более одинаковых файла, Rdfind достаточно умен, чтобы найти исходный файл, и рассматривает остальные файлы как дубликаты. Как только он найдет дубликаты, он сообщит об этом вам. Вы можете либо удалить их, либо заменить их жесткими ссылками или символьными (мягкими) ссылками.
Установка Rdfind
Rdfind доступен в AUR. Таким образом, вы можете установить его в системах на базе Arch, используя любую вспомогательную программу AUR, такую как Yay, как показано ниже:
В Debian, Ubuntu, Linux Mint:
Использование
После установки просто запустите команду Rdfind вместе с указанием пути к каталогу в котором будет производиться поиск дубликатов файлов.
Как видно из приведенного выше снимка экрана, команда Rdfind сканирует каталог
/Downloads и сохраняет результаты в файле с именем results.txt в текущем рабочем каталоге. Вы можете просмотреть имя возможных дубликатов файлов в файле results.txt.
Просмотрев файл results.txt, вы можете легко найти дубликаты. Вы можете удалить дубликаты вручную.
Кроме того, вы можете использовать опцию -dryrun для поиска всех дубликатов в заданном каталоге без изменения чего-либо и вывода сводки в вашем терминале:
Когда вы найдете дубликаты, вы можете заменить их либо жесткимим ссылками, либо символьными ссылками.
Чтобы заменить все дубликаты на жесткие ссылки, запустите:
Чтобы заменить все дубликаты символьными (мягкими) ссылками, запустите:
У вас могут быть пустые файлы в каталоге, вы можете их проигнорировать. Для этого используйте параметр -ignoreempty, как показано ниже:
Если вам больше не нужны дубликаты файлов, просто удалите их вместо замены жесткими или символьными ссылками. Чтобы удалить все дубликаты, просто запустите:
Если вы не хотите игнорировать пустые файлы и удалять их вместе со всеми дубликатами, запустите:
Для получения дополнительной информации можно посмотреть раздел справки:
2. Fdupes
Fdupes — еще одна утилита командной строки для идентификации и удаления дубликатов файлов в указанных каталогах и подкаталогах. Это бесплатная утилита с открытым исходным кодом, написанная на языке программирования C. Fdupes идентифицирует дубликаты, сравнивая размеры файлов, частичные подписи MD5, полные подписи MD5 и, наконец, выполняет побайтового сравнение.
Подобно утилите Rdfind, Fdupes обладает большим функционалом для выполнения операций:
Установка Fdupes
Fdupes по умолчанию доступен в репозиториях большинства дистрибутивов Linux.
На Arch Linux и его вариантах, таких как Antergos, Manjaro Linux, установите его с помощью Pacman, как показано ниже:
В Debian, Ubuntu, Linux Mint:
Использование
Использование Fdupes довольно просто. Просто запустите следующую команду, чтобы найти дубликаты файлов в каталоге, например,
Как вы можете видеть, имеется дубликат файла в каталоге /home/test/Downloads/. Он показывает только дубликаты из родительского каталога. Как просмотреть дубликаты из подкаталогов? Просто используйте параметр -r, как показано ниже:
Теперь вы увидите дубликаты из каталога /home/test/Downloads/ и его подкаталогов.
Fdupes также может найти дубликаты сразу в нескольких каталогах:
Вы можете искать в нескольких каталогах, при этом в одном и в подкаталогах:
Вышеупомянутая команда выполняет поиск дубликатов в каталоге
/Downloads и в каталоге
/Documents/test с его подкаталогами.
Иногда вам может понадобиться узнать размер дубликатов в каталоге. Если это так, используйте параметр -S, как показано ниже:
Аналогично, чтобы просмотреть размер дубликатов в каталогах и подкаталогах, используйте параметр -Sr. Мы можем исключить пустые и скрытые файлы из поиска, используя -n и -A соответственно:
Первая команда исключает файлы с нулевой длиной из поиска, последняя исключает скрытые файлы при поиске дубликатов в указанном каталоге.
Чтобы просмотреть общую информацию о дублированных файлах, используйте параметр -m:
Чтобы удалить все дубликаты, используйте опцию -d.
Эта команда предложит вам сохранить файлы и удалить все остальные дубликаты. Просто введите любое число, чтобы сохранить соответствующий файл и удалить оставшиеся файлы. Будьте внимательны при использовании этой опции. Вы можете удалить исходные файлы, если не будете внимательны.
Если вы хотите сохранить первый файл в каждом наборе дубликатов и удалить остальные, не запрашивая каждый раз, используйте параметр -dN (не рекомендуется).
Чтобы удалить дубликаты, по мере их встречи, используйте флаг -I.
Более подробную информацию о Fdupes см. в разделе справки и в справочных страницах.
3. FSlint
FSlint — это еще одна утилита для поиска дубликатов файлов, которую я время от времени использую, чтобы избавиться от ненужных дубликатов файлов и освободить место на диске в моей системе Linux. В отличие от двух других утилит, FSlint имеет режимы GUI и CLI. Таким образом, это более удобный инструмент для новичков. FSlint не только находит дубликаты, но и плохие символьные ссылки, плохие имена, временные файлы, плохие IDS, пустые каталоги и не защищенные двоичные файлы и т.д.
Установка FSlint
FSlint доступен в AUR, поэтому вы можете установить его с помощью любых инструментов AUR.
В Debian, Ubuntu, Linux Mint:
Как только он будет установлен, запустите его из меню или панели запуска приложений.
Вот как выглядит FSlint GUI .
Как вы видете, интерфейс FSlint удобен и понятен. На вкладке Путь поиска добавьте путь к каталогу, который вы хотите отсканировать, и нажмите кнопку «Найти» в левом нижнем углу, чтобы найти дубликаты. Проверьте параметр рекурсивно для рекурсивного поиска дубликатов в каталогах и подкаталогах. FSlint быстро сканирует данный каталог и выведет их.
В списке выберите дубликаты, которые вы хотите очистить, и выберите действие, например, удалить,объединить, сохранить.
На вкладке Расширенные параметры поиска вы можете указать пути для исключения во время поиска дубликатов.
Параметры командной строки FSlint
FSlint предоставляет набор служебных программ CLI для поиска дубликатов в вашей системе:
Все эти утилиты доступны в каталоге /usr/share/fslint/fslint/.
Например, чтобы найти дубликаты в заданном каталоге, выполните следующие действия:
Аналогично, чтобы найти пустые каталоги:
Чтобы получить более подробную информацию о каждой утилите, например findup, выполните:
Для получения дополнительной информации о FSlint см. раздел справки и справочные страницы.
Заключение
Теперь вы знаете три инструмента для поиска и удаления ненужных дубликатов файлов в Linux. Среди этих трех инструментов я часто использую Rdfind. Это не означает, что две другие утилиты неэффективны, но до сих пор я доволен Rdfind. Выбор за вами