天天看點

RSync實作檔案備份同步

[rsync實作網站的備份,檔案的同步,不同系統的檔案的同步,如果是windows的話,需要windows版本cwrsync]

一、什麼是rsync

  rsync,remote synchronize顧名思意就知道它是一款實作遠端同步功能的軟體,它在同步檔案的同時,可以保持原來檔案的權限、時間、軟硬連結等附加資訊。rsync是用 “rsync算法”提供了一個客戶機和遠端檔案伺服器的檔案同步的快速方法,而且可以通過ssh方式來傳輸檔案,這樣其保密性也非常好,另外它還是免費的軟體。

  rsync 包括如下的一些特性:

  能更新整個目錄和樹和檔案系統;

  有選擇性的保持符号鍊鍊、硬連結、檔案屬于、權限、裝置以及時間等;

  對于安裝來說,無任何特殊權限要求;

  對于多個檔案來說,内部流水線減少檔案等待的延時;

  能用rsh、ssh 或直接端口做為傳輸入端口;

  支援匿名rsync 同步檔案,是理想的鏡像工具;

二、架設rsync伺服器

  架設rsync 伺服器比較簡單,寫一個配置檔案rsyncd.conf 。檔案的書寫也是有規則的,我們可以參照rsync.samba.org 上的文檔來做。當然我們首先要安裝好rsync這個軟體才行;

A、rsync的安裝;

  擷取rsync

  rysnc的官方網站:http://rsync.samba.org/可以從上面得到最新的版本。目前最新版是3.05。當然,因為rsync是一款如此有用的軟體,是以很多Linux的發行版本都将它收錄在内了。

  軟體包安裝

  # sudo apt-get install rsync 注:在debian、ubuntu 等線上安裝方法;

  # yum install rsync 注:Fedora、Redhat 等線上安裝方法;

  # rpm -ivh rsync 注:Fedora、Redhat 等rpm包安裝方法;

  其它Linux發行版,請用相應的軟體包管理方法來安裝。

  源碼包安裝

  tar xvf rsync-xxx.tar.gz

  cd rsync-xxx

  ./configure --prefix=/usr ;make ;make install 注:在用源碼包編譯安裝之前,您得安裝gcc等編譯開具才行;

    

B、配置檔案

  rsync的主要有以下三個配置檔案rsyncd.conf(主配置檔案)、rsyncd.secrets(密碼檔案)、rsyncd.motd(rysnc伺服器資訊)

  伺服器配置檔案(/etc/rsyncd.conf),該檔案預設不存在,請建立它。

  具體步驟如下:

  #touch /etc/rsyncd.conf #建立rsyncd.conf,這是rsync伺服器的配置檔案。

  #touch /etc/rsyncd.secrets #建立rsyncd.secrets ,這是使用者密碼檔案。

  #chmod 600 /etc/rsyncd/rsyncd.secrets #将rsyncd.secrets這個密碼檔案的檔案屬性設為root擁有, 且權限要設為600, 否則無法備份成功!

  #touch /etc/rsyncd.motd

  下一就是我們修改rsyncd.conf和rsyncd.secrets和rsyncd.motd檔案的時候了。

  設定/etc/rsyncd.conf

  rsyncd.conf是rsync伺服器主要配置檔案。我們先來個簡單的示例,後面在詳細說明各項作用。

  比如我們要備份伺服器上的/home和/opt,在/home中我想把easylife和samba目錄排除在外;

  # Distributed under the terms of the GNU General Public License v2

  # Minimal configuration file for rsync daemon

  # See rsync(1) and rsyncd.conf(5) man pages for help

  # This line is required by the /etc/init.d/rsyncd script

  pid file = /var/run/rsyncd.pid

  port = 873

  address = 192.168.1.171

  #uid = nobody

  #gid = nobody

  uid = root

  gid = root

  use chroot = yes

  read only = yes

  #limit access to private LANs

  hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0

  hosts deny=*

  max connections = 5

  motd file = /etc/rsyncd.motd

  #This will give you a separate log file

  #log file = /var/log/rsync.log

  #This will log every file transferred - up to 85,000+ per user, per sync

  #transfer logging = yes

  log format = %t %a %m %f %b

  syslog facility = local3

  timeout = 300

  [rhel4home]

  path = /home

  list=yes

  ignore errors

  auth users = root

  secrets file = /etc/rsyncd.secrets

  comment = This is RHEL 4 data

  exclude = easylife/ samba/

  [rhel4opt]

  path = /opt

  list=no

  ignore errors

  comment = This is RHEL 4 opt

  auth users = easylife

  secrets file = /etc/rsyncd/rsyncd.secrets

  注:關于auth users是必須在伺服器上存在的真實的系統使用者,如果你想用多個使用者以,号隔開,比如auth users = easylife,root

  設定密碼檔案

  密碼檔案格式很簡單,rsyncd.secrets的内容格式為:

  使用者名:密碼

  我們在例子中rsyncd.secrets的内容如下類似的;在文檔中說,有些系統不支援長密碼,自己嘗試着設定一下吧。

  easylife:keer

  root:mike

  chown root.root rsyncd.secrets  #修改屬主

  chmod 600 rsyncd.secrets #修改權限

  注:1、将rsyncd.secrets這個密碼檔案的檔案屬性設為root擁有, 且權限要設為600, 否則無法備份成功! 出于安全目的,檔案的屬性必需是隻有屬主可讀。

    2、這裡的密碼值得注意,為了安全你不能把系統使用者的密碼寫在這裡。比如你的系統使用者easylife密碼是000000,為了安全你可以讓rsync中的easylife為keer。這和samba的使用者認證的密碼原理是差不多的。

  設定rsyncd.motd 檔案;

   它是定義rysnc伺服器資訊的,也就是使用者登入資訊。比如讓使用者知道這個伺服器是誰提供的等;類似ftp伺服器登入時,我們所看到的linuxsir.org ftp ……。 當然這在全局定義變量時,并不是必須的,你可以用#号注掉,或删除;我在這裡寫了一個rsyncd.motd的内容為:

  ++++++++++++++++++++++++++++++++++++++++++++++

  Welcome to use the mike.org.cn rsync services!

2002------2009

三、rsyncd.conf伺服器的配置詳解

A、全局定義

  在rsync 伺服器中,全局定義有幾個比較關健的,根據我們前面所給的配置檔案 rsyncd.conf 檔案;

  pid file = /var/run/rsyncd.pid 注:告訴程序寫到 /var/run/rsyncd.pid 檔案中;

  port = 873 注:指定運作端口,預設是873,您可以自己指定;

  address = 192.168.1.171 注:指定伺服器IP位址

  uid = nobody

  gid = nobdoy

   注:伺服器端傳輸檔案時,要發哪個使用者和使用者組來執行,預設是nobody。 如果用nobody使用者和使用者組,可能遇到權限問題,有些檔案從伺服器上拉不下來。是以我就偷懶,為了友善,用了root。不過您可以在定義要同步的目錄時定義的子產品中指定使用者來解決權限的問題。

  use chroot = yes

   注:用chroot,在傳輸檔案之前,伺服器守護程式在将chroot到檔案系統中的目錄中,這樣做的好處是可能保護系統被安裝漏洞侵襲的可能。缺點是需要超級使用者權限。另外對符号連結檔案,将會排除在外。也就是說,你在rsync伺服器上,如果有符号連結,你在備份伺服器上運作用戶端的同步資料時,隻會把符号連結名同步下來,并不會同步符号連結的内容;這個需要自己來嘗 試

  注:read only 是隻讀選擇,也就是說,不讓用戶端上傳檔案到伺服器上。還有一個 write only選項,自己嘗試是做什麼用的吧;

  hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0

  注:在您可以指定單個IP,也可以指定整個網段,能提高安全性。格式是ip 與ip 之間、ip和網段之間、網段和網段之間要用空格隔開;

  max connections = 5

  注:用戶端最多連接配接數

  motd file = /etc/rsyncd/rsyncd.motd

  注:motd file 是定義伺服器資訊的,要自己寫 rsyncd.motd 檔案内容。當使用者登入時會看到這個資訊。比如我寫的是:

  log file = /var/log/rsync.log

  注:rsync 伺服器的日志;

  transfer logging = yes

  注:這是傳輸檔案的日志

  timeout = 300

B、子產品定義

   子產品定義什麼呢?主要是定義伺服器哪個目錄要被同步。每個子產品都要以[name]形式。這個名字就是在rsync用戶端看到的名字,其實有點象Samba伺服器提供的共享名。而伺服器真正同步的資料是通過path指定的。我們可以根據自己的需要,來指定多個子產品。每個子產品要指定認證使用者,密碼檔案、但排除并不是必須的

  下面是前面配置檔案子產品的例子:

  [rhel4home] #子產品它為我們提供了一個連結的名字,在本子產品中連結到了/home目錄;要用[name] 形式

  path = /home #指定檔案目錄所在位置,這是必須指定的

  auth users = root #認證使用者是root ,是必須在伺服器上存在的使用者

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

  ignore errors #忽略IO錯誤

  secrets file = /etc/rsyncd.secrets #密碼存在哪個檔案

  comment = linuxsir home data #注釋可以自己定義

  exclude = beinan/ samba/

  注:exclude是排除的意思,也就是說,要把/home目錄下的easylife和samba排除在外; easylife/和samba/目錄之間有空格分開

  [rhel4opt]

  comment = optdir

  auth users = beinan

四、啟動rsync伺服器及防火牆的設定

  啟動rsync伺服器相當簡單,有以下幾種方法

  A、--daemon參數方式,是讓rsync以伺服器模式運作

  #/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf  #--config用于指定rsyncd.conf的位置,如果在/etc下可以不寫

  B、xinetd方式

  修改services加入如下内容

  # nano -w /etc/services

  rsync  873/tcp  # rsync

  rsync  873/udp  # rsync

  這一步一般可以不做,通常都有這兩行(我的RHEL4和GENTOO預設都有)。修改的目的是讓系統知道873端口對應的服務名為rsync。如沒有的話就自行加入。

  設定 /etc/xinetd.d/rsync, 簡單例子如下:

  # default: off

  # description: The rsync server is a good addition to am ftp server, as it \

  # allows crc checksumming etc.

  service rsync

  {

disable = no

socket_type = stream

wait = no

user = root

server = /usr/bin/rsync

server_args = --daemon

log_on_failure += USERID

  }

  上述, 主要是要打開rsync這個daemon, 一旦有rsync client要連接配接時, xinetd會把它轉介給 rsyncd(port 873)。然後service xinetd restart, 使上述設定生效.

  rsync伺服器和防火牆

  Linux 防火牆是用iptables,是以我們至少在伺服器端要讓你所定義的rsync 伺服器端口通過,用戶端上也應該讓通過。

  #iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT

  #iptables -L 檢視一下防火牆是不是打開了 873端口

  如果你不太懂防火牆的配置,可以先service iptables stop 将防火牆關掉。當然在生産環境這是很危險的,做實驗才可以這麼做喲!

五、通過rsync用戶端來同步資料

A、文法詳解

 

  在配置完rsync伺服器後,就可以從用戶端發出rsync指令來實作各種同步的操作。rsync有很多功能選項,下面就對介紹一下常用的選項:

  rsync的指令格式可以為:

  

  1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST

  2. rsync [OPTION]... [USER@]HOST:SRC DEST

  3. rsync [OPTION]... SRC [SRC]... DEST

  4. rsync [OPTION]... [USER@]HOST::SRC [DEST]

  5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST

  6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

  rsync有六種不同的工作模式:

  1. 拷貝本地檔案;當SRC和DES路徑資訊都不包含有單個冒号":"分隔符時就啟動這種工作模式。

  2.使用一個遠端shell程式(如rsh、ssh)來實作将本地機器的内容拷貝到遠端機器。當DST路徑位址包含單個冒号":"分隔符時啟動該模式。

  3.使用一個遠端shell程式(如rsh、ssh)來實作将遠端機器的内容拷貝到本地機器。當SRC位址路徑包含單個冒号":"分隔符時啟動該模式。

  4. 從遠端rsync伺服器中拷貝檔案到本地機。當SRC路徑資訊包含"::"分隔符時啟動該模式。

  5. 從本地機器拷貝檔案到遠端rsync伺服器中。當DST路徑資訊包含"::"分隔符時啟動該模式。

  6. 列遠端機的檔案清單。這類似于rsync傳輸,不過隻要在指令中省略掉本地機資訊即可。

  -a 以archive模式操作、複制目錄、符号連接配接 相當于-rlptgoD

  rsync中的參數

  -r 是遞歸

  -l 是連結檔案,意思是拷貝連結檔案;-p 表示保持檔案原有權限;-t 保持檔案原有時間;-g 保持檔案原有使用者組;-o 保持檔案原有屬主;-D 相當于塊裝置檔案;

  -z 傳輸時壓縮;

  -P 傳輸進度;

  -v 傳輸時的進度等資訊,和-P有點關系,自己試試。可以看文檔;

  -e ssh的參數建立起加密的連接配接。

  -u隻進行更新,防止本地新檔案被重寫,注意兩者機器的時鐘的同時

  --progress是指顯示出詳細的進度情況

  --delete是指如果伺服器端删除了這一檔案,那麼用戶端也相應把檔案删除,保持真正的一緻

  --password-file=/password/path/file來指定密碼檔案,這樣就可以在腳本中使用而無需互動式地輸入驗證密碼了,這裡需要注意的是這份密碼檔案權限屬性要設得隻有屬主可讀。

B、一些執行個體

  B1、列出rsync 伺服器上的所提供的同步内容;

  首先:我們看看rsync伺服器上提供了哪些可用的資料源

  # rsync --list-only [email protected]::

   2002------2009

  rhel4home This is RHEL 4 data

   注:前面是rsync所提供的資料源,也就是我們在rsyncd.conf中所寫的[rhel4home]子產品。而“This is RHEL 4 data”是由[rhel4home]子產品中的 comment = This is RHEL 4 data提供的;為什麼沒有把rhel4opt資料源列出來呢?因為我們在[rhel4opt]中已經把list=no了。

  $ rsync --list-only [email protected]::::rhel4home

   2002------2009

  Password:

  drwxr-xr-x 4096 2009/03/15 21:33:13 .

  -rw-r--r-- 1018 2009/03/02 02:33:41 ks.cfg

  -rwxr-xr-x 21288 2009/03/15 21:33:13 wgetpaste

  drwxrwxr-x 4096 2008/10/28 21:04:05 cvsroot

  drwx------ 4096 2008/11/30 16:30:58 easylife

  drwsr-sr-x 4096 2008/09/20 22:18:05 giddir

  drwx------ 4096 2008/09/29 14:18:46 quser1

  drwx------ 4096 2008/09/27 14:38:12 quser2

  drwx------ 4096 2008/11/14 06:10:19 test

  drwx------ 4096 2008/09/22 16:50:37 vbird1

  drwx------ 4096 2008/09/19 15:28:45 vbird2

  後面的root@ip中,root是指定密碼檔案中的使用者名,之後的::rhel4home這是rhel4home子產品名

  B2、rsync用戶端同步資料;

  #rsync -avzP [email protected]::rhel4home rhel4home

  Password: 這裡要輸入root的密碼,是伺服器端rsyncd.secrets提供的。在前面的例子中我們用的是mike,輸入的密碼并不回顯,輸好就回車。

   注: 這個指令的意思就是說,用root使用者登入到伺服器上,把rhel4home資料,同步到本地目前目錄rhel4home上。當然本地的目錄是可以你自己 定義的。如果當你在用戶端上目前操作的目錄下沒有rhel4home這個目錄時,系統會自動為你建立一個;當存在rhel4home這個目錄中,你要注意 它的寫權限。

  #rsync -avzP --delete [email protected]::rhel4home rhel4home

   這回我們引入一個--delete 選項,表示用戶端上的資料要與伺服器端完全一緻,如果linuxsirhome目錄中有伺服器上不存在的檔案,則删除。最終目的是讓linuxsirhome目錄上的資料完全與伺服器上保持一緻;用的時候要 小心點,最好不要把已經有重要數所據的目錄,當做本地更新目錄,否則會把你的資料全部删除;

  設定 rsync client

  #rsync -avzP --delete --password-file=rsyncd.secrets [email protected]::rhel4home rhel4home

  這次我們加了一個選項 --password-file=rsyncd.secrets,這是當我們以root使用者登入rsync伺服器同步資料時,密碼将讀取rsyncd.secrets這個檔案。這個檔案内容隻是root使用者的密碼。我們要如下做;

  # touch rsyncd.secrets

  # chmod 600 rsyncd.secrets

  # echo "mike"> rsyncd.secrets

  # rsync -avzP --delete --password-file=rsyncd.secrets [email protected]::rhel4home rhel4home

  注:這裡需要注意的是這份密碼檔案權限屬性要設得隻有屬主可讀。

    這樣就不需要密碼了;其實這是比較重要的,因為伺服器通過crond 計劃任務還是有必要的;

  B3、讓rsync用戶端自動與伺服器同步資料

   伺服器是重量級應用,是以資料的網絡備份還是極為重要的。我們可以在生産型伺服器上配置好rsync伺服器。我們可以把一台裝有rysnc機器當做是備份伺服器。讓這台備份伺服器,每天在早上4點開始同步伺服器上的資料;并且每個備份都是完整備份。有時 硬碟壞掉,或者伺服器資料被删除,完整備份還是相當重要的。這種備份相當于每天為伺服器的資料做一個鏡像,當生産型伺服器發生事故時,我們可以輕松恢複數 據,能把資料損失降到最低;是不是這麼回事??

  step1:建立同步腳本和密碼檔案

  #mkdir /etc/cron.daily.rsync

  #cd /etc/cron.daily.rsync

  #touch rhel4home.sh rhel4opt.sh

  #chmod 755 /etc/cron.daily.rsync/*.sh

  #mkdir /etc/rsyncd/

  #touch /etc/rsyncd/rsyncrhel4root.secrets

  #touch /etc/rsyncd/rsyncrhel4easylife.secrets

  #chmod 600 /etc/rsyncd/rsync.*

   注: 我們在 /etc/cron.daily/中建立了兩個檔案rhel4home.sh和rhel4opt.sh,并且是權限是755的。建立了兩個密碼檔案root使用者用的是rsyncrhel4root.secrets ,easylife使用者用的是rsyncrhel4easylife.secrets,權限是600;

  我們編輯rhel4home.sh,内容是如下的:

  #!/bin/sh

  #backup 192.168.145.5:/home

  /usr/bin/rsync -avzP --password-file=/etc/rsyncd/rsyncrhel4root.password [email protected]::rhel4home /home/rhel4homebak/$(date +'%m-%d-%y')

  我們編輯 rhel4opt.sh ,内容是:

  #backup 192.168.145.5:/opt

  /usr/bin/rsync -avzP --password-file=/etc/rsyncd/rsyncrhel4easylife.secrets [email protected]::rhel4opt /home/rhel4hoptbak/$(date +'%m-%d-%y')

  注:你可以把rhel4home.sh和rhel4opt.sh的内容合并到一個檔案中,比如都寫到rhel4bak.sh中;

  接着我們修改 /etc/rsyncd/rsyncrhel4root.secrets和rsyncrhel4easylife.secrets的内容;

  # echo "mike" > /etc/rsyncd/rsyncrhel4root.secrets

  # echo "keer"> /etc/rsyncd/rsyncrhel4easylife.secrets

   然後我們再/home目錄下建立rhel4homebak和rhel4optbak兩個目錄,意思是伺服器端的rhel4home資料同步到備份伺服器上的/home/rhel4homebak下,rhel4opt資料同步到 /home/rhel4optbak/目錄下。并按年月日歸檔建立目錄;每天備份都存檔;

  #mkdir /home/rhel4homebak

  #mkdir /home/rhel4optbak

  step2:修改crond伺服器的配置檔案 加入到計劃任務

  #crontab -e

  加入下面的内容:

  # Run daily cron jobs at 4:10 every day backup rhel4 data:

  10 4 * * * /usr/bin/run-parts /etc/cron.daily.rsync 1> /dev/null

  注:第一行是注釋,是說明内容,這樣能自己記住。

    第二行表示在每天早上4點10分的時候,運作 /etc/cron.daily.rsync 下的可執行腳本任務;

  配置好後,要重新開機crond 伺服器;

  # killall crond 注:殺死crond 伺服器的程序;

  # ps aux |grep crond 注:檢視一下是否被殺死;

  # /usr/sbin/crond 注:啟動 crond 伺服器;

  # ps aux |grep crond 注:檢視一下是否啟動了?

  root 3815 0.0 0.0 1860 664 ? S 14:44 0:00 /usr/sbin/crond

  root 3819 0.0 0.0 2188 808 pts/1 S+ 14:45 0:00 grep crond

六、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 = ogroup或者其它

  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

  Q: 出現以下這個訊息, 是怎麼一回事?

  @ERROR: auth failed on module xxxxx

  rsync: connection unexpectedly closed (90 bytes read so far)

  rsync error: error in rsync protocol data stream (code 12) at io.c(150)

  A: 這是因為密碼設錯了, 無法登入成功, 請再檢查一下 rsyncd.secrets 中的密碼設定, 二端是否一緻?

  password file must not be other-accessible

  continuing without password file

  Password:

  A: 這表示 rsyncd.secrets 的檔案權限屬性不對, 應設為 600。請下 chmod 600 rsyncd.secrets

  @ERROR: chroot failed

  rsync: connection unexpectedly closed (75 bytes read so far)

  A: 這通常是您的 rsyncd.conf 中的 path 路徑所設的那個目錄并不存在所緻.請先用 mkdir開設好備份目錄.

轉自:http://www.mike.org.cn/blog/index.php?load=read&id=639###pp=0

繼續閱讀