6. 檢測兩臺機器上檔案的差異
生產環境下,web伺服器大多會做負載均衡,所以有多臺機器上跑著同樣的web程式程式碼。如果嚴格按照規範流程上線,即不人為特意更改程式碼,那麼這多臺機器上的程式碼一定是一樣的,並不會存在兩臺機器同一個檔案內容不同的情況。本案例的需求就是要檢查兩臺機器同一個檔案的差異,畢竟我們不確定伺服器上的程式碼是否有人為改動過。
具體要求如下:
1)兩臺機器A和B,檢查目標目錄為 /data/wwwroot/www.abc.com ,路徑一致;
2)需要過濾 uploads、tmp 兩個目錄,這兩個目錄的檔案不需要對比差異;
3)以A機器上的檔案作為標準,B機器少了檔案和改了檔案需要記錄,多了檔案不用考慮;
4)假設A機器可以免密登入B機器;
5)把有差異和缺少的檔案列表記錄到 /data/change.log 。
參考指令碼如下:
#!/bin/bash
##對比兩機器上的檔案差異
#假設B機器IP為192.168.0.110
B_ip=192.168.0.110
dir=/data/wwwroot/www.abc.com
#首先檢查 /tmp/mkd5.list 檔案是否存在,存在的話就刪除掉,避免影響後續操作
[ -f /tmp/md5.list ] && rm -f /tmp/md5.list
#把除了uploads和tmp目錄外的其它目錄下的所有檔案全部列出來
cd $dir
find . \(-path "./uploads*" -o -path "-/tmp*" \) -prune -o -type f > /tmp/file.list
#用while迴圈,求出所有檔案的md5值,並寫入一個檔案裡
cat /tmp/file.list |while read line
do
md5sum $line
done > /tmp/md5.list
#將 /tmp/md5.list 拷貝到B機器
scp /tmp/md5.list $B_ip:/tmp/
#判斷 /tmp/check_md5.sh 檔案是否存在,存在的話就刪除掉
[ -f /tmp/check_md5.sh ] && rm -f /tmp/check_md5.sh
#用Here Document編寫 check_md5.sh 指令碼內容
cat << EOF > /tmp/check_md5.sh
#!/bin/bash
dir=/data/wwwroot/www.abc.com
##注意:這裡的特殊字元都需要脫義,比如反引號和$
cd \$dir
n=\`wc -l /tmp/md5.list |awk '{print \$1}'\`
for i in \`seq 1 \$n\`
do
file_name=\`sed -n "\$i"p /tmp/md5.list |awk '{print \$2}'\`
md5=\`sed -n "\$i"p /tmp/md5.list |awk '{print \$1}'\`
if [ -f \$file_name ]
then
md5_b=\`md5sum \$file_name |awk '{print \$1}'\`
if [ \$md5_b != \$md5 ]
then
echo "\$file_name changed."
fi
else
echo "\$file_name lose."
fi
done > /tmp/change.log
EOF
scp /tmp/check_md5.sh $B_ip:/tmp/
ssh $B_ip "/bin/bash /tmp/check_md5.sh"
指令碼中,
1)find命令的 -path 選項類似於shell中的正則匹配,-prune -o 組合在一起使用,會把 -prune前面的匹配排除掉
2)要想比較兩個檔案是否一樣,只需要對比它們的md5值即可。md5sum命令可以求出檔案的md5值
相關文章
- 在Linux中,如何比較兩個檔案差異?Linux
- 線上json差異比較工具--遞迴比較兩個json的節點和值的差異,並支援差異數預覽和逐個檢視差異JSON遞迴
- Git比對檔案之間的差異Git
- 檔案上傳漏洞防範-檔案型別檢測型別
- 差異檔案(diff)和補丁檔案(patch)簡介
- 檢測不同伺服器上程式碼差別的shell的指令碼伺服器指令碼
- 錄製回放效果差異檢測 | 自動化測試
- 檔案上傳——客戶端檢測繞過(JavaScript檢測)(一)客戶端JavaScript
- 兩臺linux的檔案傳輸Linux
- pandas比較兩個文件的差異
- Javers 比較兩個類的差異
- 使用Visual Studio進行檔案差異比較
- Linux求兩個文字檔案的交集、差集、並集Linux
- 【機器學習】李宏毅——Anomaly Detection(異常檢測)機器學習
- IDEA如何對比不同分支某個檔案的差異Idea
- 6. 抹平差異,統一型別轉換服務ConversionService型別
- 虛擬機器的檔案怎麼複製出來 如何把虛擬機器上的檔案拷到電腦上虛擬機
- postman測試多檔案上傳,並且後臺接收檔案陣列Postman陣列
- 將一臺伺服器上的日誌檔案拷貝到另外一臺上伺服器
- 下載GitHub上檔案的兩種方法Github
- 【SpringMVC】檔案上傳與下載、攔截器、異常處理器SpringMVC
- Windows 機器通過 FTP 上傳檔案WindowsFTP
- 異常檢測
- 資料專案與erp專案的差異
- 檢測檔案編碼,轉換檔案編碼
- 吳恩達機器學習筆記 —— 16 異常點檢測吳恩達機器學習筆記
- 檔案上傳測試
- 關閉單個檔案eslint的檢測EsLint
- 【機器視覺】機器人及視覺檢測系統在螺絲檢測包裝生產線上的應用視覺機器人
- [20221130]測試訪問檢視v$session幾種情況的效能差異.txtSession
- sldprt檔案用什麼軟體開啟(手機sldprt檔案檢視器)
- 軟體測試:SVN與Git的差異Git
- hadoop 將檔案上傳到指定的datanode 檢視檔案所在的塊Hadoop
- 在Linux中,如何檢視和審計系統日誌檔案以檢測異常活動?Linux
- 序列異常檢測
- C#自動檢測檔案的編碼C#
- python-magic:檢測檔案的MIME型別Python型別
- 剛剛,綠盟雲針對Apache Tomcat檔案包含漏洞的線上檢測正式上線ApacheTomcat