比對二個檔案的問題 cmp或其它方法? - Linux

Table of Contents

請問一下大家 最近為了自動化
所以用了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億個不同(?)
--
受遺棄之子 生來無長物 學著去承受寂寞 學著從黑暗中找到出路 誰會在那等候你...
安慰你...關心你呢 ? 學著去承受寂寞吧 學著自已一人作件 未曾夢想過外面世界
會有雙臂來擁抱你 你一直清楚明白 你的心孤獨無助 所以笑看孤寂吧...受遺棄之子...
學著去承受寂寞 學著如何去愛孤獨的生活 學著去承受寂寞 人生可以如此過 人生可以如
此愛 靠著獨自一人...

--

All Comments

Donna avatarDonna2013-09-10
diff?
Skylar DavisLinda avatarSkylar DavisLinda2013-09-10
有試著用diff比對…不過效果好像和cmp一樣…
Yedda avatarYedda2013-09-12
300MB也才3億bytes,怎會有3億行不同? XD 其實寫一個簡單的
程式取代wc -l,也就是從stdin讀入超過預定的行數就exit ,
Queena avatarQueena2013-09-17
如此就可以結束pipe, cmp也會終止 (broken pipe)
Odelette avatarOdelette2013-09-19
感謝樓上的幫忙 只想到計算行數都忘了其它方法了囧
Joseph avatarJoseph2013-09-24
怕謝 想來想去還是不知道具體的寫法 OTZ