Windows 之間用rsync同步數據(cwRsyncServer配置)

Windows 之間用rsync同步數據(cwRsyncServer配置) php

Windows 之間用rsync同步數據(cwRsyncServer配置) html

前提:在服務端要安裝COpssh.(opend ssh 服務)
rsync
是一款優秀的數據同步軟件,在跨服務器,跨機房,跨國備份服務器的首選工具,下面就來介紹下如何配置安裝cwRsyncServer很大多數軟件同樣是B/C架構,cwRsyncServerrsyncwindows版本

一,下載
官方下載地址:官方網站:http://rsync.samba.org/download.html
下載地址:
mysql

http://sourceforge.net/projects/sereds/files/cwRsync/4.1.0/ sql

服務器版爲:cwRsyncServer_4.1.0_Installer.rar windows

客戶端爲:cwRsync_4.1.0_Installer.rar 服務器

2、安裝 架構

服務器IP192.168.1.1 ssh

客戶端IP:192.168.1.2 異步

1,服務器安裝
第一步:創建cwRsyncServer運行帳戶,這一步是必須的,不然你安裝完連啓動都啓動不來哦
用戶名:test
密碼:test
而且加入管理員組!
注意:這個賬號只是安裝和運行用的帳戶,別無它用 socket

第二步:安裝
安裝如圖:


點擊「NEXT」,進入下一步;


選擇「I Agree

填入安裝的目錄。點擊下一步

按照完畢後點擊closed便可

第三步:配置
咱們按照的路徑是:E:\Program Files\ICW\
那咱們就進入到這個目錄
打開rsyncd.conf編輯內容以下:

use chroot = false
uid = 0
gid = 0
strict modes = false
log file = rsyncd.log
port = 10556
[www]
path = /cygdrive/c/www
read only = false
transfer logging = yes
auth users = testuser
secrets file = etc/testuser.pas
hosts allow = 192.168.1.2
hosts deny = 0.0.0.0/0

[mysql]
path = /cygdrive/d/MySQL/MySQL Server 5.0/data/bbs
auth users = testuser
secrets file = etc/testuser.pas
hosts allow = 192.168.1.2
hosts deny = 0.0.0.0/0


而後進入E:\Program Files\ICW\etc目錄創建testuser.pas文本文件,注意文件全名爲testuser.pas

輸入:
testuser:123
即:用戶名爲:testuser
密碼爲:123
這個用戶纔是客戶端鏈接服務器是要認證的用戶名和密碼

rsync的默認端口是873

第四步:啓動服務
運行---cmd---services.msc。找到RsyncServer服務,啓動。


本地測試一下:telnet 127.0.0.1 10556

防火牆記得開啓這個端口

2
,客戶端安裝
解壓:cwRsync_4.1.0_Installer.zip按照嚮導安裝
按照完成後:
cd C:\Program Files\cwRsync\bin>

啓動客戶端鏈接服務器
rsync.exe -vzrtopg --progress --delete

wodetop@1 92.168.1.1::www /cygdrive/e/databackup/www --port=10556
輸入密碼

3
,設置計劃任務,定時同步數據:

注意,計劃任務這塊要提示輸入密碼,下面是不用輸入密碼的腳本

@echo off

"c:\Program Files\cwRsync\bin\rsync.exe" -vzrtopg --progress --delete cnuser@192.168.1.1::www /cygdrive/e/databackup/www --port=10556 --password-file=/cygdrive/e/databackup/rsyncpwd.txt < E:\databackup\passwd.txt

複製代碼


E:\databackup目錄下創建一個空文件名:rsyncpwd.txt 再創建個E:\databackup\passwd.txt 輸入密碼

否這回出現下面錯誤:password file must not be other-accessible

password file must be owned by root when running as root


樓下會給出常見的一些問題


安裝完 cwRsync客戶端後,開始寫bat 執行文件,遇到的第一件事情就是就同步到本地時 目錄不認識,報錯以下:

The source and destination cannot both be remote.
rsync error: syntax or usage error (code 1) at main.c(1138) [Receiver=3.0.7]

主要緣由是cwRsync 不能直接認識本地盤,必須加上 /cygdrive/g/test

意思爲g:\test目錄

客戶端密碼文件報錯以下:

rsync password file must be owned by root when running as root

萬能的GOOGLE告訴我,能夠用一個變通的方式解決就是

@echo off
"C:\Program Files (x86)\cwRsync\bin\rsync" -rlptDzv --progress --delete "backup@192.88.88.128::test" /cygdrive/g/test --password-file=/cygdrive/g/rsync/passws.ps<g:\rsync\passwd.txt

g:\rsync 下創建了一個文件,寫入密碼,而後同步密碼最後在這個文件中輸入便可。如上所例。

常見錯誤:

錯誤一
rsync: failed to connect to 96.44.169.178 (*inet_ntop failed*): Connection timed
out (116)
1 [main] rsync 3468 exception::handle: Exception: STATUS_ACCESS_VIOLATION
740 [main] rsync 3468 open_stackdumpfile: Dumping stack trace to rsync.exe.s
tackdump
1,
防火牆問題
2
,端口不對

錯誤二
@ERROR : auth failed on module www
rsync error: error starting client-server protocol (code 5) at main.c(1516) [Rec
eiver=3.0.8]
密碼不對

錯誤三
@ERROR : invalid uid nobody
rsync error: error starting client-server protocol (code 5) at main.c(1516) [Rec
eiver=3.0.8]
UID
不對,默認是nobody
解決方法:
uid = 0
gid = 0

錯誤四
receiving incremental file list
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(769) [receive
r=3.0.8]
rsync: connection unexpectedly closed (60 bytes received so far) [generator]
rsync error: error in rsync protocol data stream (code 12) at io.c(610) [generat
or=3.0.8]
可能緣由:
1
,磁盤掛載是用異步的(async)
而後,檢查了/etc/fstab ,去掉async參數。

2
,我在服務器上查看日誌,看到有這麼一行:
rsync: unable to open configuration file "/etc/rsyncd.conf": No such file or directory

因而我:
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

3
,同步文件數較多的目錄出錯
有個子目錄中文件較多,也就8000來個吧,老是同步一半便退出。在批處理中加上-v參數,看到錯誤信息以下:
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Connection reset by peer (104)
rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(768) [sender=
3.0.6]

這個問題有點頭疼,在www.itefix.no網站論壇上也沒能查出個因此然。

不過最終仍是在samba.org上找到解決方案:

在客戶端命令行中加上--no-iconv參數就能夠了。

原覺得是文件太多,緩衝區不夠引發,但看這個解決方案,彷佛是轉換編碼方面的bug了。

rsync的文檔中描述以下:
http://rsync.samba.org/ftp/rsync/rsync.html
--iconv=CONVERT_SPEC
Rsync can convert filenames between character sets using this option. Using a CONVERT_SPEC of "." tells rsync to look up the default character-set via the locale setting. Alternately, you can fully specify what conversion to do by giving a local and a remote charset separated by a comma in the order --iconv=LOCAL,REMOTE, e.g. --iconv=utf8,iso88591. This order ensures that the option will stay the same whether you're pushing or pulling files. Finally, you can specify either --no-iconv or a CONVERT_SPEC of "-" to turn off any conversion. The default setting of this option is site-specific, and can also be affected via the RSYNC_ICONV environment variable.

正值巔峯!

相關文章
相關標籤/搜索