比對本地端跟遠端的資料夾內容是否相同 - Linux

David avatar
By David
at 2011-08-30T19:30

Table of Contents

假設本地端有個資料夾f1 遠端伺服器有另一個資料夾f2

f1跟f2內不僅有檔案 也有子資料夾

子資料夾內也可能有檔案跟子子資料夾 如此遞迴下去

我想比對f1跟f2的內容是否完全相同

所謂完全相同是指資料夾樹狀結構跟所有的檔案內容皆相同

目前我想到幾個作法:

法1. 把兩個資料夾壓縮後比對checksum是否相同

缺點: 無法知道不一樣的檔案/子資料夾是哪些

法2. 把f2 mount到f1所在的電腦 在本地端比較f1跟f2差異

缺點: 要安裝額外套件

想請教的是有沒有辦法利用Linux內建的指令直接比較f1跟f2的差異

而且:

- 速度不會太慢

- 邊比較邊記錄不一樣的檔案/子資料夾

讓我在比較過程還沒結束前就能看log檔

--
Tags: Linux

All Comments

Emily avatar
By Emily
at 2011-08-31T06:32
rsync
Tristan Cohan avatar
By Tristan Cohan
at 2011-09-03T04:55
應該 -avn --delete可以
Emma avatar
By Emma
at 2011-09-06T07:25
如果都先find再diff?
Thomas avatar
By Thomas
at 2011-09-07T10:45
資料夾的mtime不同會視為不同
Kumar avatar
By Kumar
at 2011-09-11T07:58
該去看看manpage囉XD /checksum
Anonymous avatar
By Anonymous
at 2011-09-15T07:36
還有rsync的pathname XDDD
dir後面"一定"要加/
Kyle avatar
By Kyle
at 2011-09-18T18:21
和cp一樣,cp f1 f2 如果f1,f2都存在,f1會跑到f2/f1去
John avatar
By John
at 2011-09-23T09:21
為何先做成目錄清單 再用diff呢?
^不
Barb Cronin avatar
By Barb Cronin
at 2011-09-24T08:26
tar 也可以用來比
Tracy avatar
By Tracy
at 2011-09-28T12:39
他要比檔案內容啊
Kama avatar
By Kama
at 2011-09-28T19:01
先比樹狀結構 在比檔案阿

請問如何在已有的使用者家目錄下批次新增資料夾~?

Edward Lewis avatar
By Edward Lewis
at 2011-08-30T16:32
我是使用VSFTP 已經用土法煉鋼的方法在每個使用者下新增了001、002、003三個資料夾 也在其他地方新增了三個實體的資料夾 再利用mount的方式將實體的資料夾一一掛載到每個使用者的家目錄中相對應的資料夾 並把設定寫入fstab中 相關的權限則是如下: 001,行政部門可讀、寫,其他僅可讀 ...

VirtualBox 共用資料夾

Ethan avatar
By Ethan
at 2011-08-30T16:04
菜鳥又來發問了\= = 作業系統本身是Win 7 用VirtualBox裝了Ubuntu 11.04 想要在兩者之間建立一個共用資料夾 已經安裝了guest additions 在VirtualBox管理員中設定Ubuntu 11.04加入共用資料夾E:\Share 在Win 7下也已經確定建 ...

sync 的問題

Daph Bay avatar
By Daph Bay
at 2011-08-30T13:45
有沒有指令只針對單一 volume 做 sync 的指令 把記憶體, cash or buffer 的資料寫入硬碟 單只針對單一的 volume 例如 : $ 指令 /dev/sda1 之類的 - ...

linux裝在 64MB的硬碟上

Eden avatar
By Eden
at 2011-08-30T12:55
請問要如何將現有的 ubuntu x86裝到64MB硬碟上面, 裝kernel, 一些library, 主要上面跑x86的小程式 - ...

sh 與 ./

Cara avatar
By Cara
at 2011-08-30T11:04
當我們打一個指令,譬如 ls 這個指令其實是某個可執行檔案,系統去找到它,並且執行它 那這個 ls 在哪裡? 你可以輸入「whereis ls」發現它放在 /bin/ls 底下 問題是…系統又怎麼知道,當你打 ls 的時候,你指的是 /bin/ls 這個東西 而不是 /home/xxx/ls 或者 /ro ...