LINUX.ORG.RU

Убивание дубликатов при копировании

 ,


0

1

Есть диск А на который за долгие годы наваливалось всякое
Есть диск Б, куда хотца перенести всё это
На диске А довольно много дубликатов ибо многое наваливалось не по одному разу, при этом диск А не шибко быстрый и шибко здоровый - не хотелось бы терять ночь на скан всех файлов до копирования - наверняка же есть готовое решение чтоб копировать одновременно с гроханьем дубликатов?

п.с. идея «писать скриптом мд5 для каждого файла в условный файлик и если такой мд5 уже в файлике был то не копировать явную копию» это хорошо, но вдруг есть готовое решение с оптимизированным «файликом»

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

★★★★

Ответ на: комментарий от anonymous

rdfind-ом по диску пройдись.

это примерно ночь по времени
копирование то-же ночь
думал объединить в один проход чтоб за одну ночь получить готовую копию без дублей :-)

rukez ★★★★
() автор топика

fslint в помощь - ищет дубликаты и из него затем можно удалить дубликаты, пустые папки, подправить плохие имена и много чего ещё

AKonia ★★
()
Последнее исправление: AKonia (всего исправлений: 2)
Ответ на: комментарий от rukez

это примерно ночь по времени

С какой такой радости? Изначально разные файлы (разный размер) он не сравнивает. «Одинаковые» сравнивает «по-хитрому».

anonymous
()
Ответ на: комментарий от AKonia

fslint в помощь

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

rukez ★★★★
() автор топика
Ответ на: комментарий от rukez

как не копировать… при… копировании данных

Никак. Либо копируешь, либо не копируешь. Но строго либо то, либо то.

anonymous
()
Ответ на: комментарий от anonymous

С какой такой радости? Изначально разные файлы (разный размер) он не сравнивает. «Одинаковые» сравнивает «по-хитрому».

очень много данных
он одно только дерево диска строит больше часа (дальше ждать надоело :-) )
я не говорю что поиск дублей = копированию, просто и то и то - задача на ночь (точно больше 4 часов на задачу, копирование в прошлый раз вроде часов 12-13 заняло) но при копировании поиск дублей получается по сути на халяву если оно более-менее оптимизировано

в целом, самый простой вариант, который видится из накидывания на коленке:

  • забираем размер файла на диске А
  • смотрим есть ли в массиве длинн, если нет то кидаем в массив и копируем файл
  • если есть то копируем содержимое в ОЗУ (дабы дважды не читать), вычисляем мд5, проверяем в массиве хэшей - если такого нет то выгружаем из ОЗУ на диск Б

но если кто-то уже сделал более грамотно с выгрузкой фрагментами (нет повода хэшить весь файл в гиг если он отличается на первой сотне мегабайт) то дайте знать :-)

rukez ★★★★
() автор топика
Ответ на: комментарий от rukez

А это как ? Т.е. как будут разрешены дубликаты ? Т.е. ладно если весь хлам однородный, или даже лежит в одной папке, то просто пройдитесь fslintом, удалите и копируйте, но если это не так, то отсев как проводить собираетесь ? По мне самое ровное решение - fslint, удалить повторы и скопировать результат.

AKonia ★★
()
Ответ на: комментарий от rukez

вычисляем мд5

rdfind делает «мудрее». Он сначала первый и последний символы сравнивает.

anonymous
()
Ответ на: комментарий от anonymous

На тебе, немного питона: https://github.com/Pseudozz/deduplicator

спасибо, долго искал конец файла в этом вашем питоне ))))

в целом да, он работает по правильной логике, только валит всё в одну папку, если я правильно понял

rdfind делает «мудрее». Он сначала первый и последний символы сравнивает.

ну вот, я же говорю что наверняка кто-то уже сделал хорошо и с оптимизацией, жаль он копировать не умеет

п.с. видимо проще самому набацать завтра на коленке или запустить уже этот рфайнд и пойти спатьки (как видимо и поступали все, кто хотел написать но спать победило)

rukez ★★★★
() автор топика
Ответ на: комментарий от rukez

а да, забыл, это же «десктоп почти готовый рхел»

[orlovsn@localhost ~]$ sudo dnf search rdfind
Last metadata expiration check: 0:41:04 ago on Tue 21 Sep 2021 08:11:22 PM MSK.
No matches found.  
[orlovsn@localhost ~]$ sudo dnf search fslint
Last metadata expiration check: 0:43:46 ago on Tue 21 Sep 2021 08:11:22 PM MSK.
No matches found.
[orlovsn@localhost ~]$ yum repolist
repo id                                   repo name
OL8_codeready_builder                     codeready
cuda-rhel8-11-4-local                     cuda-rhel8-11-4-local
cuda-rhel8-x86_64                         cuda-rhel8-x86_64
epel                                      Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                              Extra Packages for Enterprise Linux Modular 8 - x86_64
google-chrome                             google-chrome
ol8_UEKR6                                 Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_appstream                             Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest                         Oracle Linux 8 BaseOS Latest (x86_64)
rpmfusion-free-updates                    RPM Fusion for EL 8 - Free - Updates
teamviewer                                TeamViewer - x86_64

рукалицо

rukez ★★★★
() автор топика
Ответ на: комментарий от anonymous

Из сырцы собери

йеп! отправил в прогон, пущай потрудится заместо меня ))

rukez ★★★★
() автор топика
Ответ на: комментарий от ox55ff

Ищи хипстерскую фс с дедупликацией.

изначально была такая идея но нет:

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

тут и так слишком много старого гемора набралось, вникать в зфс под олом совсем не хочется

rukez ★★★★
() автор топика
Ответ на: комментарий от PRN

fdupes пробовал? Может быстрее будет.

он емнип на построении дерева совсем уходил в себя

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

  • дюна норм, хотя Линч канешн в мЕньшее время уместил куда больше и куда лучше но чо уж
  • It seems like you have 671067 files that are not unique Totally, 444 GiB can be reduced.
rukez ★★★★
() автор топика
Ответ на: комментарий от rukez

но при копировании поиск дублей получается по сути на халяву если оно более-менее оптимизировано

Не получается.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Чой-то?
Скорость хеширования из озу - гигабайты/сек, скорость вычитывания с хдд - сотни мегабайт/сек - всего два параллельных потока (пока один читает второй считает) уже дают околонулевые накладные по времени

rukez ★★★★
() автор топика
Ответ на: комментарий от anonymous

Какое сравнение после хеша?
Зачем база? Пихай в массив в озу - при хеше в 128 бит, в один метр озу влезает 65к файлов, не думаю что у тебя больше гига озу по итогам. Один гиг озу перебирается всяк меньше одной десятой секунды, а если ты начнёшь оптимизироваться дальше и за один проход проверяя по несколько хэшей то сможешь разменять дополнительные файловые буферы в озу на скорость поиска

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

rukez ★★★★
() автор топика
Ответ на: комментарий от rukez

за прошедшее время уже несколько раз можно было успеть набросать на си нужную прогу (без украшательств)

firkax ★★★★★
()
Ответ на: комментарий от firkax

Да я уже все сделал, жду пока массив новый инициализируется :-)

rukez ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.