[問題] 比對本地端跟遠端的資料夾內容是否相同

看板Linux作者 (一步一腳印)時間12年前 (2011/08/30 19:31), 編輯推噓7(706)
留言13則, 5人參與, 最新討論串1/1
假設本地端有個資料夾f1 遠端伺服器有另一個資料夾f2 f1跟f2內不僅有檔案 也有子資料夾 子資料夾內也可能有檔案跟子子資料夾 如此遞迴下去 我想比對f1跟f2的內容是否完全相同 所謂完全相同是指資料夾樹狀結構跟所有的檔案內容皆相同 目前我想到幾個作法: 法1. 把兩個資料夾壓縮後比對checksum是否相同 缺點: 無法知道不一樣的檔案/子資料夾是哪些 法2. 把f2 mount到f1所在的電腦 在本地端比較f1跟f2差異 缺點: 要安裝額外套件 想請教的是有沒有辦法利用Linux內建的指令直接比較f1跟f2的差異 而且: - 速度不會太慢 - 邊比較邊記錄不一樣的檔案/子資料夾 讓我在比較過程還沒結束前就能看log檔 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.31.149

08/30 20:59, , 1F
rsync
08/30 20:59, 1F
請問要怎麽列出不一樣的檔案? 我覺得應該是這樣: rsync -rnvc f1 remote_host:f2 但結果不對...orz 請問正確的做法是?

08/31 01:33, , 2F
應該 -avn --delete可以
08/31 01:33, 2F
似乎不太對...我PO一下我的實驗結果好了 f1是在本地端的a這個資料夾 其結構如下 a/ a/b2 a/b/ a/b/c/ a/b/c/d/ 其中只有b2是檔案 其餘皆為資料夾 f2是在遠端伺服器的a這個資料夾 其結構如下 a/ a/b a/b/c 我在本地端下的指令如下: rsync -avn --delete a remote_host:a 執行結果為: sending incremental file list a/ a/b2 a/b/ a/b/c/ a/b/c/d/ sent 123 bytes received 31 bytes 61.60 bytes/sec total size is 0 speedup is 0.00 (DRY RUN) 從這結果無法看出f1跟f2哪裡不一樣 不知道我哪邊做錯@@

08/31 01:53, , 3F
如果都先find再diff?
08/31 01:53, 3F
diff似乎不能用在遠端

08/31 02:08, , 4F
資料夾的mtime不同會視為不同
08/31 02:08, 4F
能請教怎麼只看checksum來判斷檔案是否相同嗎?我用-c好像沒用 上面標綠色的部份還是一樣會出來 但明明f1跟f2的bc資料夾是一樣的qq 我的意思是 正確結果應該要類似這樣: a/b2 a/b/c/d

08/31 08:24, , 5F
該去看看manpage囉XD /checksum
08/31 08:24, 5F
就是-c沒錯吧@@ -c, --checksum skip based on checksum, not mod-time & size ※ 編輯: Holocaust123 來自: 140.112.31.149 (08/31 08:46)

08/31 11:27, , 6F
還有rsync的pathname XDDD
08/31 11:27, 6F

08/31 11:27, , 7F
dir後面"一定"要加/
08/31 11:27, 7F

08/31 11:33, , 8F
和cp一樣,cp f1 f2 如果f1,f2都存在,f1會跑到f2/f1去
08/31 11:33, 8F

08/31 20:21, , 9F
為何先做成目錄清單 再用diff呢?
08/31 20:21, 9F

08/31 20:21, , 10F
^不
08/31 20:21, 10F

08/31 20:41, , 11F
tar 也可以用來比
08/31 20:41, 11F

09/01 00:02, , 12F
他要比檔案內容啊
09/01 00:02, 12F

09/01 20:46, , 13F
先比樹狀結構 在比檔案阿
09/01 20:46, 13F
文章代碼(AID): #1ENCdr_m (Linux)