Rsync服务
目錄
- Rsync服務
- Rsync
- rsync 簡介
- Rsync的特性
- 生產場景架構集群備份方案
- 備份的類型
- rsync的應用場景
- Rync的數據同步模式
- rsync的三種模式
- 1. 本地方式
- 2.遠程傳輸方式
- 3.守護進程傳輸方式
- 服務端配置
- 客戶端配置
- rsync實戰
- 實戰一
- 報錯解決方法:
- Rsync選項
- rsync無差異同步
- rsync限速
- 客戶端需求
- 服務端需求
Rsync服務
Rsync
rsync是一款開源、快速、多功能、可實現全量及增量的本地或遠程數據同步備份的優秀工具。rsync軟件適用于Unix/linux/Windows等多種操作系統平臺。
rsync 簡介
rsync英文稱為remote synchronizetion,從軟件的名稱就可以看出來,rsync具有可使本地和遠程兩臺主機之間的數據快速復制同步鏡像、遠程備份的功能,這個功能類似于ssh帶的scp命令,但是又優于scp命令的功能,scp每次都是全量拷貝,而rsync可以增量拷貝。當然,rsync還可以在本地主機的不同分區或目錄之間全量及曾量的復制數據,這又類似cp命令。但是同樣也優于cp命令,cp每次都是全量拷貝,而rsync可以增量拷貝。
在同步數據的時候,默認情況下,rsync通過其獨特的“quick check”算法,它僅同步大小或者最后修改時間發生變化的文件或目錄,當然也可根據權限、屬主等屬性的變化同步,但是需要制定相應的參數,甚至可以實現只同步一個文件里有變化的內容部分,所以,可是實現快速的同步備份數據。
rsync官方地址:TP
rsync監聽端口:873
rsync運行模式:C/S
client/server
客戶端/服務端
小提示:利用rsync還可以實現刪除文件和目錄的功能,這又相當于rm命令,一個rsync相當于scp、cp、rm,但是還優于他們的每一個命令。
Rsync的特性
支持拷貝特殊文件,如連接文件、設備等。
可以有排除指定文件或目錄同步的功能,相當于打包命令tar的排除功能。
可以做到保持原文件或目錄的權限、時間、軟硬鏈接、屬主、組等所有屬性均不改變 –p。
可以實現增量同步,既只同步發生變化的數據,因此數據傳輸效率很高(tar-N)。
可以使用rcp、rsh、ssh等方式來配合傳輸文件(rsync本身不對數據加密)。
可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)*****。
支持匿名的活認證(無需系統用戶)的進程模式傳輸,可以實現方便安全的進行數據備份和鏡像。
生產場景架構集群備份方案
1.借助cron+rsync把所有客戶服務器數據同步到備份服務器。
2.針對公司重要數據備份混亂狀況和領導提出備份全網數據的解決方案。
3.通過本地打包備份,然后rsync結合inotify應用把全網數統一備份到一個固定存儲服務器,然后在存儲服務器上通過腳本檢查并報警管理員備份結果。
4.定期將IDC機房的數據 備份公司的內部服務器,防止機房地震及火災問題導致數據丟失。
5.實時同步,解決存儲服務器等的單點問題。
備份的類型
rsync的應用場景
Rync的數據同步模式
rsync的三種模式
1. 本地方式
? 單個主機本地之間的數據傳輸(類似于cp命令)
? [root@web01 ~]# rsync /etc/b.txt /tmp/
#本地拷貝數據命令 Local: rsync [OPTION...] SRC... [DEST]#本地拷貝數據示例 [root@backup ~]# rsync -avz /etc/passwd /tmp/ rsync #備份命令(cp) [options] #選項 SRC... #本地源文件 [DEST] #本地目標文件2.遠程傳輸方式
通過ssh通道傳輸數據,(類似于scp命令)
Access via remote shell: #pull拉取數據命令 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]#push推送數據命令 Push: rsync [OPTION...] SRC... [USER@]HOST:DESTrsync -avz root@172.16.1.41:/tmp ./
pull拉: [root@web01 ~]# rsync -avz root@172.16.1.41:/tmp ./rysnc -avz /var root@172.16.1.41:/tmp/
push推: [root@web01 ~]# rsync -avz /var root@172.16.1.41:/tmp/注意: rsync不管是推還是拉,推送目錄的時候帶/和不帶/
? 1.帶/ :/etc/ 將etc目錄下的所有內容,推過去(拉過來)
? 2.不帶/:/etc 將etc目錄整體推過去(拉過來)
3.守護進程傳輸方式
rsync自身非常重要的功能(不使用系統用戶,更加安全)
Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync -avz /data/ rsync_backup@172.16.1.41::zls| backup | 10.0.0.41 | 172.16.1.41 | 服務端 |
| web01 | 10.0.0.7 | 172.16.1.7 | 客戶端 |
服務端配置
1.服務端安裝rsync
[root@backup ~]# yum -y install rsync2.服務端,修改配置文件
[root@backup ~]# vim /etc/rsyncd.conf #用戶名 uid = rsync #用戶組 gid = rsync #端口 port = 873 #無需讓rsync以root身份運行 fake super = yes #禁錮目錄,不允許操作指定目錄之外的目錄 use chroot = no #最大連接數200 max connections = 200 #超時時間600s 10分鐘 timeout = 600 #忽略錯誤 ignore errors #關閉只讀 read only = false #不允許查看模塊信息 list = false #認證用戶 auth users = rsync_backup #認證用戶的密碼文件 secrets file = /etc/rsync.passwd #日志文件 log file = /var/log/rsyncd.log ##################################### #模塊(任意名字都可以) [zls] #注釋信息(無關緊要) comment = welcome to oldboyedu backup! #路徑 path = /backup2.服務端(backup),創建用戶,創建一個用來運行rsync服務的用戶身份
#檢查用戶是否存在 [root@backup ~]# id rsync id: rsync: no such user#創建用戶(不允許登錄,不創建家目錄) [root@backup ~]# useradd rsync -s /sbin/nologin -M -s:指定登錄的shell -M:不創建家目錄3.服務端,創建一個備份目錄
[root@backup ~]# mkdir /backup #授權rsync用戶 [root@backup ~]# chown -R rsync.rsync /backup/4.服務端,創建虛擬用戶及密碼文件
#創建用戶名和密碼文件 [root@backup ~]# vim /etc/rsync.passwd rsync_backup:123456 #授權 [root@backup ~]# chmod 600 /etc/rsync.passwd5.服務端,啟動rsync添加開機自啟
[root@backup ~]# ll /usr/lib/systemd/system/rsyncd.service -rw-r--r-- 1 root root 237 Apr 26 01:17 /usr/lib/systemd/system/rsyncd.service #啟動rsyncd守護進程 [root@backup ~]# systemctl start rsyncd #允許開機自啟 [root@backup ~]# systemctl enable rsyncd客戶端配置
1.安裝rsync
[root@web01 ~]# yum install -y rsync2.創建虛擬用戶的密碼文件
#創建用戶密碼文件,也可以手動敲,為了寫腳本 [root@web01 ~]# vim /etc/rsync.pass 123456 #授權 [root@web01 ~]# chmod 600 /etc/rsync.passrsync實戰
實戰一
[root@web01 ~]# mkdir /data [root@web01 ~]# cd /data [root@web01 data]# touch file{1..100} [root@web01 data]# ll推:
[root@web01 ~]# rsync -avz /data/ rsync_backup@172.16.1.41::zls拉:
[root@web01 ~]# rsync -avz rsync_backup@172.16.1.41::zls /root/非交互式:
[root@web01 data]# rsync -avz /data/ rsync_backup@10.0.0.41::naonao --password-file=/etc/rsync.pass #密碼文件報錯解決方法:
服務端的/backup目錄權限不是 rsync
認證失敗:
1.先檢查配置文件:服務端:/etc/rsyncd.conf
[模塊]
2.檢查服務端,/etc/rsync.passwd文件的權限是不是600
3.再檢查服務端,/etc/rsync.passwd文件的內容,是不是 用戶名:密碼
rsyncd.conf 里的 rsync_backup
4.再檢查客戶端,/etc/rsync.pass 權限600
5./etc/rsync.pass 內容只寫密碼
6.修改完配置文件要重啟服務,[backup] [zls]
systemctl restart rsyncd uid = rsync gid = rsync port = 873 fake super = yes use chroot = no max connections = 200 timeout = 600 ignore errors read only = false list = false auth users = rsync_backup secrets file = /etc/rsync.passwd log file = /var/log/rsyncd.log ##################################### [backup] comment = welcome to oldboyedu backup! path = /backupRsync選項
-a #歸檔模式傳輸, 等于-tropgDl -v #詳細模式輸出, 打印速率, 文件數量等 -z #傳輸時進行壓縮以提高效率 -r #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。 -t #保持文件時間信息 -o #保持文件屬主信息 -p #保持文件權限 -g #保持文件屬組信息 -l #保留軟連接 -P #顯示同步的過程及傳輸時的進度等信息 -D #保持設備文件信息 -L #保留軟連接指向的目標文件 -e #使用的信道協議,指定替代rsh的shell程序 --exclude=PATTERN #指定排除不需要傳輸的文件模式 --exclude-from=file #文件名所在的目錄文件 --bwlimit=100 #限速傳輸 --partial #斷點續傳 --delete #讓目標目錄和源目錄數據保持一致 --password-file=xxx #使用密碼文件rsync無差異同步
rsync -avz --delete rsync_backup@172.16.1.41::zlsrsync限速
rsync -avz --bwlimit=1024 /etc rsync_backup@172.16.1.41::zls客戶端需求
1.客戶端提前準備存放的備份的目錄,目錄規則如下:/backup/nfs_172.16.1.31_2018-09-02
#實現第一部分內容,將備份的數據目錄創建出來 [root@web01 ~]# vim rsync.sh #!/bin/bash H=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE} mkdir -p /backup/$SRC[root@web01 ~]# sh rsync.sh [root@web01 ~]# ll /backup/ total 0 drwxr-xr-x 2 root root 6 Aug 2 19:00 web01_172.16.1.7_2019-08-022.客戶端在本地打包備份(系統配置文件、應用配置等)拷貝至/backup/nfs_172.16.1.31_2018-09-02
#!/bin/bashH=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE} mkdir -p /backup/$SRCtar zcf /backup/${SRC}/conf_${DATE}.tar.gz /var/log/messages /etc/passwd /etc/gshadow /etc/shadow /etc/group &>/dev/null3.客戶端最后將備份的數據進行推送至備份服務器
#!/bin/bashH=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE} export RSYNC_PASSWORD=123456mkdir -p /backup/$SRCtar zcf /backup/${SRC}/conf_${DATE}.tar.gz /var/log/messages /etc/passwd /etc/gshadow /etc/shadow /etc/group &>/dev/nullrsync -avz /backup/$SRC rsync_backup@172.16.1.41::zls測試命令:
[root@web01 ~]# for n in `seq -w 30`;do date -s "201908$n";sh rsync.sh;done4.客戶端服務器本地保留最近7天的數據, 避免浪費磁盤空間
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin H=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE} export RSYNC_PASSWORD=123456mkdir -p /backup/$SRCtar zcf /backup/${SRC}/conf_${DATE}.tar.gz /var/log/messages /etc/passwd /etc/gshadow /etc/shadow /etc/group &>/dev/nullmd5sum /backup/${SRC}/conf_${DATE}.tar.gz > /backup/res.txtrsync -az /backup/ rsync_backup@172.16.1.41::zlsfind /backup/ -type d -mtime +7 |xargs rm -fr5.客戶端每天凌晨1點定時執行該腳本
[root@web01 ~]# crontab -e #每天凌晨一點備份重要數據 By:zls At:2019-08-02 00 01 * * * /bin/sh /root/rsync.sh &>/dev/null#腳本中需加入,以防定時任務時。目錄中缺少ip [root@web01 ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin#驗證 yum -y install nptdate ntpdate time1.aliyun.com date -s 20190803 [root@web01 ~]# tail -f /var/log/cron #查看服務端需求
1.服務端部署rsync,用于接收客戶端推送過來的備份數據
2.服務端需要每天校驗客戶端推送過來的數據是否完整
3.服務端需要每天校驗的結果通知給管理員
4.服務端僅保留6個月的備份數據,其余的全部刪除
vim check_md5.sh #!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin H=`hostname` IP=`ifconfig eth1|awk 'NR==2{print $2}'` DATE=`date +%F` SRC=${H}_${IP}_${DATE}md5sum -c /backup/res/*|mail -s "${DATE} check backup" 133411023@qq.comfind /backup -type d -mtime +180|xargs rm -fr crontab -e #xxx by:zls at:xx 01 00 * * * /bin/sh /root/check_md5.sh &>/dev/null驗證轉載于:https://www.cnblogs.com/1naonao/p/11285846.html
總結
- 上一篇: DataWhale 组队学习爬虫 Tas
- 下一篇: 性能优化概述