URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8256
[ Назад ]

Исходное сообщение
"Рекурсивный md5sum, зависает"

Отправлено Gekt0r , 11-Май-09 15:11 
Всем привет,
хочу написать программу, которая считает рекурсивно контрольные суммы всех файлов на файловой системе.
Делаю на Перле, вроде, сделал.
Но только на этапе подсчета контрольных сумм она виснет. Непонятно, почему.
Можете подсказать, есть ли какие-то ограничения у md5sum? Почему такое может происходить

Содержание

Сообщения в этом обсуждении
"Рекурсивный md5sum, зависает"
Отправлено allez , 11-Май-09 19:34 
>Всем привет,
>хочу написать программу, которая считает рекурсивно контрольные суммы всех файлов на файловой
>системе.
>Делаю на Перле, вроде, сделал.
>Но только на этапе подсчета контрольных сумм она виснет. Непонятно, почему.
>Можете подсказать, есть ли какие-то ограничения у md5sum? Почему такое может происходить

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

P. S. Вам эту задачу в учебном заведении задали?


"Рекурсивный md5sum, зависает"
Отправлено Gekt0r , 11-Май-09 20:03 
>[оверквотинг удален]
>>Но только на этапе подсчета контрольных сумм она виснет. Непонятно, почему.
>>Можете подсказать, есть ли какие-то ограничения у md5sum? Почему такое может происходить
>
>Покажите свой скрипт. Вы, похоже, допустили где-то ошибку и вместо того, чтобы
>отыскать и исправить
>ее, начинаете искать несуществующие изъяны у использованного инструмента. Специально прогнал эту
>задачу на трех десятках тысяч файлов в каталогах разной степени вложенности -
>не зависает.
>
>P. S. Вам эту задачу в учебном заведении задали?

это связано с моими исследованиями (:

вот скрипт, на перле:

#!/usr/bin/perl -w

    system ("ls / -aR > result");
    $path;
    @list;
    
    open (SDATA, result);  #тут мы получили список всех файлов, для которых прогоним md5sum
    while (my $line = <SDATA>) {
        chomp($line);
        if ($line =~ /^\//) {
        chop ($line);
        $path = $line;
        }
        elsif ($line ne "." && $line ne "..") {

        my $toFile = $path.'/'.$line;   #генерируем имя файла,
                system ("md5sum $toFile");      #и считаем контрольную сумму
           }
         }
вот в этой проге на каком-то этапе она словно зависает, приходится закрывать терминал

можете поделиться своей? Или указать, что я сделал не так?


"Рекурсивный md5sum, зависает"
Отправлено angra , 12-Май-09 01:18 
Мда, лучше четко скажите чего вам надо. Проще дать вам готовый однострочник(почти наверняка это будет find . -type f -exec md5sum '{}' \;), чем комментировать все дурости, которые вы наделали.

"Рекурсивный md5sum, зависает"
Отправлено allez , 12-Май-09 04:51 
>можете поделиться своей? Или указать, что я сделал не так?

Я не мудрствовал лукаво и использовал ту же команду, которую указал angra.


"Рекурсивный md5sum, зависает"
Отправлено Gekt0r , 12-Май-09 22:31 
>>можете поделиться своей? Или указать, что я сделал не так?
>
>Я не мудрствовал лукаво и использовал ту же команду, которую указал angra.
>

все равно виснет. Каждый раз на файле /proc/kmsg


"Рекурсивный md5sum, зависает"
Отправлено Андрей , 13-Май-09 01:21 
Высчитывать md5 для /proc безсмысленно, так как содержимое /proc постоянно меняется.
man proc.



"Рекурсивный md5sum, зависает"
Отправлено Gekt0r , 15-Май-09 12:41 
>Высчитывать md5 для /proc безсмысленно, так как содержимое /proc постоянно меняется.
>man proc.

аминь. Одну причину зависания выяснили. Хотя постом выше написано, что работает "на ура".

Какие-нибудь еще могут быть глюки с этим?


"Рекурсивный md5sum, зависает"
Отправлено allez , 15-Май-09 13:50 
>аминь. Одну причину зависания выяснили. Хотя постом выше написано, что работает "на ура".

В моем сообщении нигде не сказано о вычислении хеша MD5 для содержимого /proc. На всякий случай
уточню: я выполнил команду find ~ -type f -exec md5sum {} \;, которая отработала на моем
домашнем каталоге.


>Какие-нибудь еще могут быть глюки с этим?

Как было сказано выше, не следует прогонять md5sum на динамически изменяющихся файлах. Так что
кроме /proc нужно исключать из обработки как минимум /var/log и /tmp...


"Рекурсивный md5sum, зависает"
Отправлено Gekt0r , 16-Май-09 15:55 
>>Какие-нибудь еще могут быть глюки с этим?
>
>Как было сказано выше, не следует прогонять md5sum на динамически изменяющихся файлах.
>Так что
>кроме /proc нужно исключать из обработки как минимум /var/log и /tmp...

поможете с командой?
Для того, чтобы исключить /proc я прогнал find / -type d -name proc -prune -o -exec md5sum {} \;

В этот раз команда зависла в каталоге /var
я попробовал
find / -type d -name proc -prune -name var -prune -o -exec md5sum {} \;

команда все равно зависла в каталоге var
как исключить сразу несколько каталогов? Я в инете поискал, не нашел


"Рекурсивный md5sum, зависает"
Отправлено angra , 16-Май-09 16:45 
А может пора уже сказать зачем вам понадобилось делать md5sum от корня? Сдается вы изобретаете велосипед, причем  на ручном приводе и с треугольными колесами :)

"Рекурсивный md5sum, зависает"
Отправлено Gekt0r , 16-Май-09 16:56 
>А может пора уже сказать зачем вам понадобилось делать md5sum от корня?
>Сдается вы изобретаете велосипед, причем  на ручном приводе и с
>треугольными колесами :)

мне нужен максимально подробный "снимок" файловой системы. Файлы и их контрольные суммы.
Кроме как почитать для каждого md5, я не знаю, как это можно сделать.

Зачем это, пока говорить не могу :(

Как можно несколько каталогов из find исключить?) Или есть вариант приделать велосипеду круглые колеса?))


"Рекурсивный md5sum, зависает"
Отправлено angra , 16-Май-09 17:30 
>Как можно несколько каталогов из find исключить?)

Ну можно почитать опции find, только при этом не забывать, что многое зависит от версии. Я бы просто использовал find | grep -v 'regex' | xargs или возможности шелла по заданию стартовых точек для find вместо /

>Или есть вариант приделать велосипеду круглые колеса?))

Это вам виднее, вы же знаете для чего вы все это делаете. Если для безопасности, то есть вещи типа rkhunter, если для синхронизации, то есть rsync. Практически наверняка есть готовая тулза, которая делает хеши нужных файлов в системе. Удачи в работе над велосипедом.


"Рекурсивный md5sum, зависает"
Отправлено Самый Анонимус , 17-Май-09 01:16 
>мне нужен максимально подробный "снимок" файловой системы. Файлы и их контрольные суммы.

aide