爛泥:Linux系統與windows系統文件同步

本文首發於爛泥行天下

上篇文章中,我們介紹了有關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,我們下載解壓後配置下,就可以正常使用。如下:

clip_p_w_picpath001

注意:圖中的cwrsync.cmd文件,我們可以雙擊該文件進行配置cwRsync,也可以自行進行配置。但是通過我的實際驗證該文件不能成功配置cwRsync,所以建議手工進行配置。

其實配置就是把目前cwRsync所在的路徑加入到系統的環境變量中。

手工配置如下:

clip_p_w_picpath002

clip_p_w_picpath003

通過上圖,我們可以看到rsync客戶端cwRsync已經安裝完畢。

注意:windows下的rsync客戶端與Linux下rsync客戶端配置是一樣的,只是在路徑中有不同之處。

下面就開始配置rsync客戶端,創建rsync的密碼文件,如下:

clip_p_w_picpath004

rsync服務端的配置與《爛泥:linux文件同步之rsync學習(一)》這篇文章同一個環境。

我們現在的要求是把rsync客戶端E:\www文件夾下的文件同步到rsync服務器上。

rsync服務器是192.168.199.247,rsync客戶端爲192.168.199.245。

rsync服務器已經正常運行,相關配置文件如下:

clip_p_w_picpath005

clip_p_w_picpath006

下面我們的所有操作都是在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文件

clip_p_w_picpath007

clip_p_w_picpath008

通過上圖,我們可以很明顯的看到windows系統的文件已經同步到Linux系統上了。

但是這個同步還是有一個缺點的就是不能實時同步,windows系統不像Linux系統那樣支持inotify。

但是我們可以通過windows自帶的任務計劃,讓系統自行進行同步。儘管這個和服務器還是有一定的時間差的,但是有總比沒有好。

我們可以把上述命令,寫到一個批處理文件中,然後在任務計劃中進行配置。如下:

clip_p_w_picpath009

clip_p_w_picpath010

二、Linux系統同步文件到windows系統

要把Linux系統文件同步奧windows系統,需要我們在windows系統上配置rsync服務端,即安裝cwRsyncserver。

cwRsyncserver目前網絡上的免費版本爲4.1.0,我們可以去這個連接下載《cwRsync_server4.1.0下載》。

cwRsyncServer下載完畢後,進行安裝即可。其中有一點需要注意,就是在安裝的過程中,會出現如下的提示:

clip_p_w_picpath011

這個對話框是要你輸入cwRsyncServer在系統中新建用戶的用戶名及密碼。

cwRsyncServer安裝完畢後,我們就可以在windows的服務中看到rsync服務。如下:

clip_p_w_picpath012

rsyncserver安裝完畢後,我們現在來配置rsyncserver。windows下rsyncserver的配置和Linux下rsync服務配置沒有多大的區別。

rsyncserver安裝完畢後,配置文件已經形成。我們可以在其的安裝目錄下看到。如下:

clip_p_w_picpath013

我們現在來修改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

clip_p_w_picpath014

配置文件rsyncd.conf修改完畢後,我們來創建www模塊的同步文件夾,如下:

clip_p_w_picpath015

注意:同步文件夾創建完畢後,一定要把我們在前面安裝rsyncserver時創建的用戶,對該文件夾具有完全所有權。如下:

clip_p_w_picpath016

同步文件夾創建完畢後,我們再來創建同步時的密碼文件,如下:

clip_p_w_picpath017

注意:該文件創建完畢後,一定要使用chmod命令修改其權限。這個和Linux系統上是一樣的。

chmod命令在rsyncserver的bin目錄下,我們可以直接使用。如下:

clip_p_w_picpath018

如果不使用chmod命令修改的話,回報以下的錯誤信息:

clip_p_w_picpath019

chmod 600 rsyncd.password

clip_p_w_picpath020

以上全部修改並配置完畢後,我們就可以啓動rsyncserver,如下:

clip_p_w_picpath021

現在在Linux機器上檢查是否可以正常連接,rsync服務端。如下:

clip_p_w_picpath022

通過上圖,我們可以看到Linux機器是可以正常連接rsync服務端的。

現在我們開始在rsync客戶端進行同步,如下:

rsync -avz /www/ [email protected]::www --password-file=/etc/rsyncd.password

clip_p_w_picpath023

切換到rsync服務端,查看是否同步過來。如下:

clip_p_w_picpath024

通過上圖,可以看到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

clip_p_w_picpath025

三、 windows與windows系統之間的文件同步

windows與windows系統之間的文件同步,我們只需要在windows系統上安裝rsync相應的客戶端與服務端即可。

rsync服務端192.168.199.245,rsync客戶端192.168.199.244。

對於rsync客戶端是windows系統的,我們的rsync服務端要進行一些修改否則會提示出錯。出錯信息如下:

clip_p_w_picpath026

我們需要在rsyncd.conf配置文件中加入uid和gid,如下:

clip_p_w_picpath027

然後重啓rsyncserver即可。

rsync客戶端測試rsync服務端,如下:

telnet 192.168.199.245 873

clip_p_w_picpath028

客戶端創建完畢密碼文件後,我們就可以來同步。如下:

rsync -avz /cygdrive/e/soft [email protected]::www --password-file=/cygdrive/e/rsyncd.password

clip_p_w_picpath029

同步完畢後,我們來切換到rsync服務端查看,如下:

clip_p_w_picpath030

通過上圖,我們可以看到rsync客戶端確實已經把文件同步到rsync服務端上了。

注意:如果你在同步時,碰到系統一直提示輸入密碼,即使你在rsync同步命令中加入了密碼文件。

這時我們就需要先建立密碼文件rsyncd.password並把密碼也存入到裏面,然後在建議一個用於專門存儲密碼的文件passwd.txt。

passwd.txt文件與rsyncd.password文件的內容一模一樣即可。如下:

clip_p_w_picpath031

然後使用如下的同步命令進行同步即可:

rsync -avz /cygdrive/e/soft [email protected]::www --password-file=/cygdrive/e/rsyncd.password < E:\passwd.txt

注意:windows系統與windows系統之間目前還不能實現文件的實時同步,我們還只能通過任務計劃來實現定時的同步任務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章