1. 程式人生 > >一、rsync +cwrsync實現windows和linux的檔案同步

一、rsync +cwrsync實現windows和linux的檔案同步

Rsync(remote synchronize)是一個遠端資料同步工具,可通過LAN/WAN快速同步多臺主機間的檔案,也可以使用 Rsync 同步本地硬碟中的不同目錄。

一、Linux伺服器端安裝rsync服務

1、可以通過yum安裝:

yum -y install rsync 
 
#啟動rsync服務
systemctl start rsyncd.service
systemctl enable rsyncd.service

#檢查是否已經成功啟動
netstat -lnp|grep 873

2、rsync伺服器的配置檔案rsyncd.conf (/etc/rsyncd/rsyncd.conf):

rsync的主要有以下三個配置檔案:

  • rsyncd.conf(主配置檔案)
  • rsyncd.passwd(密碼檔案)
  • rsyncd.motd(rysnc伺服器資訊)

3、在/etc目錄下建立一個rsyncd的目錄,用來存放rsyncd.passwd檔案

mkdir rsyncd
touch rsyncd.passwd
chmod 600 rsyncd.pwsswd        #為了密碼的安全性,我們把許可權設為600

配置rsyncd.passwd檔案:

rsyncd.passwd的內容格式為 使用者名稱:密碼

root:123456

**注意:
將rsyncd.passwd這個密碼檔案的檔案屬性設為root擁有, 且許可權要設為600, 否則無法備份成功! 出於安全目的,檔案的屬性必需是隻有屬主可讀**

4、配置rsyncd.conf檔案:

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

#伺服器端傳輸檔案時,要發哪個使用者和使用者組來執行,預設是nobody
uid = root 
gid = root

#如果"use chroot"指定為yes,那麼rsync在傳輸檔案以前首先chroot到path引數所指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要以root許可權,並且不能備份指向外部的符號連線所指向的目錄檔案。預設情況下chroot值為yes 
use chroot = no

#客戶端最多連線數
max connections = 4

#指定執行埠,預設是873
#port = 8877  

#指定伺服器IP地址
#address = 192.168.56.102

# CentOS7中yum安裝不需指定pid file 否則報錯
# pid file = /var/run/rsyncd.pid 
lock file =/var/run/rsyncd.lock
#日誌檔案
log file = /var/log/rsyncd.log
# //此檔案定義完成後系統會自動建立
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 

#同步模組
[test_data]
#指定檔案目錄所在路徑
path = /opt/leasing

#list 意思是把rsync 伺服器上提供同步資料的目錄在伺服器上模組是否顯示列出來。預設是yes 。如果你不想列出來,就no ;如果是no是比較安全的,至少別人不知道你的伺服器上提供了哪些目錄。你自己知道就行了
list=no

#指定在 rsync 伺服器上執行 delete 操作時是否忽略 I/O 錯誤。一般來說 rsync 在出現 I/O 錯誤時將將跳過 –delete 操作,以防止因為暫時的資源不足或其它 I/O 錯誤導致的嚴重問題。
ignore errors

#如果為yes,表示只讀本地檔案就無法同步到伺服器
read noly = no

#允許連線的ip,在演示中使用的雲伺服器就直接寫*,表示無限制 如果要規定ip(192.168.10.223)或者ip段(10.1.4.0/255.255.255.0)需要進行其他配置
hosts allow=*

#auth users 是必須在伺服器上存在的真實的系統使用者,如果你想用多個使用者,那就以,號隔開
auth users = root

#密碼存在rsyncd.passwd檔案裡
secrets file=/etc/rsyncd/rsyncd.passwd


# [ftp]
#        path = /home/ftp
#        comment = ftp export area

5、配置rsyncd.motd 檔案(似乎也不是必須的)

rsyncd.motd 檔案類似ftp伺服器登入時,我們所看到的提示資訊……,當然這在全域性定義變數時,並不是必須的,你可以用#號注掉,或刪除

++++++++++++++++++++++++++++++++++++++++++++++
歡迎使用
++++++++++++++++++++++++++++++++++++++++++++++
---------------------

6、重啟: 

systemctl restart rsyncd.service

 二、windows安裝cwRsync客戶端

1、下載服務端安裝檔案 http://www.jb51.net/softs/55933.html

2、cwRsync客戶端不需要很複雜的配置,配置Windows的環境變數PATH:E:\cwRsync\Install\bin

3、在windows本地新建一個要同步的目錄rsync_data作為同步資料的目錄(名字自定義)

4、在E:\cwRsync目錄下建立一個記錄密碼的檔案rsync.passwd 內容即密碼: 123456

5、寫一個bat批處理檔案,另存為 ANSI 格式的bat(不然會亂碼):rsync_start.bat

@echo off
echo 開始同步伺服器/opt/leasing/資料到本地rsync_data目錄下
cd E:\cwRsync\Install\bin
rsync.exe --port=873 -avzP --delete --password-file=/cygdrive/e/cwRsync/rsync.passwd  [email protected]::test_data/  /cygdrive/E/cwRsync/rsync_data
echo 同步完成
pause



#–port=873 #埠
#--password-file 密碼檔案
#root #執行資料同步的使用者
#106.14.69.110 #伺服器地址
#test_data #模組名稱
#--delete #從cwRsync客戶端E:\cwRsync\rsync_data目錄中刪除與Rsync服務端/opt/leasing目錄中不相同的資料,即保證兩邊的資料完全一致
#/cygdrive/E/cwRsync/rsync_data 表示本地的同步資料夾E盤:E:/cwRsync/rsync_data 為同步資料夾

由於rsync始終是Linux下的東西,所以在設定win的儲存目錄的時候,必須/cygdrive帶頭後面跟碟符及目錄

執行rsync_start.bat即可。

三、可新增批處理指令碼到Windows任務計劃,實現自動同步資料

四、Windows同步到linux:  https://www.linuxidc.com/Linux/2012-09/71333.htm