-
- В конечном итоге, нашёл и опробовал на системе с BTRFS утилиту
jdupes от Jody Bruchon'а. Nikolay_Po(676 знак., 25.03.2026 12:37, ссылка, ссылка)
- А что по времени быстрей: мой баш-скрипт или эта утилита? Eddy_Em(43 знак., 25.03.2026 14:30)
- jdupes быстрее, как мне показалось. - Nikolay_Po(25.03.2026 14:43)
- jdupes, по заявлениям автора, в 7 раз (в среднем) быстрее. Он
ругался, что тормозной fdupes отказался принимать его коммиты,
поэтому и сделал свой jdupes. - Nikolay_Po(25.03.2026 14:32)
- Если написать на сях или крестах, да еще и в shared memory
разместить БД, а не на диске, то еще шустрей должно быть. Разве что
все равно остается малый вариант коллизий, поэтому иногда для
надежности генерят два разных хэша, а то и вовсе побайтно
сравнивают файлы с одинаковыми хэшами... - Eddy_Em(25.03.2026 14:42)
- однако и "двух разных хэшей" возможны дубликаты файлов... так что
только бинарное сравнение - Zoro(25.03.2026 15:24)
- Это - долго и уныло. Я предпочитаю так не делать. Если случится
одна коллизия на триллион - ну и хрен с ней! - Eddy_Em(25.03.2026 16:32)
- ок. а если один файл это дарственная на луну, а другой пожизненный
эцих с гвоздями. - это тоже "ну и хрен с ней" ? - Zoro(26.03.2026 00:31)
- Конечно! Eddy_Em(73 знак., 26.03.2026 08:35)
- ок. а если один файл это дарственная на луну, а другой пожизненный
эцих с гвоздями. - это тоже "ну и хрен с ней" ? - Zoro(26.03.2026 00:31)
- Это - долго и уныло. Я предпочитаю так не делать. Если случится
одна коллизия на триллион - ну и хрен с ней! - Eddy_Em(25.03.2026 16:32)
- Ну он так и делает. По хешам, он ищет не одинаковые файлы, а разные. Одинаковые в любом раскладе сравнивает побайтно. - Nikolay_Po(25.03.2026 14:44)
- однако и "двух разных хэшей" возможны дубликаты файлов... так что
только бинарное сравнение - Zoro(25.03.2026 15:24)
- Если написать на сях или крестах, да еще и в shared memory
разместить БД, а не на диске, то еще шустрей должно быть. Разве что
все равно остается малый вариант коллизий, поэтому иногда для
надежности генерят два разных хэша, а то и вовсе побайтно
сравнивают файлы с одинаковыми хэшами... - Eddy_Em(25.03.2026 14:42)
- А что по времени быстрей: мой баш-скрипт или эта утилита? Eddy_Em(43 знак., 25.03.2026 14:30)
- а OpenZFS не подходит? Vit(1 знак., 17.02.2026 12:19, ссылка)
- Спасибо за ссылку на статью, не читал такой ещё, вроде. От ZFS меня отпугнула необходимость делать несколько томов... Nikolay_Po(97 знак., 19.02.2026 21:21, ссылка)
- И ещё: чтобы лучше сжимался образ виртуалки при бэкапе, нужно,
остановив оную, при помощи dd забить все свободное место нулями.
Потом удалить этот файл, и можно жать. - Eddy_Em(17.02.2026 08:25)
- Не, я делаю удобнее. У оркаловского ВиртуалБокса, есть хитрая поддержка TRIM. Я в госте, на BTRFS, даю команду fsttim -a. И система виртуализации, все свободные блоки размером, кратным мегабайта, просто освобождает из образа .vdi. Да, сам файл образа становится фрагментированым, дырявым, но реально уменьшается в размере. А чтобы процесс был максимально эффективным, перед триммингом, делаю дефрагментацию и балансировку. - Nikolay_Po(17.02.2026 12:43)
- Месье знает толк в троллинге) Судя по указанию типа фс) - ant3333(17.02.2026 01:54,
)
- Ну, прямо так официально… Eddy_Em(275 знак., 17.02.2026 00:05, ссылка)
- В общем, проверил на копии одной из рабочих виртуальных машин. Из 588тыс файлов, более 170тыс оказались с дубликатами. В основном, это были файлы пакетов МК в MPLAB X и файлы тулчейнов с компиляторами GCC. Они пересекались и между разными версиями одной платформы, и между платформами. Nikolay_Po(215 знак., 17.03.2026 19:02)
- Вижу в этом скрипте пример эффективного использования готовых приложений. Каждое из которых имеет ограниченный и отточенный функционал. Всё в идеологии UNIX. Спасибо за пример, Эдуард! - Nikolay_Po(17.03.2026 12:23)
- Ужас. Этого я и боялся. Строить и содержать свою БД... Думал, уже
как-то автоматизировали до уровня вызова одной утилиты... Nikolay_Po(826 знак., 17.02.2026 00:35)
- База временная и удаляется при выходе из скрипта. Я его написал
достаточно давно, когда ещё про fdupes не знал. По скорости мой
скрипт быстрей был, но не исключены редкие коллизии: если файлы
разные, а хэши одинаковые. Eddy_Em(294 знак., 17.02.2026 08:21)
- Как его запускать? По идее, нужно с обоими ключами сразу, и -l, и
-d. Иначе не сработает и удалит базу. Так? - Nikolay_Po(16.03.2026 15:16)
- Эти ключи взаимоисключающие. -d удаляет все дубликаты, кроме
одного, а -l делает их всех хардлинками (скажем, расплодил одних и
тех же песен в разных подкаталогах в /Music, места много жрут;
запускаешь скрипт, и сразу все компактизируется, но файлы никуда не
деваются). Eddy_Em(42 знак., 16.03.2026 16:07)
- Ну, я сделал клон виртуальной машины, у которой всё, кроме бута, на
томе BTRFS. И хочу запустить. Но не работает. Nikolay_Po(153 знак., 16.03.2026 17:48)
- Еще sha1sum нужен. Должно работать. А ошибка очень странная… - Eddy_Em(16.03.2026 18:30)
- Заменил /bin/sh на /bin/bash. Говорят, в Дебиане интерпретатор для
sh - dash. И для него скобки ничего не значат. Рекомендовали
заменить на bash. И оно поехало. Nikolay_Po(47 знак., 17.03.2026 11:29, ссылка)
- Посмотрел на работу - жаль, оно однопоточное. Не вижу насыщения ни
по скорости обмена с файловой системой, ни по объёму памяти.
Но вижу полностью загруженное одно ядро при свободных остальных. Его нельзя распараллелить, чтобы одно ядро отвечала за базу данных, а остальные брали себе по файлу для вычисления sha1? Nikolay_Po(168 знак., 17.03.2026 12:18)- Распараллелить можно, но тогда ещё по БД на каждый поток придется добавить. А потом их объединять. Eddy_Em(176 знак., 17.03.2026 13:35)
- Посмотрел на работу - жаль, оно однопоточное. Не вижу насыщения ни
по скорости обмена с файловой системой, ни по объёму памяти.
- В начале так и должно быть? Nikolay_Po(1 знак., 17.03.2026 10:38, картинка)
- Конечно, если в утф смотреть. Там же КОИ8-Р - единственная кошерная
кириллическая кодировка :) - Eddy_Em(17.03.2026 10:42)
- Скопипасть, пожалуйста, текстом сюда, почитаю. Не нашёл способа
открыть в Линуске. Попытка переключить кодировку происходит уже
постфактум, после того, как символы уже были не верно
интерпретированы как UTF-8. - Nikolay_Po(17.03.2026 10:49)
- Скачай оригинал с пастебина, а потом просто iconv -f koi8-r -t
utf8. Или ещё проще: enconv. - Eddy_Em(17.03.2026 13:36)
- Первый вариант даёт Nikolay_Po(847 знак., 17.03.2026 16:20)
- Ну вот же: Eddy_Em(3481 знак., 17.03.2026 17:30)
- А я прочитать не могу и думал, там инструкция, что и как запускать.
Так и не понял, требуется ли перед -d запускать -l,? - Nikolay_Po(17.03.2026 18:48)
- Если надо удалять, то -d, а если надо оставлять, но хардлинками, то -l. - Eddy_Em(17.03.2026 18:59)
- А я прочитать не могу и думал, там инструкция, что и как запускать.
Так и не понял, требуется ли перед -d запускать -l,? - Nikolay_Po(17.03.2026 18:48)
- Ну вот же: Eddy_Em(3481 знак., 17.03.2026 17:30)
- Первый вариант даёт Nikolay_Po(847 знак., 17.03.2026 16:20)
- Скачай оригинал с пастебина, а потом просто iconv -f koi8-r -t
utf8. Или ещё проще: enconv. - Eddy_Em(17.03.2026 13:36)
- Скопипасть, пожалуйста, текстом сюда, почитаю. Не нашёл способа
открыть в Линуске. Попытка переключить кодировку происходит уже
постфактум, после того, как символы уже были не верно
интерпретированы как UTF-8. - Nikolay_Po(17.03.2026 10:49)
- Конечно, если в утф смотреть. Там же КОИ8-Р - единственная кошерная
кириллическая кодировка :) - Eddy_Em(17.03.2026 10:42)
- Заменил /bin/sh на /bin/bash. Говорят, в Дебиане интерпретатор для
sh - dash. И для него скобки ничего не значат. Рекомендовали
заменить на bash. И оно поехало. Nikolay_Po(47 знак., 17.03.2026 11:29, ссылка)
- Еще sha1sum нужен. Должно работать. А ошибка очень странная… - Eddy_Em(16.03.2026 18:30)
- Ну, я сделал клон виртуальной машины, у которой всё, кроме бута, на
томе BTRFS. И хочу запустить. Но не работает. Nikolay_Po(153 знак., 16.03.2026 17:48)
- Эти ключи взаимоисключающие. -d удаляет все дубликаты, кроме
одного, а -l делает их всех хардлинками (скажем, расплодил одних и
тех же песен в разных подкаталогах в /Music, места много жрут;
запускаешь скрипт, и сразу все компактизируется, но файлы никуда не
деваются). Eddy_Em(42 знак., 16.03.2026 16:07)
- Как его запускать? По идее, нужно с обоими ключами сразу, и -l, и
-d. Иначе не сработает и удалит базу. Так? - Nikolay_Po(16.03.2026 15:16)
- База временная и удаляется при выходе из скрипта. Я его написал
достаточно давно, когда ещё про fdupes не знал. По скорости мой
скрипт быстрей был, но не исключены редкие коллизии: если файлы
разные, а хэши одинаковые. Eddy_Em(294 знак., 17.02.2026 08:21)
- В конечном итоге, нашёл и опробовал на системе с BTRFS утилиту
jdupes от Jody Bruchon'а. Nikolay_Po(676 знак., 25.03.2026 12:37, ссылка, ссылка)