shell命令--md5sum
0、md5sum命令的專屬圖床
點此快速打開文章【圖床_shell命令md5sum】
1、md5sum命令的功能說明
在網絡傳輸、設備之間轉存、復制大文件等時,可能會出現傳輸前后數據不一致的情況。這種情況在網絡這種相對更不穩定的環境中,容易出現。那么校驗文件的完整性,也是勢在必行的。
md5sum
命令用於生成和校驗文件的md5
值。它會逐位對文件的內容進行校驗。是文件的內容,與文件名無關,也就是文件內容相同,其md5
值相同。md5
值是一個 128 位的二進制數據,轉換成16 進制則是 32(128/4)位的進制值。md5
校驗,有很小的概率不同的文件生成的md5
可能相同。比md5
更安全的校驗算法還有SHA*
系列的。在網絡傳輸時,我們校驗源文件獲得其md5sum
,傳輸完畢后,校驗其目標文件,並對比如果源文件和目標文件md5
一致的話,則表示文件傳輸無異常。否則說明文件在傳輸過程中未正確傳輸。
2、md5sum命令的語法格式
SYNOPSIS md5sum [OPTION]... [FILE]...
3、md5sum命令的選項說明
- -b :以二進制模式讀入文件內容
- -t:以文本模式讀入文件內容
- -c :根據已生成的md5值,對現存文件進行校驗
- --status:校驗完成后,不生成錯誤或正確的提示信息,可以通過命令的返回值來判斷。
4、md5sum命令的實踐操作
范例1:不加參數,直接生成文件
md5
值(md5sum file
)cd && rm -rf /test -->將之前的實驗環境刪除掉。提示:rm -rf 謹慎使用! mkdir /test && cd /test touch file.txt md5sum file.txt -->直接生成文件md5值 echo "I love linux" >>file.txt !md5 -->再次查看,md5值發生了變化
范例2:以文本模式或二進制模式讀入文件並對其進行校驗
file file.txt md5sum file.txt md5sum -b file.txt md5sum -t file.txt
注意:雖然是不同的讀入模式,但是在進行求
md5
的時候,是一樣的,因為是逐位校驗的。
范例3:
md5
值重定向到新文件中(可以留着做校驗而用的)md5sum file.txt > newfile.md5 md5sum file.txt cat newfile.md5 -->難道手工校驗?No,No,No。
范例4:
md5
校驗,(-c參數)如果一致,則返回OK
,否則返回錯誤信息md5sum -c newfile.md5 -->哈哈,手工校驗太Low了,當然是有參數滴,-c參數校驗 echo "Me too" >> file.txt -->追加內容 cat file.txt -->查看內容 !md5 ->再次校驗
范例5:不顯示校驗信息,(
--status
參數)以命令返回值來判斷,校驗一致返回0
,不一致返回1
md5sum -c newfile.md5 md5sum -c --status newfile.md5 echo $? -->不一致返回1 md5sum file.txt > newfile.md5 -->重新記錄md5值 md5sum -c newfile.md5 md5sum -c --status newfile.md5 echo $? -->不一致返回1
特殊說明
1)
md5sum
是校驗文件內容,與文件名是否相同無關
2)md5sum
值逐位校驗,所以文件越大,校驗時間越長。
命令總結
通過
md5sum
來校驗生成文件校驗碼,來發現文件傳輸(網絡傳輸、復制、本地不同設備間的傳輸)異常造成的文件內容不一致的情況。
應用場景
需要比較2個
rc1.tar.gz
包和rc2.tar.gz
兩個包,變更是不是和開發說的一致1. 獲取包,確保包正確無誤
獲取包后,驗證包的
MD5
值:md5sum rc*.tar.gz
2. 解壓縮到指定目錄
確保對應的目錄存在
tar -zxvf rc1.tar.gz -C ./test_rc1 tar -zxvf rc2.tar.gz -C ./test_rc2
3. 遞歸生成各文件的的MD5值
find ./test_rc1 -type f -print0| xargs -0 md5sum >> rc1_md5.txt find ./test_rc2 -type f -print0| xargs -0 md5sum >> rc2_md5.txt
4. 比較兩文件的MD5值
diff -c rc1_md5.txt rc2_md5.txt
或者用
UltraCompare Professional
比對結果
『MineGi有話說』:快來掃一掃下面鏈接的二維碼,加入我們吧!