一、rsync基本配置及介紹
1.什麼是rsync?
rsync(rsync — a fast, versatile(通用的), remote (and local) file-copying tool
)一款開源的,快速的,多功能可實現全量及增量的本地或者遠程數據同步備份的優秀工具可適用於多個操作系統之上。rsync具有可以使本地和遠程兩臺主機之間的數據快速的同步和備份的用能。
2.rsync的特性
1)支持拷貝特殊文件如連接文件設備等
2)可以有排除指定文件或目錄同步的功能,相當於打包命令tar的排除功能 --exclude
3)可以實現增量同步,即只同步發生變化的數據,因此效率很高
3.rsync1.基本的命令行與常用選項
1)本地拷貝,命令行: rsync [OPTION]... src [src]... dest
比如,把/etc/hosts/文件拷貝到/tmp目錄下,其功能相當於cp 。
rsync命令是客戶端命令
rsync -avz(保持屬性) /etc/hosts /tmp
2)本地刪除,相當於rm命令,把/tmp目錄裏面的內容置換成空。
rsync -avz --delete /null/ /tmp
3)遠程拷貝rsync支持"本地->遠程","遠程->本地"雙方拷貝,不支持"遠程->遠程"拷貝.rsync的網絡功能通過兩種方式:ssh服務和rsync --daemon服務.
push:把本地的/tmp拷貝到遠端的:10.0.0.131:/tmp/
rsync -avzP -e 'ssh -p 22' /tmp/ 10.0.0.131:/tmp/
pull:把遠端的10.0.0.131:/tmp拷貝到本地的/tmp/
rsync -avzP -e 'ssh -p 22' 10.0.0.131:/data/ /tmp
4.rsync服務端配置.
rsync是一個C/S雜交體,它就一個程序即可以當客戶端也可以當服務端用.--daemon一秒鐘變身服務端. /etc/services文件裏記錄了rsync默認使用873號端口.當然像別的服務一樣,rsync同樣是需要配置文件的.rsync默認是找 /etc/rsyncd.conf.但是此目錄是事先不存在的。 具體的格式大家可以man一下rysncd.conf,裏面有詳細的介紹.其實就跟samba這種比較類似,下面是一個簡單的rsyncd.conf:
#指定訪問用戶
uid = rsync
#指定訪問組
gid = rsync
#禁止chroot(不可連接後切換用戶)
use chroot = no
#允許訪問目錄列表
list = false
#最大的連接數
max connections = 2000
#超時時間
timeout=600
#存放進程號文件的路徑
pid file = /var/run/rsyncd.pid
#存放日誌文件的路徑
log file = /var/log/rsyncd.log
#允許訪問rsync 服務的地址範圍
hosts allow = 10.0.0.0/24
#拒絕訪問的rsync服務的地址範圍
hosts deny = 0.0.0.0/32
#標識爲不可讀
read only = false
#虛擬用戶文件
auth users=rsync_backup
#密碼文件
secrets file=/etc/rsync.password
##########################
#此爲開放的tag:
[data]
#備份路徑
path = /data
#註釋信息
comment =write by chen
[backup]
#備份路徑
path = /backup
######################################
#Rsync server
#created by chen 2016.4.22 20:31
##rsyncd.conf start##
uid=rsync
gid=rsync
use chroot=no
max connections=2000
timeout=600
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
ignore errors
read only=false
list=false
hosts allow=10.0.0.0/24
hosts deny=0.0.0.0/32
auth users=rsync_backup
secrets file=/etc/rsync.password
########################################
[backup]
comment=backup server by chen 20:36 2016.04.22
path=/backup [備份路徑]
###########end##########################
完成上面配置後即可啓動rsync服務:rsync --daemon
5.查看服務是否啓動命令
[root@backup ~]# ps -ef|grep rsync
root 2833 1 0 20:53 ? 00:00:00 rsync --daemon
root 2835 2642 0 20:53 pts/0 00:00:00 grep --color=auto rsync
[root@backup ~]# netstat -tunpl |grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2833/rsync
tcp 0 0 :::873 :::* LISTEN 2833/rsync
[root@backup ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 2833 root 3u IPv4 16376 0t0 TCP *:rsync (LISTEN)
rsync 2833 root 5u IPv6 16377 0t0 TCP *:rsync (LISTEN)
[root@backup ~]#
6.創建用戶、備份目錄和授權以及配置密碼
useradd rysnc -s /sbin/nologin/ -M
id rysnc
mkdir /backup
chown -R rsync.rsync /backup/
echo "rsync_backup:chen">/etc/rsync.password
chmod 600 /etc/rsync.password
7.客服端配置
echo "chen">/etc/rsync.password
chmod 600 /etc/rsync.password
完成上面所有步驟後即可實現本地和遠端及其遠端到本地的文件及目錄數據備份
無差異同步:
rsync -avz --delete [email protected]::backup /tmp/ --password-file=/etc/rsync.password ----操作此命令時需要備份本地數據
rsync排除某個文件:
排除單個文件
rsync -avz --exclude=/tmp/a /tmp/ [email protected]::backup --password-file=/etc/rsync.password
排除多個文件
rsync -avz --exclude={2,4,5,6}}a /tmp/ [email protected]::backup --password-file=/etc/rsync.password
rsync的優點:
1.增量備份同步,支持socket(daemon),集中備份
rsync的缺點:
1.大量小文件同步時,時間比較長。
2.同步文件比較大,10G這樣的大文件有時候會出現問題,中斷。未完成同步前,是影藏文件,傳輸完成則正常顯示
rsync缺點:
1.大量小文件同步的時候,對比時間較長,有的時候,rsync進程停止。解決:a.將小文件打包後同步 b.drbd(文件系統同步)
2.同步大文件,10G這樣的大文件有時候也會有問題,中斷。未完整同步前,是影藏文件,同步完成改爲正常文件。
二、rsync服務常見問題總結
問題一:
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]
原因:
服務器端的目錄不存在或無權限。創建目錄並修正權限可解決問題。
問題二:
@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]
原因:
對方沒開機、防火牆阻擋、通過的網絡上有防火牆阻擋,都有可能。關閉防火牆,其實就是把tcp udp的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)
原因:
權限無法複製。去掉同步權限的參數即可。
本文出自 “隨遇而安” 博客,請務必保留此出處http://purify.blog.51cto.com/10572011/1768103