rsync定時同步配置
阿新 • • 發佈:2018-05-28
rsync sync 同步 增量 title: rsync定時同步配置
title: rsync定時同步配置
tags: rsync,sync,同步,增量
grammar_cjkRuby: true
[TOC]
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文件推送到/tmprsync -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. 參數詳解
- -avz =vzrtopjDl ,基本上保持了原有文件的各項屬性
- P :顯示推送過程
- -e:使用信道協議
- --exclude=PATTERN:排除不需要同步的文件,可以用通配符匹配
- --exclude-from=file:把需要排除的文件寫在文件列表中,通過這個參數可以排除這些列表上的文件
4. rsync 的daemon模式
平時如果不用daemon模式也可以隨便的進行傳輸,但是需要輸入密碼,如果利用ssh key進行弄則系統可能不安全,不利於全網備份,因此最好的解決方案就是利用rsync的daemon模式來解決rsync推送需要密碼的問題。
- 先查看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
- 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
- 依據配置文件創建備份目錄,創建密碼文件,創建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
- 開啟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 /]#
- 在客戶端創建密碼文件,以及創建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
- 從客戶端推送文件過來測驗:
[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如果無法推送的排錯思路
- 查看rsyn服務配置文件路徑是否正確,正確的路徑為
/etc/rsyncd.conf
- 查看配置文件裏的host.allowyu與host.deny允許的ip網段是否是yunx允許客戶端訪問的網段或者ip
3.查看配置文件裏的path參數的路徑qua權限是否zheng正確
4.查看rsync服務是否正常啟動
5.查看iptables和selinux是否有鎖阻止
6.查看密碼文件格式以及權限是否zheng正確,且客戶端的密碼文件的密碼是否服務端的可以對應
6. rsync的註意事項:
- 無差異同步參數--delete :請確認考慮風險後再操作,如:
rsync -avz --delete rsync:://[email protected]/backup /tmp/ --password-file=/etc/rsync.password
- rsync的缺點:如果有大量小文件同步的時候比對時間比較長,有時候rsync進程會停止,解決辦法:打包同步
- 同步大文件有時候也會出現中斷,未完成之前是隱藏文件,解決辦法:使用增量備份同步,集中備份
7. 利用rsync進行全網定時備份
如果全網有很多機器,每個機器上都有很多各種各樣的重要的配置文件,以及其他的重要的文件數據需要進行定時備份,我們可以用一臺服務器安裝rsync daemon ,這樣其他機器都把重要的數據往備份服務器這裏推送,進行全網備份,比如每天淩晨2點進行備份一次,解決方案可以利用腳本和cron進行定時備份。
- 先抓取機器的ip,這樣可以把各個機器備份的內容按ip建文件夾進行保存,這樣也容易區分
[root@rsync-client /]# ifconfig eth0 |awk -F ‘[ :]+‘ ‘NR==2 {print $4}‘
192.168.50.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
- 設置定時任務
echo "0 2 * * * sh /service/scripts/bak.sh >/dev/null" >>/var/spool/cron/root
rsync定時同步配置