![]() |
|
Модераторы: powerfox, ZeeLax |
![]()
|
|
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
Нужно проверить, является ли данный файл уникальным для определённого дерева каталогов. Вторая задача: сравнить деревья и найти уникальные файлы в каждом из них. Есть что-нибудь стандартное или нужны свои скрипты (в общем-то скрипты довольно простые)?
|
|||
|
||||
| Imple |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1546 Регистрация: 14.9.2007 Где: Алма-Ата Репутация: 21 Всего: 87 |
В каком плане уникальным? По содержимому, имени, или еще чему? Уточни плиз ;-)
-------------------- Не шалю, никого не трогаю, починяю сервер. |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
По содержимому. Считается, что файлы с одинаковым именем могут быть одинаковыми, но не всегда, а вот одинаковые по содержанию всегда имеют одинаковые имена. Скрипт делает следующее: ищет внутри дерева (папка, откуда выполнен скрипт) все файлы с именем, как и у $1, а потом использует cmp для каждого из найденых. В принципе, довольно просто (и несложно сделать сравнее деревьев, правда, простая версия без оптимизации будет долго работать). Вообще суть задачи заключается в следующем. Есть несколько деревьев каталогов, где часть каталогов совпадает, а часть нет. При этом содержимое может отличаться. Нужно получить новое дерево, которое содержит только уникальные файлы (при этом сохраняются имена каталогов). Любопытно, есть ли что-нибудь из коробки для решения данной задачи. |
|||
|
||||
| Imple |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1546 Регистрация: 14.9.2007 Где: Алма-Ата Репутация: 21 Всего: 87 |
Ммм... почти на 100% уверен что решения из коробки не существует. Прелагаю посмотреть в сторону алгоритмов хеширования и привязать их ПО для постоянного мониторинга изменения файлов (тем же inotify) и ведения базы актуальных хешей, в помощью которой можно в миг выдать любые уникальные файлы. Хотя, лучше воспользоваться SHA512, погрешность меньше
-------------------- Не шалю, никого не трогаю, починяю сервер. |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
Да мне, в принципе, на 1 раз нужно. Это архив фоток. Я иногда скидывал на машину А, а иногда Б. Соответственно есть бекапы (просто наболванил…) с обеих машин, а оригиналы могут быть обновлены. В итоге, получилось, что есть несколько дисков с одними и теми же фотографиями, но предположительно на каждом есть что-то уникальное. Ещё недавно в основном хранилище помереименовывал папки, что усложняет ручную сортировку. Хэши, наверное, упростят процесс (удобнее сравнить списки хэшей по папкам и отметить уникальные, чем рыскать бэшем). |
|||
|
||||
| Фантом |
|
||||||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: 10 Всего: 49 |
Можно соорудить такой простенький скрипт (например для каталога /home/user). Сначала
Это мы получили список md5 сумм (в виде файлов /tmp/dupsearch_сумма) и соответствующих им файлов (внутри). Далее удаляем суммы, которым соответствует только один файл:
В итоге получается какое-то количество списков дубликатов, с которыми можно что-то делать дальше. |
||||||
|
|||||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
Фантом, консольная магия во всей красе!
Пока не проверял, но главное — идея. Спасибо за красивое решение проблемы. |
|||
|
||||
![]()
|
| Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
|
В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |