borzole Napisano Październik 30, 2009 Zgłoszenie Share Napisano Październik 30, 2009 Jak się sprawdza czy dwa pliki dowolnego formatu są takie same? Niby jest program FSlint, ale potrzebuję coś sobie zautomatyzować w skrypcie. Pierwszy pomysł to wygenerowanie sum kontrolnych plików przy pomocy md5sum, ale sprawdzając ~400MB danych (6000 plików) czekam chyba ze 20 sekund. Mam do sprawdzenie kilka GB i jakoś mi się nie widzi tą metodą. Są jakieś szybkie algorytmy do tego? Skleciłem sobie taki kulawy skrypt, ale w między czasie chyba coś w nim sknociłem duplicate-md5 #!/bin/bash # duplicate-md5 -- wyświetla duplikaty plików na podstawie sum kontrolnych # użycie: # duplicate-md5 folder1 folder2 # lub bez parametrów dla bierzącego katalogu # baza LOG=/tmp/${0##*/}-$(date +%N).log # zbieranie sum kontrolnych plików _core(){ dir=${1:-.} echo -e "CURRENT JOB: $dir" find ${dir} -type f -exec \ md5sum '{}' >> $LOG \; echo -e "JOB IS FINISHED" } if [ $# == 0 ] ; then _core else for p in $@ ; do _core ${p} done fi # spr. czy są duplikaty A=$(cat $LOG | wc -l) B=$(cat $LOG | cut -d' ' -f1 | sort -u |wc -l) if [ $A != $B ]; then D=$(cat $LOG | cut -d' ' -f1 | uniq -d ) ILD=$(echo $D | wc -w) echo -e " Na $A plików masz $ILD duplikatów \n -----------------------------------------------" for i in $D ; do echo -e "SUMA = $i " grep $i $LOG | cut -d' ' -f2- done else echo " brak duplikatów " fi rm $LOG Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
jjj Napisano Październik 30, 2009 Zgłoszenie Share Napisano Październik 30, 2009 diff cmp Sortowałbym listing po rozmiarze plików i sprawdzał tylko te jednakowe. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Październik 30, 2009 Autor Zgłoszenie Share Napisano Październik 30, 2009 Bardzo dobry pomysł, dużo szybszy od mojego. Chyba się starzeje, że mi to do głowy nie przyszło. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się