Zauważyłem, że oryginalny post jest dość stary, ale myślę, że te informacje mogą być cenne dla osób szukających rozwiązania, które pozwoli sprawdzić, czy pliki są poprawnie kopiowane. Rsync może być najlepszą metodą kopiowania danych, a odpowiedzi podane w tym wątku są dobre, jednak dla tych, którzy nie mają doświadczenia z Linuksem, postaram się podać bardziej szczegółowe wyjaśnienie.
Scenariusz: Właśnie skopiowałeś dane z dysku na inny, z dużą ilością podkatalogów i plików. Chcesz sprawdzić, czy wszystkie dane są poprawnie skopiowane.
Najpierw sprawdź, czy md5deep jest zainstalowany, wydając polecenie md5deep -v
.
Jeśli pojawi się komunikat „Nie znaleziono polecenia”, zainstaluj md5deep przez apt-get install md5deep
.
Zakłada się, że chcesz zajmować się tylko zwykłymi plikami. Jeśli chcesz poradzić sobie z innymi typami plików, skorzystaj z opcji -o w instrukcji md5deep. ( man md5deep
)
Teraz możesz już iść i zakładamy, że skopiowałeś pliki z /mnt/orginal
do /mnt/backup
, zamień je na katalogi, których używasz.
Najpierw przejdź do katalogu źródłowego, jest to oryginalne źródło skopiowanych lub utworzonych kopii plików:
cd /mnt/orginal
Następnie zrób sumę kontrolną dla każdego pliku:
md5deep -rel -o f . >> /tmp/checksums.md5
To polecenie wyjaśniło:
-r
włącza tryb rekurencyjny
-e
wyświetla wskaźnik postępu
-l
włącza względne ścieżki plików.
-o f
działa tylko na zwykłych plikach (nie blokuje urządzeń, nazwanych potoków itp.)
.
każe md5deep rozpocząć w bieżącym katalogu.
>> /tmp/checksums.md5
mówi md5deep, aby przekierował wszystkie dane wyjściowe do /tmp/checksums.md5
.
Uwaga: jeśli chcesz zastąpić treść w poprzednich wersjach /tmp/checksums.md5
, użyj >
i nie>>
Zauważ, że to polecenie może potrwać dość długo, w zależności od prędkości io i rozmiaru danych. Możesz eksperymentować z ładnym i / lub jonice, aby zwiększyć wydajność md5deep, ale to nie wchodzi w zakres tej odpowiedzi.
Po zakończeniu tworzenia sum kontrolnych masz teraz plik zawierający wpisy podobne do:
69c0a826b29c8f40b7ca5e56e53d7f83 ./oldconfig-11-09-2013/etc2/apm/event.d/20hdparm 651f3c7f79a14332f9fa7bb368039210 ./oldconfig-11-09-2013/etc2/apm/event.d7fffb9988788f8898e788f8898e8f9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9e8bb9c8b9b9b9bb9cb9f9a /etc2/apm/scripts.d/alsa e9b9131660a8013983bc5e19d7d669eb ./oldconfig-11-09-2013/etc2/ld.so.cache
Pierwsza kolumna to suma kontrolna md5, a druga kolumna to ścieżka względna do pliku, do którego należy suma kontrolna.
Jeśli chcesz zobaczyć, ile plików istnieje w pliku sumy kontrolnej, wydaj polecenie:
wc /tmp/checksums.md5 -l
Teraz chcesz sprawdzić, czy skopiowane dane są poprawne:
cd /mnt/backup
md5deep -o f -reX /tmp/checksums.md5 . >> /tmp/compare.result
Jedyna różnica w porównaniu z momentem utworzenia sum kontrolnych to -X, który wyświetla bieżący skrót pliku, jeśli wpis w pliku checksums.md5 nie jest zgodny. Pod koniec testu, jeśli /tmp/compare.result
jest pusty, możesz ufać, że wszystkie pliki są poprawnie skopiowane, ponieważ sumy kontrolne są zgodne.
Zauważ, że tylko pliki wymienione w /tmp/checksums.md5
pliku zostaną sprawdzone pod kątem poprawnej sumy kontrolnej, jeśli w /mnt/backup
katalogu znajdują się dodatkowe pliki , md5deep nie powiadomi Cię o nich.
Uwagi:
Nie musisz używać przekierowania do przechowywania plików wyjściowych. Więcej informacji można znaleźć w instrukcji obsługi md5deep.
Może być konieczne uruchomienie komend md5deep jako root, w zależności od uprawnień plików, które obsługujesz.
sudo apt-get install md5deep
md5deep -rel /path/to/your/directory/ > directory_hash.md5
md5deep -X directory_hash.md5 -r /path/to/your/second/direcotory
dziękuję.