Szukam szybkiego sposobu na porównanie zawartości katalogu. Czy można zrobić sumę kontrolną md5 (lub równoważną sumę kontrolną) dla całego katalogu?
Korzystanie z systemu Ubuntu Linux
Szukam szybkiego sposobu na porównanie zawartości katalogu. Czy można zrobić sumę kontrolną md5 (lub równoważną sumę kontrolną) dla całego katalogu?
Korzystanie z systemu Ubuntu Linux
Odpowiedzi:
Pewnie - md5sum directory/*
Jeśli potrzebujesz czegoś bardziej elastycznego (powiedzmy, do rekurencji katalogu lub porównania skrótu), spróbuj md5deep.
apt-get install md5deep
md5deep -r directory
Aby porównać strukturę katalogów, możesz dać jej listę skrótów do porównania:
md5deep -r -s /directory1 > dir1hashes
md5deep -r -X dir1hashes /directory2
Spowoduje to wyświetlenie wszystkich plików w katalogu2, które nie pasują do katalogu1.
To nie pokaże plików, które zostały usunięte z katalogu 1 lub plików, które zostały dodane do katalogu 2.
-j0
która wyłącza wielowątkowość (patrz strona podręcznika).
md5deep
z sudo apt-get install md5deep
dnia Ubuntu 16.04
ale kiedy próbowałem przeczytać stronę man on mi mówi, że> No ręczne wprowadzanie do md5deep
Jeśli chcesz zobaczyć, co różni się (jeśli w ogóle) między dwoma katalogami, rsync będzie dobrym wyborem.
rsync --archive --dry-run --checksum --verbose /source/directory/ /destination/directory
Spowoduje to wyświetlenie listy różnych plików.
diff -qr /source/directory/ /destination/directory/
pokaże także pliki, które się różnią.
username@hostname:/destination/directory
myślę, że odpowiedziałem już na to z następującą odpowiedzią:
find . -xtype f -print0 | xargs -0 sha1sum | cut -b-40 | sort | sha1sum
daje: b1a5b654afee985d5daccd42d41e19b2877d66b1
Chodzi o to, że hashujesz wszystkie pliki wycinając skróty jeden w linii, sortujesz je i hash, co daje jeden skrót. nie zależy to od nazw plików.
Aplikacja cfv jest bardzo przydatna, nie tylko może sprawdzać i tworzyć sumy kontrolne MD5, może także wykonywać CRC32, sha1, torrent, par, par2.
aby utworzyć plik sumy kontrolnej CRC32 dla wszystkich plików w bieżącym katalogu:
cfv -C
aby utworzyć plik sumy kontrolnej MD5 dla wszystkich plików w bieżącym katalogu:
cfv -C -t md5 -f "bieżący katalog.md5sums"
Aby utworzyć osobny plik sumy kontrolnej dla każdego podkatalogu:
cfv -C -r
Aby utworzyć „super” plik sumy kontrolnej zawierający pliki we wszystkich podkatalogach:
cfv -C -rr
Użyłem hashdeep, jak wyjaśniono w tej odpowiedzi askubuntu: Sprawdź poprawność skopiowanych plików :
Aby obliczyć sumy kontrolne:
$ cd <directory1>
$ hashdeep -rlc md5 . > ~/hashOutput.txt
Aby zweryfikować i wymienić różnice:
$ cd <directory2>
$ hashdeep -ravvl -k ~/hashOutput.txt .
hashdeep: Audit passed
Input files examined: 0
Known files expecting: 0
Files matched: 13770
Files partially matched: 0
Files moved: 0
New files found: 0
Known files not found: 0
Ma to przewagę nad md5deep, ponieważ wyświetla zmienione (przeniesione), dodane i usunięte pliki, a także pozwala uniknąć problemu z plikami o długości 0 wskazanymi na dole http://www.meridiandiscovery.com/how- do / validating-copy-results-using-md5deep .
To zadziałało dla mnie: (uruchom go w katalogu, który Cię interesuje)
md5deep -rl . | awk '{print $1}' | sort -n | md5sum
Możesz utworzyć sumy MD5 każdego pliku, uporządkować te sumy kontrolne alfabetycznie i mieć je (z nowymi liniami lub bez). Ponieważ MD5 jest kryptograficzny, powinien dobrze działać z haszami skrótów.
Powinna istnieć pewna kolejność rzeczy, w przeciwnym razie otrzymasz różne wyniki dla równych reż.
I należy wziąć pod uwagę, że dodanie jakiś plik do jednego katalogu będzie całkowicie zmienić wynik, nawet jeśli to był tylko .directory
z .DS_Store
pliku.
Jako konkretny przypadek, powiedzmy, że chcesz skopiować niektóre pliki z katalogu 1 do katalogu 2, a następnie chcesz zweryfikować udaną kopię za pomocą porównania md5.
Pierwszy. cd do katalogu 1 i wpisz:
find -type f -exec md5sum "{}" \; > ~/Desktop/md5sum.txt
który utworzy plik referencyjny zawierający sumę md5 dla każdego pliku w katalogu1. Po wykonaniu tej czynności wystarczy wykonać cd do katalogu 2 i wpisać:
md5sum -c ~/Desktop/md5sum.txt
Program md5sum pobiera każdą ścieżkę z pliku md5sum.txt, oblicza md5sum tego pliku w folderze docelowym, a następnie porównuje go z sumą zapisaną w pliku.
Po zakończeniu procesu otrzymasz podsumowanie, takie jak „Tak wiele plików się nie zgadzało” lub coś w tym rodzaju.
Potrzebowałem zweryfikować integralność kopii zapasowych / kopii lustrzanych, które zawierają dużą liczbę plików, i ostatecznie napisałem program wiersza polecenia o nazwie MassHash. Jest napisany w Pythonie. Dostępny jest także program uruchamiający GTK +. Możesz to sprawdzić ...