本文首發於爛泥行天下。
上篇文章中,我們介紹了有關Linux系統之間的文件同步,這篇文章我們來介紹下,有關Linux系統與windows系統,以及windows系統與windows系統之間的文件同步。
這篇文章我們需要分三個部分進行講解:
1、 windows系統同步文件到Linux系統
2、 Linux系統同步文件到windows系統
3、 windows與windows系統之間的文件同步
一、windows系統同步文件到Linux系統
要使windows系統下的文件同步到Linux系統,我們需要安裝rsync的windows客戶端cwRsync。
cwRsync我們可以去下面這個連接進行下載:
https://www.itefix.net/cwrsync
當然,我們也可以去這個連接下載《cwRsync5.4.1客戶端》。
目前cwRsync的版本是5.4.1,我們下載解壓後配置下,就可以正常使用。如下:
注意:圖中的cwrsync.cmd文件,我們可以雙擊該文件進行配置cwRsync,也可以自行進行配置。但是通過我的實際驗證該文件不能成功配置cwRsync,所以建議手工進行配置。
其實配置就是把目前cwRsync所在的路徑加入到系統的環境變量中。
手工配置如下:
通過上圖,我們可以看到rsync客戶端cwRsync已經安裝完畢。
注意:windows下的rsync客戶端與Linux下rsync客戶端配置是一樣的,只是在路徑中有不同之處。
下面就開始配置rsync客戶端,創建rsync的密碼文件,如下:
rsync服務端的配置與《爛泥:linux文件同步之rsync學習(一)》這篇文章同一個環境。
我們現在的要求是把rsync客戶端E:\www文件夾下的文件同步到rsync服務器上。
rsync服務器是192.168.199.247,rsync客戶端爲192.168.199.245。
rsync服務器已經正常運行,相關配置文件如下:
下面我們的所有操作都是在rsync客戶端上進行的,執行如下命令:
rsync -avz --delete --progress /cygdrive/e/www [email protected]::www --password-file=/cygdrive/e/rsyncd.password
注意:上述命令行中的/cygdrive/e/表示windows系統的E盤,/cygdrive/e/rsyncd.password表示E盤下的rsyncd.password文件。
通過上圖,我們可以很明顯的看到windows系統的文件已經同步到Linux系統上了。
但是這個同步還是有一個缺點的就是不能實時同步,windows系統不像Linux系統那樣支持inotify。
但是我們可以通過windows自帶的任務計劃,讓系統自行進行同步。儘管這個和服務器還是有一定的時間差的,但是有總比沒有好。
我們可以把上述命令,寫到一個批處理文件中,然後在任務計劃中進行配置。如下:
二、Linux系統同步文件到windows系統
要把Linux系統文件同步奧windows系統,需要我們在windows系統上配置rsync服務端,即安裝cwRsyncserver。
cwRsyncserver目前網絡上的免費版本爲4.1.0,我們可以去這個連接下載《cwRsync_server4.1.0下載》。
cwRsyncServer下載完畢後,進行安裝即可。其中有一點需要注意,就是在安裝的過程中,會出現如下的提示:
這個對話框是要你輸入cwRsyncServer在系統中新建用戶的用戶名及密碼。
cwRsyncServer安裝完畢後,我們就可以在windows的服務中看到rsync服務。如下:
rsyncserver安裝完畢後,我們現在來配置rsyncserver。windows下rsyncserver的配置和Linux下rsync服務配置沒有多大的區別。
rsyncserver安裝完畢後,配置文件已經形成。我們可以在其的安裝目錄下看到。如下:
我們現在來修改rsync的配置文件rsyncd.conf,如下:
use chroot = false
strict modes = false
hosts allow = *
log file = rsyncd.log
[www]
path = /cygdrive/e/www/
ignore errors
read only = no
list = no
hosts allow = 192.168.199.0/255.255.255.0
auth users = apache
secrets file = /cygdrive/e/rsyncd.password
配置文件rsyncd.conf修改完畢後,我們來創建www模塊的同步文件夾,如下:
注意:同步文件夾創建完畢後,一定要把我們在前面安裝rsyncserver時創建的用戶,對該文件夾具有完全所有權。如下:
同步文件夾創建完畢後,我們再來創建同步時的密碼文件,如下:
注意:該文件創建完畢後,一定要使用chmod命令修改其權限。這個和Linux系統上是一樣的。
chmod命令在rsyncserver的bin目錄下,我們可以直接使用。如下:
如果不使用chmod命令修改的話,回報以下的錯誤信息:
chmod 600 rsyncd.password
以上全部修改並配置完畢後,我們就可以啓動rsyncserver,如下:
現在在Linux機器上檢查是否可以正常連接,rsync服務端。如下:
通過上圖,我們可以看到Linux機器是可以正常連接rsync服務端的。
現在我們開始在rsync客戶端進行同步,如下:
rsync -avz /www/ [email protected]::www --password-file=/etc/rsyncd.password
切換到rsync服務端,查看是否同步過來。如下:
通過上圖,可以看到Linux已經把文件同步到windows系統中。
因爲rsync客戶端是Linux系統,所以我們也可以實時的把Linux系統的文件同步到windows系統上。
同步腳本如下:
#!/bin/bash
src=/root/www/
dest=www
ip=192.168.199.247
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y%H:%M' --format '%T %w %f' -e modify,delete,create,attrib $src | while read DATE TIME DIR FILE;
do
filechange=${DIR}${FILE}
/usr/bin/rsync -avz --delete --progress $src apache@$ip::$dest --password-file=/etc/rsyncd.password &
echo "At ${TIME} on ${DATE}, file $filechange was backed up via rsynce" >>/tmp/rsync.log 2>&1
done
三、 windows與windows系統之間的文件同步
windows與windows系統之間的文件同步,我們只需要在windows系統上安裝rsync相應的客戶端與服務端即可。
rsync服務端192.168.199.245,rsync客戶端192.168.199.244。
對於rsync客戶端是windows系統的,我們的rsync服務端要進行一些修改否則會提示出錯。出錯信息如下:
我們需要在rsyncd.conf配置文件中加入uid和gid,如下:
然後重啓rsyncserver即可。
rsync客戶端測試rsync服務端,如下:
telnet 192.168.199.245 873
客戶端創建完畢密碼文件後,我們就可以來同步。如下:
rsync -avz /cygdrive/e/soft [email protected]::www --password-file=/cygdrive/e/rsyncd.password
同步完畢後,我們來切換到rsync服務端查看,如下:
通過上圖,我們可以看到rsync客戶端確實已經把文件同步到rsync服務端上了。
注意:如果你在同步時,碰到系統一直提示輸入密碼,即使你在rsync同步命令中加入了密碼文件。
這時我們就需要先建立密碼文件rsyncd.password並把密碼也存入到裏面,然後在建議一個用於專門存儲密碼的文件passwd.txt。
passwd.txt文件與rsyncd.password文件的內容一模一樣即可。如下:
然後使用如下的同步命令進行同步即可:
rsync -avz /cygdrive/e/soft [email protected]::www --password-file=/cygdrive/e/rsyncd.password < E:\passwd.txt
注意:windows系統與windows系統之間目前還不能實現文件的實時同步,我們還只能通過任務計劃來實現定時的同步任務。