Linux поиск дубликатов файлов fdupes

Обновлено: 06.07.2024

Возможно ли найти дубликаты файлов на моем диске, которые по битам идентичны, но имеют разные имена файлов?

Обратите внимание, что любой возможный способ сделать это неизменно должен сравнивать каждый файл в вашей системе с каждым другим файлом . Так что это займет много времени, даже если вы используете ярлыки. @Shadur, если все в порядке с контрольными суммами, сводится к сравнению только хешей - которые в большинстве систем имеют порядок 10 ^ (5 + -1), обычно <64-байтовые записи. Конечно, вы должны прочитать данные хотя бы один раз. :) @Shadur Это не правда. Вы можете сократить время, проверив совпадения st_size s, исключив те из них, которые имеют только одно и то же, а затем вычислив только md5sums для сопоставления st_size s. @Shadur, даже невероятно глупый подход, запрещающий любые операции хеширования, может сделать это в Θ (n log n) сравнениях, а не в Θ (n²), используя любой из нескольких алгоритмов сортировки (на основе содержимого файла). @ChrisDown Да, сопоставление размеров было бы одним из ярлыков, которые я имел в виду.

fdupes могу сделать это. От man fdupes :

Ищет по заданному пути дубликаты файлов. Такие файлы находят путем сравнения размеров файлов и подписей MD5 с последующим побайтовым сравнением.

В Debian или Ubuntu вы можете установить его с помощью apt-get install fdupes . В Fedora / Red Hat / CentOS вы можете установить его с yum install fdupes . На Arch Linux вы можете использовать pacman -S fdupes , а на Gentoo emerge fdupes .

Чтобы запустить проверку, исходящую из корня вашей файловой системы, которая, вероятно, займет много времени и памяти, используйте что-то вроде fdupes -r / .

Как указано в комментариях, вы можете получить самые большие дубликаты, выполнив следующие действия:

Это сломается, если ваши имена файлов содержат переводы строк.

Благодарю. Как я могу отфильтровать самый большой дупе? Как я могу сделать размеры удобочитаемыми? @student: используйте что-то вроде строки (убедитесь, что fdupes просто выводит имена файлов без дополнительной информации, или вырежьте или отредактируйте, чтобы просто сохранить это): fdupes . | xargs ls -alhd | egrep 'M |G ' чтобы сохранить файлы в удобочитаемом формате и только файлы с размером в мегабайтах или гигабайтах. Измените команду в соответствии с реальными результатами. @OlivierDulac Вы никогда не должны анализировать ls . Обычно это хуже, чем ваш вариант использования, но даже в вашем случае вы рискуете получить ложные срабатывания. @student - После того, как у вас есть имена файлы, du конвейер sort вам скажут. @ChrisDown: это правда, это плохая привычка, которая может давать ложные срабатывания. Но в этом случае (интерактивное использование, и только для отображения, без «rm» или чего-либо подобного, прямо полагаясь на него) это хорошо и быстро ^^. Мне нравятся эти страницы, на которые вы ссылаетесь, кстати (я их читаю уже несколько месяцев и полна многих полезных сведений)

Еще один хороший инструмент fslint :

fslint - это набор инструментов для поиска различных проблем с файловыми системами, включая дубликаты файлов и проблемные имена файлов и т. д.

Отдельные инструменты командной строки доступны в дополнение к графическому интерфейсу, и для доступа к ним можно изменить или добавить в каталог $ PATH каталог / usr / share / fslint / fslint при стандартной установке. Каждая из этих команд в этом каталоге имеет параметр --help, который более подробно описывает ее параметры.

В системах на основе Debian вы можете установить его с:

Вы также можете сделать это вручную, если вы не хотите или не можете установить сторонние инструменты. Большинство таких программ работают путем вычисления контрольных сумм файлов . Файлы с одинаковой суммой md5 почти наверняка содержат одинаковые данные. Итак, вы можете сделать что-то вроде этого:

Пример вывода (имена файлов в этом примере одинаковые, но они также будут работать, когда они разные):

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

Поиск и замена повторяющихся файлов - это обычное требование для большинства пользователей компьютеров. Поиск и удаление дубликатов файлов - утомительная работа, требующая времени и терпения. Поиск повторяющихся файлов может быть очень простым, если ваша машина работает под управлением GNU/Linux, благодаря утилите «fdupes».


Fdupes - это утилита для Linux, написанная Адрианом Лопесом на языке программирования C и выпущенная под лицензией MIT. Приложение может находить повторяющиеся файлы в заданном наборе каталогов и подкаталогов. Fdupes распознает дубликаты, сравнивая сигнатуру файлов MD5 с последующим побайтовым сравнением. С помощью Fdupes можно передать множество параметров для перечисления, удаления и замены файлов с жесткими ссылками на дубликаты.

Сравнение начинается в следующем порядке:

Сравнение размера> Частичное сравнение подписи MD5> Полное сравнение подписи MD5> Байт-сравнение.

Установите fdupes в Linux

Установить последнюю версию fdupes (fdupes версии 1.51) так же просто, как запустить следующую команду в системах на основе Debian, таких как Ubuntu и Linux Mint.

В системах на базе CentOS/RHEL и Fedora вам необходимо включить репозиторий epel для установки пакета fdupes.

Примечание: стандартный менеджер пакетов yum заменен на dnf начиная с Fedora 22…

Как использовать команду fdupes?

1. Для демонстрации давайте создадим несколько повторяющихся файлов в каталоге (скажем, tecmint) просто так:

После выполнения вышеуказанной команды давайте проверим, созданы ли дублирующиеся файлы или нет, с помощью команды ls.

Приведенный выше сценарий создает 15 файлов, а именно tecmint1.txt, tecmint2.txt… tecmint15.txt, и все файлы содержат одни и те же данные, т.е.

2. Теперь найдите повторяющиеся файлы в папке tecmint.

3. Рекурсивно искать дубликаты в каждом каталоге, включая его подкаталоги, используя параметр -r.

Он выполняет рекурсивный поиск по всем файлам и папкам, в зависимости от количества файлов и папок, для сканирования дубликатов потребуется некоторое время. За это время вам будет представлен общий прогресс в терминале, примерно так.

4. Посмотрите размер дубликатов, обнаруженных в папке, с помощью опции -S.

5. Вы можете увидеть размер повторяющихся файлов для каждого каталога и подкаталогов, встречающихся внутри, используя параметры -S и -r одновременно, как:

6. Кроме рекурсивного поиска в одной папке или во всех папках, вы можете выбрать две или три папки, если это необходимо. Не говоря уже о том, что при необходимости вы можете использовать опции -S и/или -r.

7. Чтобы удалить повторяющиеся файлы с сохранением копии, вы можете использовать опцию «-d». При использовании этой опции следует проявлять особую осторожность, иначе вы можете потерять необходимые файлы/данные и помните, что процесс невозможно восстановить.

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

8. С точки зрения безопасности, вы можете распечатать вывод «fdupes» в файл, а затем проверить текстовый файл, чтобы решить, какой файл удалить. Это снижает вероятность случайного удаления вашего файла. Вы можете:

Примечание. Вы можете заменить «/ home» на нужную папку. Также используйте опции ‘-r’ и ‘-S’, если вы хотите осуществлять рекурсивный поиск и размер печати, соответственно.

9. Вы можете исключить первый файл из каждого набора совпадений, используя опцию ‘-f’.

Сначала список файлов каталога.

а затем исключить первый файл из каждого набора совпадений.

10. Проверить установленную версию fdupes.

11. Если вам нужна помощь по fdupes, вы можете использовать переключатель ‘-h’.

На этом все. Сообщите мне, как вы до сих пор находили и удаляли дубликаты файлов в Linux? а также скажите свое мнение об этой утилите. Разместите свой ценный отзыв в разделе комментариев ниже и не забудьте поставить лайк/поделиться с нами и помочь нам распространиться.

Я работаю над другой утилитой, называемой fslint, для удаления повторяющихся файлов, скоро опубликую, и вы, люди, будете любить читать.

about находит повторяющиеся файлы

В следующей статье мы рассмотрим три инструменты для поиска и удаления повторяющихся файлов в Ubuntu. Вы можете обнаружить, что ваш компьютер более чем один раз переполнен повторяющимися файлами. Однажды вы обнаружите, что ваш жесткий диск заполнен несколькими копиями одних и тех же файлов в разных каталогах резервных копий. Проблема возникает из-за того, что часто забывают очистить эти файлы, и на жестком диске начинает накапливаться слишком много повторяющихся файлов по прошествии определенного периода времени.

Вот почему всегда хорошо знать, как найти и удалить повторяющиеся файлы. Для этого мы можем использовать инструменты, описанные ниже в разделе Unix-подобные операционные системы. Будьте осторожны при удалении повторяющихся файлов. Если у вас его нет, это может привести к случайной потере данных. Поэтому при использовании этих средств рекомендуется обращать внимание.

Найдите и удалите повторяющиеся файлы в Ubuntu

Для этой задачи мы увидим три доступных инструмента; Rdfind, Fdupes, Fslint.

Эти три утилиты бесплатно, с открытым исходным кодом и работает в большинстве Unix-подобных операционных систем.

Rdfind

Rdfind это полезность с открытым исходным кодом и бесплатно найти повторяющиеся файлы в каталогах и подкаталогах.

Сравните файлы на основе их содержания, а не их имен архив. Rdfind использует алгоритм классификации, чтобы различать оригинальные и повторяющиеся файлы. Если он находит два или более одинаковых файла, Rdfind достаточно умен, чтобы найти исходный файл. Как только вы найдете дубликаты, вы сообщите нам о них. Мы можем принять решение об их удалении или замене.

Установка Rdfind

Открываем терминал (Ctrl + Alt + T) и пишем:

установить Rdfind

Использовать

После установки вам просто нужно запустите команду Rdfind вместе с путем где мы хотим искать повторяющиеся файлы.

Rdfind работает

Как видно на скриншоте выше, команда Rdfind просканирует каталог.

/ Загрузки. Он сохранит результаты в файл с именем results.txt, расположенный в текущем рабочем каталоге. Может увидеть имена возможных повторяющихся файлов в файле results.txt.

Вы можете получить более подробную информацию обо всех предлагаемых им возможностях через раздел справки или страницы руководства:

rdfind помощь

Fdupes

Fdupes - еще одна утилита командной строки для определять и удалять повторяющиеся файлы в указанных каталогах и подкаталогах. Это бесплатная утилита с открытым исходным кодом написан на языке программирования C.

Fdupes идентифицирует дубликаты сравнение размеров файлов, частичные подписи MD5, полные подписи MD5 и, наконец, побайтовое сравнение для подтверждения.

Она похожа на утилиту Rdfind, но в Fdupes есть несколько опций для выполнения операций, таких как:

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

Установка Fdupes

Открываем терминал (Ctrl + Alt + T) и пишем:

установка fdupes

Использовать

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

fdupes работает

Мы также можем поиск повторяющихся файлов в подкаталогах, просто используя параметр -r.

к удалить все дубликаты, вариант использования будет -d.

Эта команда позволит нам выбрать сохранение оригинала и удаление всех других повторяющихся файлов. Здесь нужно быть осторожным. Мы можем легко удалить исходные файлы, если не будем осторожны.

Чтобы получить больше информации о том, как использовать fdupes, см. раздел справки или справочные страницы:

fdupes помощь

FSlint

FSlint это еще одна утилита для поиска повторяющихся файлов, которые я нашел в Github. В отличие от двух других утилит, FSlint имеет режимы GUI и CLI.. Следовательно, это более простой в использовании инструмент.

FSlint не только находит дубликаты, но также символические ссылки, неправильные имена, временные файлы, неправильные IDS, пустые каталоги и не удаленные двоичные файлы и т. Д.

Установить Fslint

Открываем терминал (Ctrl + Alt + T) и пишем:

fslint установить

Использовать

Как только он будет установлен, мы сможем запустить его из меню приложения.

пусковая установка fslint

Как видите, интерфейс FSlint прост в использовании и не требует пояснений. Во вкладке Путь поиска, мы добавим маршрут, который хотим просканировать. Нам нужно будет только нажать кнопку «Поиск», чтобы найти дубликаты. Отметьте опцию «Рекурсивно?» для рекурсивного поиска дубликатов в каталогах и подкаталогах. FSlint быстро просканирует указанный каталог и выведет его список.

fslint gui

Из списка выберите дубликаты, которые хотите очистить. Вы можете работать с любым из них с помощью таких действий, как «Сохранить», «Удалить», «Объединить» и «Символическая ссылка». На вкладке «Расширенные параметры поиска» вы можете указать пути, исключаемые при поиске дубликатов.

Чтобы получить подробнее о FSlint, см. раздел справки и справочные страницы.

fslint справка

Это всего лишь три эффективных инструмента для поиска и удаления ненужных дубликатов файлов в Gnu / Linux.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Убунлог » Ubuntu » Дублирующиеся файлы, как найти и удалить их в Ubuntu


Мануал

Fdupes описание

Он распознает дубликаты, используя подпись MD5 файлов вместе с байтовым сопоставлением.

Параметры списка, замены и удаления могут использоваться вместе с fdupes.

Он запрограммирован на языке C и выпущен под лицензией MIT. Установка fdupes объясняется в этой статье

fdupes сравнивает файлы в следующем порядке:

Сравнение размеров -> Частичное сравнение подписи MD5 -> Полное сравнение подписи MD5 -> Сравнение байтов с байтами.

Установка fdupes в Linux

Выполните следующую команду для установки последней версии fdupes.

В системе Fedora и CentOS / RHEL

Включите репозиторий epel перед установкой пакета fdupes.

Затем запустите следующую команду для установки:

Важно. В Fedora менеджер пакетов yum по умолчанию заменяется на «dnf».

В системах на базе Debian

Как использовать команду fdupes

Давайте создадим несколько повторяющихся файлов в разделе «/home/user1/ itsecforu».

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

Теперь мы создали 25 файлов, и все файлы содержат одни и те же данные: «Welcome to itsecforu».

Поиск дубликатов файлов

Выполните следующую команду для поиска дубликатов файла:

Используйте параметр -r для поиска рекурсивно повторяющихся файлов в каждом каталоге, включая его подкаталоги.

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

Чтобы просмотреть размер повторяющихся файлов для каждого каталога и подкаталогов, встречающихся внутри, используйте параметр «-Sr» следующим образом:<

Как удалить дубликаты файлов

Здесь, за исключением файла file17.txt, все остальные файлы удаляются.

Для обеспечения безопасности вы также можете показать вывод «fdupes» в файл, а затем удалить, используя следующую команду:

Важно: вы можете заменить «/ home» на желаемую папку.

Также используйте опции «-r» и «-S», если вам нужно искать рекурсивно и размер печати.

Читайте также: