天天看點

rsync同步兩台伺服器

需求:兩台伺服器(a、b),在伺服器a上存放着大量的圖檔,需要在每天夜裡三點同步到伺服器b,源目錄和目的目錄都是/p_w_picpath

啟用程式:rsync

伺服器a上的配置:

1、/etc/rsyncd.conf

uid = nobody

gid = nobody

use chroot = no

max connectionts = 6

read only = yes

hosts allow = 192.168.95.0/24

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsyncd.lock

log file = /var/log/rsyncd.log

[p_w_picpath]

comment = p_w_picpath

path = /p_w_picpath/

ignore errors

list = no

auth users = root

secrets file = /etc/rsyncd.passwd

2、/etc/rsyncd.passwd

root:test

完成上面的配置後運作

# rsync --daemon

如果提示沒有找到rsyncd.passwd檔案則說明這個檔案沒有在預設的/etc/路徑下或者沒有建立,隻要把這個檔案移動過去就可以了

伺服器b上的配置:

/etc/rsync.passwd

dongpi2014

這裡要注意,伺服器a和伺服器b上對于密碼檔案的寫法是不一樣的,伺服器a的密碼檔案需要記錄使用者名,而伺服器b的密碼檔案不需要記錄使用者名。

之後執行指令 

rsync -arv  --password-file=/etc/rsyncd.passwd  rsync://[email protected]/test /p_w_picpath/

這樣就開始同步了

注意:

如果有以下的報錯:

@error: unknown module 'xxx'

rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]

這個報錯表明密碼檔案的權限有問題,正常的密碼檔案權限應為600

the --password-file option may only be used when accessing an rsync daemon.

這個報錯表明伺服器端沒有執行rsync --daemon指令(沒有啟動服務)

@error: auth failed on module xxxxx

這個報錯表明伺服器a和伺服器b裡面的使用者名密碼有問題,有可能是伺服器b裡面使用者名密碼格式問題。

除了以上方法外,還可以用expect的自動互動腳本完成

#!/usr/bin/expect

set timeout 3000

spawn rsync -avcz --delete [email protected]:/p_w_picpath/  /p_w_picpath

expect "password:"

send "dongpi2014\r"

expect "]*"

exit

interact

繼續閱讀