作者hgs1906 (受遺棄之子)
看板Linux
標題[問題] 比對二個檔案的問題 cmp或其它方法?
時間Thu Sep 5 16:01:17 2013
請問一下大家 最近為了自動化
所以用了jenkins自動編譯程式為java的war檔
之後在透過判斷新舊war檔是否差異來判斷要不要重新deploy
原本的判斷方式為…
cmp -l a.war a.war.bak |wc -l
透過cmp -l 列出所有的差異 在統計行數
只要差異的行數超過10行就重新deploy程式…這樣基本上沒有問題
但是…因為該war檔大約有300m 而且比對下去大約有近3億個不同OTZ
要花費一些些時間…所以想請問一下是否有其它的方式可以加快速度…
或是在統計差異行數時只要超過幾行的差異時就停止cmp呢?
ps差異數超過10行才重新deploy的原因是因為
重新編譯的檔案一定會有約8行的不同…
謝謝大家~ OTZ
重新確認一次後
"cmp -l" 的方式約 106(s)
"diff -a --speed-large-files" 的方式約 30(s)
速度快很多…
怕謝…因該是3億個不同(?)
--
受遺棄之子 生來無長物 學著去承受寂寞 學著從黑暗中找到出路 誰會在那等候你...
安慰你...關心你呢 ? 學著去承受寂寞吧 學著自已一人作件 未曾夢想過外面世界
會有雙臂來擁抱你 你一直清楚明白 你的心孤獨無助 所以笑看孤寂吧...受遺棄之子...
學著去承受寂寞 學著如何去愛孤獨的生活 學著去承受寂寞 人生可以如此過 人生可以如
此愛 靠著獨自一人...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.216.178
推 kira925:diff? 09/05 16:07
→ hgs1906:有試著用diff比對…不過效果好像和cmp一樣… 09/05 16:08
→ bitlife:300MB也才3億bytes,怎會有3億行不同? XD 其實寫一個簡單的 09/05 16:28
→ bitlife:程式取代wc -l,也就是從stdin讀入超過預定的行數就exit , 09/05 16:28
→ bitlife:如此就可以結束pipe, cmp也會終止 (broken pipe) 09/05 16:29
※ 編輯: hgs1906 來自: 59.126.216.178 (09/05 16:33)
→ hgs1906:感謝樓上的幫忙 只想到計算行數都忘了其它方法了囧 09/05 16:36
→ hgs1906:怕謝 想來想去還是不知道具體的寫法 OTZ 09/05 16:59