rsync它原本是在Linux系統下面的一個文件同步協議,隨著技術的發展,它也有其它版本的,如Windows和AIX、HPUX下面都有相應的版本可以支持的。Rsync這個同步工具的好處在于完全命令行下面的操作,有詳細的日志文件,同時也能支持多種不同情況下的更新,例如備份式更新等,還有一個非常好的地方是,它和服務器之間可以互相同步,即可以從服務器上更新文件下來,也可以把本地的文件提交到服務器上面去。只要你配置的參數是正確的,就能完成這樣的工作。
而且這個工具占用的系統資源也比較小。另外我們也試過,用這個工具和xcopy,SecondCopy相比,優點實在是太多了,特別是在文件數量和大小非常龐大,優勢更明顯,200G以上的數據,十幾萬個文件,xcopy只要有一個出錯,就麻煩了,要么中斷,要么你得重新開始copy,SecondCopy這個工具在copy 200G這樣的大數據量的文件時,它走不下去了,反正停在那里總是報錯,而rsycn則完全沒有這樣的毛病。200G以上的數據,十幾萬個文件,我們用 Rsync可以成功的copy過去。
Rsync有一個比較慢的地方是,它在同步時,會根據本地的目錄中的文件同服務器上的文件進行對比,這樣比較之后,它只更新那里不一樣的文件,相同的文件它會直接跳過去的,如果要同步的文件數量非常龐大時,這個比較過程就非常慢,需要等待很長時間。
Rsync的參數說明這里就不說了,大家google一下 rsycn中文手冊 這個關鍵字,網上有很多說明的,這里只講一下在Windows下面的安裝和使用過程。
在 Windows下面,這個工具也有安裝文件,http://rsync.samba.org/download.html,網上有下載的,在 Windows下面建議大家安裝這個,AIX和HPUX系統下面,如果大家需要使用的話,需要自己去下載源碼進行安裝。在Windows下面安裝后,它增加了一個手工啟動后臺服務RsyncServer ,在默認情況下,安裝后這個服務是沒有啟動的,所以在第一次安裝后,你要手工把這個服務啟動起來,并且設置成隨操作系統啟動而自動啟動。
安裝完之后的第二步就是配置它的同步目錄了,在安裝目錄下面有一個rsyncd.conf這樣的文件,用文本編輯器打開,可以在里面看到以下的內容:
use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
pid file = rsyncd.pid
#Module definitions
#Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[test]
path = /cygdrive/c/work
read only = false
transfer logging = yes
在# 之前那幾行可以不管,最下面的那幾行才是我們最關心的,需要注意的是,Rsync這個工具是從Linux下發展下來的,所以它的路徑和Windows下面的路徑有點不一樣,需要轉換一下,如c:\work這個目錄,在Rsync中的目錄路徑應該寫成 /cygdrive/c/work 這樣,這種格式里面沒有那個冒號,用得全部都是反斜杠,在驅動器的盤符前面要加上/cygdrive/。 其它的路徑參照這個格式改一下就可以了。
[test] 這一行是表示你設置的某個同步目錄的模塊名稱,你可以把它理解成一個Rsync中的別名,這樣可能會容易理解一些,要注意的是,這個名稱是區分大小寫的,而且不能重復。
path = /cygdrive/c/work 這一行是表示你設置的同步目錄的物理文件路徑,這個格式需要注意,不要寫錯了
read only = false 表示設置的這個同步模塊只能讀,不能通過rsync的客戶端向這里寫文件
transfer logging = yes 表示在同步的時候將輸出的日志按預定的格式進行格式化,具體的格式和日志你可以查看安裝目錄下面的 rsyncd.log 這個文件。這個文件也需要注意一下,就是長時間的同步操作后,這個日志文件可能會很大,所以你最好每隔一段時間就手工刪除一下。當有人要用rsync客戶端時行同步時,這個日志文件你是刪除不掉的,只有在沒有人使用的時候才可以刪除掉的。
這樣服務端的就安裝成功了,然后就可以用Rsycn 的客戶端去連接服務器進行同步操作了。Linux平臺不需要你安裝,系統默認就安裝了,Windows下面你也先要安裝一下客戶端,客戶端的安裝包安裝過一次之后,你可以把那些己經安裝好的文件全部copy到其它要用的機器上,客戶端可以直接copy過去使用的。copy到任意目錄下面,然后啟動一個 cmd窗口,切換到rsync.exe所在的目錄,然后輸出以下命令:
rsycn -avrDztopg --force --delete 192.168.100.10::test/abc/ /cygdrive/c/abc
這條命令的意思是根據192.168.100.10這臺機器上的c:\work\abc目錄下面的所有內容同步到本地的c:\abc目錄中,如果發現在本地的c:\abc中存在的文件而在服務器上沒有的,則強制把本地這些多余的文件刪除掉,其它的參數大家可以看看那個中文幫助手冊,里面有詳細的說明。