Ale trudną częścią jest porównanie wartości skrótu z dokładną.
Trudno jest porównać 32-znakowy wynik wyjściowy z oryginalną / dokładną wartością skrótu dla każdego człowieka dla dużej liczby plików. Przede wszystkim praca byłaby bardzo monotonna i istnieje duży zakres błędów.
Czy można zautomatyzować proces porównywania, najlepiej w interfejsie CLI?
-c, --check
read MD5 sums from the FILEs and check them
Cytat z wiki
Uwaga: muszą być dwie spacje między każdą wartością md5sum a nazwą pliku do porównania. W przeciwnym razie pojawi się następujący błąd: „nie znaleziono poprawnie sformatowanych wierszy sumy kontrolnej MD5”.
Możesz także po prostu odczytać skróty md5 z pliku
$ md5sum -c md5sum_formatted_file.txt
Oczekuje pliku w formacie:
<md5sum_checksum><space><space><file_name>
Informacje o skrócie sum MD5 *i <space>po nim. W człowieku jest niewiele notatek:
When checking, the
input should be a former output of this program. The default mode is
to print a line with checksum, a character indicating input mode ('*'
for binary, space for text), and name for each FILE.
I tutaj jest link do stackoverflow, gdzie znalazłem odpowiedź na pytanie, dlaczego czasami powinniśmy rozróżniać binarypliki i textpliki.
dziękuję za odpowiedź, ale trzeba zainstalować inne narzędzie. Jednocześnie zapewnia obsługę innych formatów. Warto o tym wiedzieć. Ale w obecnym kontekście pójdę z inną odpowiedzią. W każdym razie +1 ode mnie.
souravc
1
Tak, gwiazdka *jest wymagana dla tego polecenia. Spójrz na ten przykład.
To jest plik binarny i powiedzmy, że poprawna wartość md5sum to exampleofcorrectmd5value00000000(32 znaki szesnastkowe)
[root@Linux update]# ls -lh
total 137M
-rw-r--r-- 1 root root 137M Nov 5 13:01 binary-file.run.tgz
[root@Linux update]#
-c, --check
odczytać sumy MD5 z PLIKÓW i sprawdzić je
Jeśli wartość md5sum zgadza się z plikiem binarnym, otrzymasz to wyjście
[root@Linux update]# md5sum -c <<< "exampleofwrongmd5value0000000000 *binary-file.run.tgz"
binary-file.run.tgz: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
[root@Linux update]#
Bez gwiazdki *pojawi się następujący komunikat o błędzie, nawet jeśli wartość md5 jest poprawna
[root@Linux ~]# md5sum -c <<< "exampleofcorrectmd5value00000000 binary-file.run.tgz"
md5sum: standard input: no properly formatted MD5 checksum lines found
[root@Linux ~]#
Otrzymasz również ten sam komunikat o błędzie, jeśli md5sum nie zawiera 32 znaków szesnastkowych. W tym przykładzie ma tylko 31 znaków.
[root@Linux ~]# md5sum -c <<< "exampleofmd5valuelessthan32char *binary-file.run.tgz"
md5sum: standard input: no properly formatted MD5 checksum lines found
[root@Linux ~]#
Rozwiązanie dla wielu plików
Jeśli masz wiele plików i chcesz zautomatyzować proces, możesz wykonać następujące kroki:
user@Ubuntu:~$ ls -lh
total 12K
-rw-rw-r-- 1 user user 4 Nov 5 14:54 file-a
-rw-rw-r-- 1 user user 4 Nov 5 14:54 file-b
-rw-rw-r-- 1 user user 4 Nov 5 14:54 file-c
user@Ubuntu:~$
Wygeneruj md5sum dla każdego pliku i zapisz go w md5sum.txt
*
, ale wiki powiedziała, że powinny to być dwie spacje. Będę szukać ...*
do odpowiedziJedną z możliwości jest użycie narzędzia cfv
CFV obsługuje wiele rodzajów skrótów oraz testowanie i tworzenie plików skrótów.
źródło
Tak, gwiazdka
*
jest wymagana dla tego polecenia. Spójrz na ten przykład.To jest plik binarny i powiedzmy, że poprawna wartość md5sum to
exampleofcorrectmd5value00000000
(32 znaki szesnastkowe)Jeśli wartość md5sum zgadza się z plikiem binarnym, otrzymasz to wyjście
I wtedy wartość md5sum nie pasuje
Bez gwiazdki
*
pojawi się następujący komunikat o błędzie, nawet jeśli wartość md5 jest poprawnaOtrzymasz również ten sam komunikat o błędzie, jeśli md5sum nie zawiera 32 znaków szesnastkowych. W tym przykładzie ma tylko 31 znaków.
Rozwiązanie dla wielu plików
Jeśli masz wiele plików i chcesz zautomatyzować proces, możesz wykonać następujące kroki:
Wygeneruj md5sum dla każdego pliku i zapisz go w md5sum.txt
Aby sprawdzić md5sum dla wszystkich plików, użyj następującego polecenia.
Jest to przykład, jeśli wartość md5sum nie pasuje do pliku. W takim przypadku zamierzam zmodyfikować
file-b
treśćWidzisz, to jest komunikat o błędzie. Mam nadzieję że to pomoże.
źródło