rsync定時同步配置


title: rsync定時同步配置
tags: rsync,sync,同步,增量


rsync定時同步配置

1. rsync簡述:

rsync是linux系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync可以遠程同步,支持本地複製,或者與其他SSH、rsync主機同步。可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。無須特殊權限即可安裝。快速:第一次同步時 rsync 會複製全部內容,但在下一次只傳輸修改過的文件。rsync 在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。

2. rsync語法

  Local:  rsync [OPTION...] SRC... [DEST]

       Access via remote shell:
         Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

       Access via rsync daemon:
         Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
               rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
               rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

rsync 在本地進行推送的話類似於cp命令,遠程推送類似於scp,例如把本機的/etc/hosts文件推送到/tmp
rsync -avz /etc/hosts /tmp/
rsync -avz /etc/hosts [email protected]:/tmp/
--delete 目標目錄內容與源目錄內容保持一致,前面有的,後面可以有,前面沒有的,後面的必須刪除,如:
rsync -avz --delete /test/ /tmp

通過ssh加密通道推送文件有

[root@server ~]# rsync -avz -e 'ssh -p 22' sersync2.5.4_64bit_binary_stable_final.tar.gz [email protected]:/tmp/
[email protected]'s password: 
sending incremental file list

sent 70 bytes  received 12 bytes  32.80 bytes/sec
total size is 727290  speedup is 8869.39

通過ssh加密通道拉取文件

[root@server ~]# rsync -avz -e 'ssh -p 22' [email protected]:/tmp/sersync2.5.4_64bit_binary_stable_final.tar.gz /tmp/  
[email protected]'s password: 
receiving incremental file list
sersync2.5.4_64bit_binary_stable_final.tar.gz

sent 30 bytes  received 727651 bytes  161706.89 bytes/sec
total size is 727290  speedup is 1.00
[root@server ~]# ls -l /tmp/ |grep ser*
-rw-r--r--. 1 root  root  727290 May 21  2018 sersync2.5.4_64bit_binary_stable_final.tar.gz

3. 參數詳解

  1. -avz =vzrtopjDl ,基本上保持了原有文件的各項屬性
  2. P :顯示推送過程
  3. -e:使用信道協議
  4. --exclude=PATTERN:排除不需要同步的文件,可以用通配符匹配
  5. --exclude-from=file:把需要排除的文件寫在文件列表中,通過這個參數可以排除這些列表上的文件

4. rsync 的daemon模式

平時如果不用daemon模式也可以隨便的進行傳輸,但是需要輸入密碼,如果利用ssh key進行弄則系統可能不安全,不利於全網備份,因此最好的解決方案就是利用rsync的daemon模式來解決rsync推送需要密碼的問題。

  1. 先查看rsync服務端和客戶端的rsync版本,以及系統版本,內核版本,確認好環境問題
[root@rsync-client ~]# uname -r
2.6.32-696.23.1.el6.x86_64
[root@rsync-client ~]# uname -m
x86_64
[root@rsync-client ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@rsync-client ~]# rsync --version
rsync  version 3.0.6  protocol version 30
[root@rsync-server ~]# uname -r
2.6.32-696.23.1.el6.x86_64
[root@rsync-server ~]# uname -m
x86_64
[root@rsync-server ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@rsync-server ~]# rsync --version
rsync  version 3.0.6  protocol version 30
  1. rsync配置服務端的配置文件
    rsync的配置文件爲/etc/rsyncd.conf,默認不存在需要自己手動創建。
touch /etc/rsyncd.conf
在該配置文件中添加如下內容:
# 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 = 192.168.50.0/24
hosts deny = 0.0.0.0/32
auth users = rsync-backup
secrets file = /etc/rsync.password
#####################################
[backup]
comment = backup
path = /backup
  1. 依據配置文件創建備份目錄,創建密碼文件,創建rsync用戶,並把備份目錄的屬主和屬組賦給rsync,如:
[root@rsync-server ~]# useradd -g rsync -M -s /bin/nologin rsync
[root@rsync-server ~]# grep "rsync" /etc/passwd
rsync:x:506:506::/home/rsync:/sbin/nologin
[root@rsync-server ~]# mkdir /backup
[root@rsync-server /]# chown -R rsync.rsync /backup
[root@rsync-server data]# echo "rsync-backup:root" >/etc/rsync.password
[root@rsync-server data]# chmod 600 /etc/rsync.password 
[root@rsync-server data]# ls -l /etc/rsync.password 
-rw-------. 1 root root 18 May 10 21:57 /etc/rsync.password
  1. 開啓rsync服務,並確認服務已啓動
 rsync --daemon
echo "rsync --daemon" >>/etc/rc.local
[root@rsync-server /]# netstat -lntup |grep rsync
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1351/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      1351/rsync          
[root@rsync-server /]# lsof -i :873
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   1351 root    3u  IPv4  12638      0t0  TCP *:rsync (LISTEN)
rsync   1351 root    5u  IPv6  12639      0t0  TCP *:rsync (LISTEN)
[root@rsync-server /]# 
  1. 在客戶端創建密碼文件,以及創建rsync用戶,如:
[root@rsync-client data]# echo "root" >>/etc/rsync.password
[root@rsync-client data]# chmod 600 /etc/rsync.password 
[root@rsync-client data]# ls -l /etc/rsync.password 
-rw-------. 1 root root 5 May 14 20:44 /etc/rsync.password
  1. 從客戶端推送文件過來測驗:
[root@rsync-client data]# rsync -avzP /data/file [email protected]::backup/ --password-file=/etc/rsync.password 
sending incremental file list

sent 50 bytes  received 8 bytes  116.00 bytes/sec
total size is 6  speedup is 0.10

5. rsync如果無法推送的排錯思路

  1. 查看rsyn服務配置文件路徑是否正確,正確的路徑爲/etc/rsyncd.conf
  2. 查看配置文件裏的host.allowyu與host.deny允許的ip網段是否是yunx允許客戶端訪問的網段或者ip
    3.查看配置文件裏的path參數的路徑qua權限是否zheng正確
    4.查看rsync服務是否正常啓動
    5.查看iptables和selinux是否有鎖阻止
    6.查看密碼文件格式以及權限是否zheng正確,且客戶端的密碼文件的密碼是否服務端的可以對應

6. rsync的注意事項:

  1. 無差異同步參數--delete :請確認考慮風險後再操作,如:
    rsync -avz --delete rsync:://[email protected]/backup /tmp/ --password-file=/etc/rsync.password
  2. rsync的缺點:如果有大量小文件同步的時候比對時間比較長,有時候rsync進程會停止,解決辦法:打包同步
  3. 同步大文件有時候也會出現中斷,未完成之前是隱藏文件,解決辦法:使用增量備份同步,集中備份

7. 利用rsync進行全網定時備份

如果全網有很多機器,每個機器上都有很多各種各樣的重要的配置文件,以及其他的重要的文件數據需要進行定時備份,我們可以用一臺服務器安裝rsync daemon ,這樣其他機器都把重要的數據往備份服務器這裏推送,進行全網備份,比如每天凌晨2點進行備份一次,解決方案可以利用腳本和cron進行定時備份。

  1. 先抓取機器的ip,這樣可以把各個機器備份的內容按ip建文件夾進行保存,這樣也容易區分
[root@rsync-client /]# ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'
192.168.50.1
  1. 書寫sync腳本,並將腳本分發到各個主機,假如同步每臺機器的/etc/rc.local及/var/spool/cron/root如:
#!/bin/sh
dir="`ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'`_$(date +%F)"
path=/backup
mkdir $path/$dir -p &&\
/bin/cp /var/spool/cron/root $path/$dir/cron_root_$(date +%F)/ &&\
/bin/cp /etc/rc.local $path/$dir/rc.local_$(date +%F)/ &&\
rsync -az $path [email protected]::backup/ --password-file=/etc/rsync.password
  1. 設置定時任務
    echo "0 2 * * * sh /service/scripts/bak.sh >/dev/null" >>/var/spool/cron/root
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章