雖然最後證實那個檔案是因為其他的原因被還原到舊版,但是在那段真相水落石出之前的空窗期我寫了一個短短的 script 來驗證 tar 的執行結果,完整程式碼如下:
#!/bin/bash #created by Tim, verify the tar unzip operation is successful #this file should be put in the /tmp directory #read the log file from the output of "tar -zxvfm XXX.tar.gz > /tmp/tar.log" command BASEDIR=`pwd` cd /tmp files=`cat tar.log` count=0 for file in $files do #check the last modified date of each file, it should be the same ls -l "$BASEDIR/$file" count=`expr $count + 1` done echo "count: $count" #verify files count #precondition: there should be only 1 .tar.gz file in the /tmp directory #the number of files in the .tar.gz file tarCount=`tar -tv -f *.tar.gz | wc -l` echo "tarCount: $tarCount" if [ $count -eq $tarCount ]; then echo "file count check OK!" else echo "file count check FAILED!!" fi
程式很單純,只是先利用 tar 的 -v (verbose) 參數把執行過程中解壓縮的
檔案相對路徑紀錄到 /tmp 下的 tar.log 檔,而後逐一比對 log 檔中的
路徑與目前系統中實際的檔案修改時間是否相同,最後會比較 tar 檔中
所含的檔案數量與 tar.log 檔中紀錄到的檔案數量是否一致。
雖然這程式應該沒啥用 (tar 出問題的機率超低),但還是擺著備忘一下,
當作 shell script 的範本也好 :p
沒有留言:
張貼留言