每份相同數據(文件夾)均可以生成一份惟一的md5校驗文件,咱們能夠經過直接校驗整個數據文件夾的方法來肯定數據是否有誤。shell
1.針對整個文件夾生成md5校驗文件方法:bash
以data文件夾爲例,咱們須要獲得data整個文件夾中的文件的md5校驗值,咱們經過shell程序對整個data文件夾中的文件進行md5校驗。ui
經過以下命令得到整個data文件夾的md5校驗文件:編碼
1 cd data 2 find ./ -type f -print0 | xargs md5sum > data_temp.md5 3 cat data_temp.md5 | sort > data.md5
(找出data文件中的每一個文件並得到該文件的md5值存入data_temp.md5spa
中 ,而後對md5值的文件進行排序得到data.md5校驗文件)3d
data.md5文件中數據格式以下,前面的字符串是該文件的md5值,後面的是該文件相對data文件夾的路徑。因爲每一個不一樣文件的md5值都惟一,每一個文件的路徑都不一樣,因此排序以後,一樣的文件夾生成的該md5文件都是惟一的code
040173e4c2c29787cd0e644bd3737f8f ./preinstall/Babaqunaer_1.3.6.apkblog
0054b51601427b2630793d43ed0b224c ./pcvoice/7.mp3排序
2.生成md5校驗文件程序:md5
#!/bin/bash # author: huinatianyun # Updated Date:2014-03-24 # Set environment variables LANG="" export LANG #這裏必需要設置語言環境,由於sort排序是對文件的每一行做爲一個單位,相互比較,比較原則是從首字符向後依次進行比較,語言環境不一樣,字符的編碼可能就不同,因此會致使文件文件排序結果不一致,LANG=""表示默認設置爲en_US echo "" echo "" echo "please put generate_md5_value.sh, custdata.tar, hpdata.tar, hwapudata.tar in the same directory," echo "" read -p "are you put generate_md5_value.sh in the right position ? (Y/N): " select_yn echo "" echo "" if [ "$select_yn" == "Y" ] || [ "$select_yn" == "y" ]; then echo "start generate data.md5 ..." cd ./data find ./ -type f -print0 | xargs -0 md5sum | sort > ../data.md5 #xargs 命令-0是表示以空字符做爲分隔符,由於有些目錄的名字是含有空格的,而xargs是默認是以空格爲分割符的,它會誤認爲還有空格的目錄的路徑爲兩個路徑,換成空字符就是消除這個問題 echo "generate md5 value over" elif [ "$select_yn" == "N" ] || [ "$select_yn" == "n" ]; then echo "stop generate md5 value !" else echo "I don't know what your choice is !!!" fi
3.數據校驗方法:
經過上述方法對data文件夾裏數據生成一份md5校驗文件,這個md5文件就這可做爲這個data文件夾的校驗文件,校驗一個文件夾數據是否和data相同的方法就是針對該文件夾經過一樣的方法生成一份md5校驗文件,而後比對校驗文件是否相同,若是兩個文件相同,這認爲這兩個比對的數據文件夾一致