@Kibbee Aby temu zapobiec, musisz wziąć pod uwagę coś innego niż zawartość danych każdego pliku i dokładnie to, jak sumujesz pliki. Biorąc pod uwagę: [sumy kontrolne] 1. A (katalog) - plik1 [ABC] - plik2 [CBA] 2. B (katalog) - plik1 [ABC] - B1 (katalog) - plik2 [CBA] 3. C (katalog) - plik4 [ABC] - File5 [CBA] 4. D (Directory) - plik 1 kopia [ABC] - File2 kopii [CBA] katalog i B nie są identyczne, pomimo, że te same pliki (choć w B1 , File2 w podkatalogu) . W twoim przykładzie A i C można uznać za identyczne, ponieważ
Jacob Lyles,
Odpowiedzi:
36
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:
Nie to, co miałem na myśli, ale to, co chciałem :) Miałem na myśli rekurencyjnie, i na końcu otrzymałem JEDEN skrót, ale myślę, że można to zrobić za pomocą md5deep -l i mieszania samego wyjścia.
pufferfish
1
Kolejność mieszania nie jest spójna, więc musiałbym posortować dane wyjściowe przed mieszaniem
pufferfish
1
Aby uzyskać porządek deterministyczny, użyj opcji, -j0która wyłącza wielowątkowość (patrz strona podręcznika).
Johann
1
@ ShaneMadden ♦ zainstalowałem md5deepz sudo apt-get install md5deepdnia Ubuntu 16.04ale kiedy próbowałem przeczytać stronę man on mi mówi, że> No ręczne wprowadzanie do md5deep
Kasun Siyambalapitiya
27
Jeśli chcesz zobaczyć, co różni się (jeśli w ogóle) między dwoma katalogami, rsync będzie dobrym wyborem.
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 .directoryz .DS_Storepliku.
Technicznie można uzyskać ten sam skrót dla różnych katalogów. Gdyby katalog A miał 2 pliki z zawartością „ab” i „c”, a katalog B miał 2 pliki z zawartością „a” i „bc”, to haszowanie tylko danych w plikach dałoby takie same wyniki, nawet jeśli mają one pliki z inna zawartość. Nie jestem nawet pewien, jak zdefiniować MD5Sum katalogu.
Kibbee,
1
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ć ...
Odpowiedzi:
Pewnie -
md5sum directory/*
Jeśli potrzebujesz czegoś bardziej elastycznego (powiedzmy, do rekurencji katalogu lub porównania skrótu), spróbuj md5deep.
Aby porównać strukturę katalogów, możesz dać jej listę skrótów do porównania:
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.
źródło
-j0
która wyłącza wielowątkowość (patrz strona podręcznika).md5deep
zsudo apt-get install md5deep
dniaUbuntu 16.04
ale kiedy próbowałem przeczytać stronę man on mi mówi, że> No ręczne wprowadzanie do md5deepJeśli chcesz zobaczyć, co różni się (jeśli w ogóle) między dwoma katalogami, rsync będzie dobrym wyborem.
Spowoduje to wyświetlenie listy różnych plików.
źródło
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ą:
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.
źródło
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:
aby utworzyć plik sumy kontrolnej MD5 dla wszystkich plików w bieżącym katalogu:
Aby utworzyć osobny plik sumy kontrolnej dla każdego podkatalogu:
Aby utworzyć „super” plik sumy kontrolnej zawierający pliki we wszystkich podkatalogach:
źródło
Użyłem hashdeep, jak wyjaśniono w tej odpowiedzi askubuntu: Sprawdź poprawność skopiowanych plików :
Aby obliczyć sumy kontrolne:
Aby zweryfikować i wymienić różnice:
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 .
źródło
To zadziałało dla mnie: (uruchom go w katalogu, który Cię interesuje)
źródło
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.źródło
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:
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ć:
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.
źródło
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ć ...
http://code.google.com/p/masshash/
źródło