萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> windows rsync完整教程

windows rsync完整教程

  rsync是類unix系統下的數據鏡像備份工具,從軟件的命名上就可以看出來了——remote sync。

  它的特性如下:

  1、可以鏡像保存整個目錄樹和文件系統。

  2、可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。

  3、無須特殊權限即可安裝。

  4、優化的流程,文件傳輸效率高。

  5、可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。

  6、支持匿名傳輸。

  2. 安裝

  1.環境:

  軟件平台:windows2003

  軟件版本:cwRsync_2.0.10_Installer cwRsync_Server_2.0.10_Installer

  硬件平台:dell2950 cpu1.6G*4 內存:4G 硬盤:1G*6 RAID5

  2.安裝

  在WINDOWS環境下安裝rsync要安裝服務端和客戶端

  服務器端安裝:運行cwRsync_Server_2.0.10_Installe

  客戶端安裝:運行cwRsync _2.0.10_Installe

  安裝步驟和安裝服務器端是一樣的這裡就不詳細描述

  3. 配置

  配置和我們在linux下面的配置一樣,在安裝目錄中找到rsync.conf文件進行配置:

  Rsync.conf文件:

  pid file = /var/run/rsyncd.pid

  lock file = /var/run/rsync.lock

  log file = /var/log/rsyncd.log

  uid = administrator

  gid = administrator

  use chroot = no

  max connections =4

  syslog facility = local5

  [test]

  path =/cygdrive/d/wlk

  comment=/cygdrive/d/wlk comment = BACKUP CLIENT IS SOLARIS 8 E250

  ignore errors # 可以忽略一些無關的IO錯誤

  read only = yes # 只讀

  list = no # 不允許列文件

  auth users = inburst # 認證的用戶名,如果沒有這行,

  則表明是匿名

  secrets file = etc/inburst.pas # 認證文件名

  在server端生成一個密碼文件etc/inburst.pas

  打開記事本

  inburst:hack

  保存在安裝路徑下面的etc文件加下面文件明保存為inburst.pas

  在服務中把RsyncServer啟動,啟動類型修改為自動

  這樣服務器端就安裝設置好了

  從client端進行測試

  下面這個命令行中-vzrtopg裡的v是verbose,z是壓縮,r是recursive,topg都是保持文件原有屬性如屬主、時間的參數。 --progress是指顯示出詳細的進度情況,--delete是指如果服務器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致。

  後面的inburst@ip中,inburst是指定密碼文件中的用戶名,之後的::inburst這一inburst是模塊名,也就是在/etc/rsyncd.conf中自定義的名稱。最後的/tmp是備份到本地的目錄名。

  在這裡面,還可以用-e ssh的參數建立起加密的連接。可以用--password-file=/password/path/file來指定密碼文件,這樣就可以在腳本中使用而無需交互式地輸入驗證密碼了,這裡需要注意的是這份密碼文件權限屬性要設得只有屬主可讀。

  在客戶端運行CMD

  rsync -av 10.0.0.16::401 /cygdrive/h/401

  4. FAQ

  Q:如何通過ssh進行rsync,而且無須輸入密碼?

  A:可以通過以下幾個步驟

  1. 通過ssh-keygen在server A上建立SSH keys,不要指定密碼,你會在~/.ssh下看到identity和identity.pub文件

  2. 在server B上的home目錄建立子目錄.ssh

  3. 將A的identity.pub拷貝到server B上

  4. 將identity.pub加到~[user b]/.ssh/authorized_keys

  5. 於是server A上的A用戶,可通過下面命令以用戶B ssh到server B上了

  e.g. ssh -l userB serverB

  這樣就使server A上的用戶A就可以ssh以用戶B的身份無需密碼登陸到server B上了。

  Q:如何通過在不危害安全的情況下通過防火牆使用rsync?

  A:解答如下:

  這通常有兩種情況,一種是服務器在防火牆內,一種是服務器在防火牆外。

  無論哪種情況,通常還是使用ssh,這時最好新建一個備份用戶,並且配置sshd僅允許這個用戶通過RSA認證方式進入。

  如果服務器在防火牆內,則最好限定客戶端的IP地址,拒絕其它所有連接。

  如果客戶機在防火牆內,則可以簡單允許防火牆打開TCP端口22的ssh外發連接就ok了。

  Q:我能將更改過或者刪除的文件也備份上來嗎?

  A:當然可以:

  你可以使用如:rsync -other -options -backupdir = ./backup-2000-2-13 ...這樣的命令來實現。

  這樣如果源文件:/path/to/some/file.c改變了,那麼舊的文件就會被移到./backup-2000-2-13/path/to/some/file.c,

  這裡這個目錄需要自己

  手工建立起來

  Q:我需要在防火牆上開放哪些端口以適應rsync?

  A:視情況而定

  rsync可以直接通過873端口的tcp連接傳文件,也可以通過22端口的ssh來進行文件傳遞,但你也可以通過下列命令改變它的端口:

  rsync --port 8730 otherhost:: 或者 rsync -e 'ssh -p 2002' otherhost:

  Q:我如何通過rsync只復制目錄結構,忽略掉文件呢?

  A:rsync -av --include '*/' --exclude '*' source-dir dest-dir

  Q:為什麼我總會出現"Read-only file system"的錯誤呢?

  A:看看是否忘了設"read only = no"了

  Q:為什麼我會出現'@ERROR: invalid gid'的錯誤呢?

  A:rsync使用時默認是用uid=nobody;gid=nobody來運行的,如果你的系統不存在nobody組的話,就會出現這樣的錯誤,可以試試gid =

  nogroup或者其它

  Q:綁定端口873失敗是怎麼回事?

  A:如果你不是以root權限運行這一守護進程的話,因為1024端口以下是特權端口,會出現這樣的錯誤。你可以用--port參數來改變。

  Q:為什麼我認證失敗?

  A:從你的命令行看來:

  你用的是:

  > bash$ rsync -a 144.16.251.213::test test

  > Password:

  > @ERROR: auth failed on module test

  > I dont understand this. Can somebody explain as to how to acomplish this.

  > All suggestions are welcome.

  應該是沒有以你的用戶名登陸導致的問題,試試rsync -a [email protected]::test test

  rsync在windows與windows服務器之間的同步設置

  1.准備兩台機器:

  server-----192.168.0.201

  client-----192.168.0.202

  2.下載windows版的rsync工具

  文件: cwRsync_client_2.0.10_Installer.zip

  server端:cwRsync_Server_2.0.10_Installer.zip

  client端:cwRsync_2.0.10_Installer.zip

  3.安裝與配置

  SERVER:

  (1)安裝cwRsync_Server_2.0.10_Installer.zip

  在開始程序中打開“start a unix bash shell”程序:

  進入一個類似cmd的終端,輸入如下命令:

  $/bin/activate-user.sh

  輸入l

  輸入administrator

  後面全按回來結束

  (2)啟動opensshd

  打開“控制面板”-->“管理工具”-->“服務”:

  找到一個opensshd的服務,啟動它

  (3)配置rsyncd.conf配置文件

  編輯C:/Program Files/cwRsyncServer/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

  [rsync]

  path = /cygdrive/f/rsync (此處路徑代表f:/rsync目錄)

  read nly = yes

  transfer logging = yes

  secrets file = /cygdrive/f/rsyncd.secrets

  (4)啟動rsync服務

  打開“控制面板”-->“管理工具”-->“服務”:

  找到一個RsyncServer的服務,啟動它

  到此server端配置結束,接下來配置client端。

  CLIENT:

  (1)安裝client端軟件包:cwRsync_2.0.10_Installer.zip

  (2)打開cmd,執行如下操作,測試服務端是否正常啟動服務了:

  cd C:/Program Files/cwRsync/bin

  telnet 192.168.0.201 22

  telnet 192.168.0.201 873

  若上述測試成功,此時可執行同步計劃:

  rsync -vzrtopg --progress --delete 192.168.0.201::rsync /cygdrive/d/test

  或者是:

  rsync -vzrtopg --progress --delete 192.168.0.201:/cygdrive/d/rsync /cygdrive/d/test

  (此時,會提示輸入密碼,用戶名為administrator,密碼則為192.168.0.201的管理員登錄密碼)

  至此,安裝配置windows到windows間的同步已經OK

  如果定時同步server上的文件,可將其加入任務計劃中。

copyright © 萬盛學電腦網 all rights reserved