Při stahování souborů, zejména při instalaci souborů z webových stránek, je dobré ověřit, zda je stahování platné. Webová stránka často zobrazuje hodnotu hash pro každý soubor, aby se ujistil, že stahování proběhlo správně. Tento článek pojednává o nástroji md5sum, který můžete použít k ověření stahování. Tři další nástroje, sha1sum, sha256sum a sha512sum, fungují stejně jako md5sum.
Příkaz Linux md5sum
Příkaz md5sum vytiskne 32znakový (128bitový) kontrolní součet daného souboru pomocí algoritmu MD5. Následuje syntaxe příkazu tohoto nástroje příkazového řádku:
md5sum [OPTION]... [FILE]...
A zde je návod, jak to vysvětluje manuálová stránka md5sum:
Print or check MD5 (128-bit) checksums.
Následující příklady ve stylu otázek a odpovědí vám poskytnou ještě lepší představu o základním použití md5sum.
Poznámka:Budeme používat tři soubory pojmenované soubor1.txt, soubor2.txt a soubor3.txt jako vstupní soubory v našich příkladech. Text v každém souboru je uveden níže.
file1.txt:
hi hello how are you thanks.
soubor2.txt:
hi hello to you I am fine Your welcome!
soubor3.txt:
hallo Guten Tag Wie geht es dir Danke.
O1. Jak zobrazit hodnotu hash?
Použijte příkaz bez jakýchkoli voleb k zobrazení hodnoty hash a názvu souboru.
md5sum file1.txt
Zde je výstup tohoto příkazu vytvořený v našem systému:
[Documents]$ md5sum file1.txt 1ff38cc592c4c5d0c8e3ca38be8f1eb1 file1.txt [Documents]$
Výstup lze také zobrazit ve formátu BSD pomocí volby --tag.
md5sum --tag file1.txt
[Documents]$ md5sum --tag file1.txt MD5 (file1.txt) = 1ff38cc592c4c5d0c8e3ca38be8f1eb1 [Documents]$
Q2. Jak ověřit více souborů?
Příkaz md5sum může ověřit více souborů najednou. Přidáme soubor2.txt a soubor3.txt, abychom demonstrovali schopnosti.
Pokud zapíšete hash do souboru, můžete tento soubor použít ke kontrole, zda se některý ze souborů nezměnil. Zde zapisujeme hodnoty hash souborů do hodnot hash souborů a poté je používáme k ověření, že se žádný ze souborů nezměnil.
md5sum file1.txt file2.txt file3.txt > hashes
md5sum --check hashes
[Documents]$ md5sum file1.txt file2.txt file3.txt > hashes [Documents]$ md5sum --check hashes file1.txt: OK file2.txt: OK file3.txt: OK [Documents]$
Nyní změníme soubor3.txt přidáním jediného vykřičníku na konec souboru a spustíme příkaz znovu.
echo "!" >> file3.txt
md5sum --check hashes
[Documents]$ md5sum --check hashes file1.txt: OK file2.txt: OK file3.txt: FAILED md5sum: WARNING: 1 computed checksum did NOT match [Documents]$
Můžete vidět, že soubor3.txt se změnil.
Q3. Jak zobrazit pouze upravené soubory?
Máte-li mnoho souborů ke kontrole, možná budete chtít zobrazit pouze soubory, které se změnily. Pomocí možnosti "--quiet" vypíše md5sum pouze soubory, které se změnily.
md5sum --quiet --check hashes
[Documents]$ md5sum --quiet --check hashes file3.txt: FAILED md5sum: WARNING: 1 computed checksum did NOT match [Documents]$
4. Jak zjistit změny ve skriptu?
Možná budete chtít použít md5sum ve skriptu. Při použití volby "--status" md5sum nevytiskne žádný výstup. Místo toho stavový kód vrátí 0, pokud nedošlo k žádným změnám, a 1, pokud se soubory neshodují. Následující skript hashes.sh vrátí 1 ve stavovém kódu, protože se soubory změnily. Soubor skriptu je níže:
sh hashes.sh
hashes.sh: #!/bin/bash md5sum --status --check hashes Result=$? echo "File check status is: $Result" exit $Result [Documents]$ sh hashes.sh File check status is: 1 [[email protected] Documents]$
O5. Jak identifikovat neplatné hodnoty hash?
md5sum vám může dát vědět, pokud máte neplatné hodnoty hash, když porovnáváte soubory. Chcete-li vás varovat, pokud jsou některé hodnoty hash nesprávné, můžete použít volbu --warn. V tomto posledním příkladu použijeme sed k vložení dalšího znaku na začátek třetího řádku. Tím se změní hodnota hash v souborech hash, takže bude neplatná.
sed -i '3s/.*/a&/' hashes
md5sum --warn --check hashes
To ukazuje, že třetí řádek obsahuje neplatný hash.
[Documents]$ sed -i '3s/.*/a&/' hashes [Documents]$ md5sum --warn --check hashes file1.txt: OK file2.txt: OK md5sum: hashes: 3: improperly formatted MD5 checksum line md5sum: WARNING: 1 line is improperly formatted [Documents]$
Závěr
md5sum je jednoduchý příkaz, který dokáže rychle ověřit jeden nebo více souborů a určit, zda se některý z nich oproti původnímu souboru změnil. Další informace o md5sum naleznete na jeho manuálové stránce.