[rsync]——rsync檔案同步和備份

Jelly_lyj發表於2017-03-18

 

實驗環境

    (1) Rsync伺服器:10.0.10.158

    (2) Rsync客戶端:10.0.10.173

 


Rsync伺服器端的配置

1. 安裝xinetd和rsync

# yum install xinetd
# yum install rsync

 

2. 建立配置目錄和檔案

# mkdir /etc/rsync

該目錄下包含3個檔案:

  • rsyncd.conf           # rsync主配置檔案
  • rsyncd.secrets      # 密碼檔案    
  • rsyncd.motd         # 服務資訊定義檔案

下面逐一編輯這些檔案:

2.1 編輯主配置檔案

# vim /etc/rsync/rsyncd.conf
  pid file = /var/run/rsyncd.pid    #pid檔案的存放位置
  port = 873                        #通訊的埠
  address = 10.0.10.158             #監聽的地址/伺服器的地址
  uid = root                        #執行rsync守護程式的使用者
  gid = root                        #執行rsync守護程式的使用者組
  use chroot = yes                  #是否使用chroot
  read only = no                    #是否只讀
  hosts allow=10.0.0.0/255.255.0.0  #設定允許訪問的主機(可以是一個範圍也可以是一個IP地址)
  hosts deny= *                     #設定拒絕訪問的主機(這裡的*表示除了allow以外的都拒絕)
  max connections = 51              #最大連線數
  motd file = /etc/rsync/rsyncd.motd  #指定資訊顯示檔案
  log file = /var/log/rsync.log       #指定日誌檔案
  log format = %t %a %m %f %b %l      #設定日誌檔案格式
  syslog facility = local3            #設定日誌級別
  timeout = 600                       #設定連線超時時間(單位:s)

  [webroot]               #目錄的標識/認證模組名    
  path = /var/www/html    #要同步的目錄名
  list=yes                #是否允許列出檔案
  ignore errors           #忽略一般的IO錯誤
  auth users = admin      #認證的使用者名稱
  secrets file = /etc/rsync/rsyncd.secrets  #密碼檔案
  comment = web root directory              #說明資訊
  exclude =   secret/     #需要排除的目錄(排除後就不同步它了)

2.2 編輯密碼配置檔案

# vim /etc/rsync/rsyncd.secrets
  admin:123123         #格式是“使用者名稱:密碼”

2.3 編輯服務資訊定義檔案

# vim /etc/rsync/rsyncd.motd
  welcome access

 

3. 修改密碼配置檔案的許可權

# chmod 600 rsyncd.secrets

 

4. 啟動Rsync服務

# /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
# vim /etc/xinetd.d/rsync
  service rsync
  {
	disable	= no
	flags		= IPv6
	socket_type     = stream
	wait            = no
	user            = root
	server          = /usr/bin/rsync
	server_args     = --daemon --config=/etc/rsync/rsyncd.conf
	log_on_failure  += USERID
  }
# service xinetd restart

 


Rsync客戶端配置

1. 建立目錄、編輯密碼檔案

# mkdir /etc/rsync
# vim /etc/rsync/password
  123123     #格式是“密碼”
# chmod 600 /etc/rsync/password  #修改密碼檔案的許可權

 


Rsync同步命令的引數

      -v  表示verbose詳細顯示

      -z  表示壓縮(reduces the amount of data being transmitted)

      -r   表示recursive遞迴

      -t   表示保持原檔案建立時間

      -o  表示保持原檔案屬主

      -p  表示保持原檔案的引數

      -g  表示保持原檔案的所屬組

      -a  歸檔模式

      -P  表示代替-partial和-progress兩者的選項功能

      -e    ssh建立起加密的連線

      --partial    阻止rsync在傳輸中斷時刪除已拷貝的部分(如果在拷貝檔案的過程中,傳輸被中斷,rsync的預設操作是撤消前操作,即從目標機上刪除已拷貝的部分檔案)

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

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

      --exclude  不包含指定目錄

      --size-only  這個引數用在兩個資料夾中的差別僅是原始檔夾中有一些新檔案,不存在重名且被修改過的檔案,因為這種檔案有可能會因為內容被修改可大小一樣,而被略過。這個引數可以大大地提高同步的效率,因為它不需要檢查同名檔案的內容是否相同

      --password-file  來指定密碼檔案,內容包含server端指定認證使用者的密碼


驗證

1. 同步伺服器的檔案到本地

# ll /var/www/html/   #看伺服器上的/var/www/html目錄下有啥
總用量 8
-rw-r--r--. 1 root root    0 12月  1 01:05 index.html
-rw-r--r--. 1 root root    0 12月  1 01:05 page.html

 

# rsync -vzrtopg --progress --delete admin@10.0.10.158::webroot /var/www/html/ --password-file=/etc/rsync/password   #在客戶機,執行同步操作,使得獲得伺服器的檔案
welcome access 

receiving incremental file list
./
index.html
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=1/3)
page.html
           0 100%    0.00kB/s    0:00:00 (xfer#2, to-check=0/3)

sent 105 bytes  received 227 bytes  664.00 bytes/sec
total size is 0  speedup is 0.00

 

# ll /var/www/html/            #在伺服器端我們試著新增一下新的目錄和檔案(包括設定了不同步的目錄secret)
總用量 8
drwxr-xr-x. 2 root root 4096 12月  1 01:41 haha
-rw-r--r--. 1 root root    0 12月  1 01:05 index.html
-rw-r--r--. 1 root root    0 12月  1 01:40 page_2.html
-rw-r--r--. 1 root root    0 12月  1 01:05 page.html
drwxr-xr-x. 2 root root 4096 12月  1 01:40 secret

 

# rsync -vzrtopg --progress --delete admin@10.0.10.158::webroot /var/www/html/ --password-file=/etc/rsync/password  #在客戶端執行同步命令,以獲得伺服器的更新
welcome access 

receiving incremental file list
./
page_2.html
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/4)

sent 80 bytes  received 207 bytes  191.33 bytes/sec
total size is 0  speedup is 0.00

# rsync -vzrtopg --progress --delete admin@10.0.10.158::webroot /var/www/html/ --password-file=/etc/rsync/password 
welcome access 

receiving incremental file list
./
haha/

sent 65 bytes  received 203 bytes  536.00 bytes/sec
total size is 0  speedup is 0.00

# ll /var/www/html/                 --------->#確實沒有同步secret這個目錄
總用量 4
drwxr-xr-x. 2 root root 4096 12月  1 2009 haha
-rw-r--r--. 1 root root    0 12月  1 2009 index.html
-rw-r--r--. 1 root root    0 12月  1 2009 page_2.html
-rw-r--r--. 1 root root    0 12月  1 2009 page.html

 

2. 同步本地的檔案到伺服器

# touch new.html    #在本地新增一個檔案
# rsync -vzrtopg --progress --partial --password-file=/etc/rsync/password /var/www/html/ admin@10.0.10.158::webroot #在本地執行同步命令,使本地的更新同步到伺服器
welcome access 

sending incremental file list
./
new.html
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=3/6)

sent 165 bytes  received 31 bytes  392.00 bytes/sec
total size is 0  speedup is 0.00

 

# ls /var/www/html    #在伺服器上看到了這個new.html
haha  index.html  new.html  page_2.html  page.html  secret

 


常見錯誤

問題一:
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:伺服器端的目錄不存在或無許可權。建立目錄並修正許可權可解決問題。檢查伺服器那個密碼檔案的許可權是否為600

問題二:
@ERROR: auth failed on module tee
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:伺服器端該模組(tee)需要驗證使用者名稱密碼,但客戶端沒有提供正確的使用者名稱密碼,認證失敗。提供正確的使用者名稱密碼解決此問題。
 
問題三:
@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:伺服器不存在指定模組。提供正確的模組名或在伺服器端修改成你要的模組以解決問題。
 
問題四:
password file must not be other-accessible
continuing without password file
Password:
原因:這是因為rsyncd.pwd rsyncd.secrets的許可權不對,應該設定為600。如:chmod 600 rsyncd.pwd
 
問題五:
rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
原因:對方沒開機、防火牆阻擋、通過的網路上有防火牆阻擋,都有可能。關閉防火牆,其實就是把tcpudp的873埠開啟。

問題六:
rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]
原因:/etc/rsyncd.conf配置檔案內容有錯誤。請正確核對配置檔案。
 
問題七:
rsync: chown "" failed: Invalid argument (22)
原因:許可權無法複製。去掉同步許可權的引數即可。(這種情況多見於Linux向Windows的時候)

問題八:
@ERROR: daemon security issue -- contact admin
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]
原因:同步的目錄裡面有軟連線檔案,需要伺服器端的/etc/rsyncd.conf開啟use chroot = yes。掠過軟連線檔案

 

相關文章