[問題] 比對本地端跟遠端的資料夾內容是否相同
假設本地端有個資料夾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
08/30 20:59, 1F
請問要怎麽列出不一樣的檔案?
我覺得應該是這樣: rsync -rnvc f1 remote_host:f2
但結果不對...orz
請問正確的做法是?
推
08/31 01:33, , 2F
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
08/31 01:53, 3F
diff似乎不能用在遠端
推
08/31 02:08, , 4F
08/31 02:08, 4F
能請教怎麼只看checksum來判斷檔案是否相同嗎?我用-c好像沒用
上面標綠色的部份還是一樣會出來 但明明f1跟f2的bc資料夾是一樣的qq
我的意思是 正確結果應該要類似這樣:
a/b2
a/b/c/d
推
08/31 08:24, , 5F
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
08/31 11:27, 6F
→
08/31 11:27, , 7F
08/31 11:27, 7F
推
08/31 11:33, , 8F
08/31 11:33, 8F
→
08/31 20:21, , 9F
08/31 20:21, 9F
→
08/31 20:21, , 10F
08/31 20:21, 10F
→
08/31 20:41, , 11F
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