一.rsync的介紹
rsync英文稱為remote synchronizetion,從軟件的名稱就可以看出來,rsync具有可使本地和遠程兩台主機之間的數據快速復制同步鏡像、遠程備份的功能,這個功能類似於ssh帶的scp命令,但是又優於scp命令的功能,scp每次都是全量拷貝,而rsync可以增量拷貝。當然,rsync還可以在本地主機的不同分區或目錄之間全量及增量的復制數據,這又類似cp命令。但是同樣也優於cp命令,cp每次都是全量拷貝,而rsync可以增量拷貝。 rsync官方地址:https://rsync.samba.org/ rsync監聽端口:873 rsync運行模式:C/S client/server rsync簡稱叫做遠程同步,可以實現不同主機之間的數據同步,還支持全量和增量

二,rsync的特性
支持拷貝特殊文件,如連接文件、設備等。 可以有排除指定文件或目錄同步的功能,相當於打包命令tar的排除功能。 可以做到保持原文件或目錄的權限、時間、軟硬鏈接、屬主、組等所有屬性均不改變 –p。 可以實現增量同步,既只同步發生變化的數據,因此數據傳輸效率很高(tar-N)。 可以使用rcp、rsh、ssh等方式來配合傳輸文件(rsync本身不對數據加密)。 可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)*****。 支持匿名的活認證(無需系統用戶)的進程模式傳輸,可以實現方便安全的進行數據備份和鏡像。

三,rsync應用場景
全量備份 增量備份 rsync的傳輸方式 push 推: 客戶端將數據從本地推送至服務端 pull 拉: 客戶端將數據從服務端拉取到本地

四,rsync傳輸模式
1.本地方式(類似於cp,不支持推送和拉取,只是單純的復制) 2.遠程方式(類似於scp,又不同於scp),scp只支持全量備份,rsync支持增量備份和差異備份 3.守護進程方式(客戶端和服務端)
五,rsync使用
-a # 歸檔模式傳輸,等於-tropgDl -t -r -o -g -D -l
-v # 詳細模式輸出,打印速率,文件數量等
[root@m01 ~]# rsync -v ./2.txt root@172.16.1.41:/opt/
-z # 傳輸時進行壓縮以提高效率
[root@m01 ~]# rsync -vz ./2.txt root@172.16.1.41:/opt/
-t # 保持文件時間信息
[root@m01 ~]# rsync -vzrt ./a/b/c/2.txt root@172.16.1.41:/opt/
-o # 保持文件屬主信息
-g # 保持文件屬組信息
[root@m01 ~]# rsync -vzrtgo ./a/b/c/2.txt root@172.16.1.41:/opt/
-p # 保持文件權限
[root@m01 ~]# rsync -vzrtgop ./a/b/c/2.txt root@172.16.1.41:/opt/
-l # 保留軟連接
[root@m01 ~]# rsync -vzrtgopl ./* root@172.16.1.41:/opt/
-p # 顯示同步的過程及傳輸時的進度等信息
[root@m01 ~]# rsync -vzrtgoplP ./* root@172.16.1.41:/opt/
-D # 保持設備文件信息
[root@m01 dev]# rsync -vzrtgDopl /dev/tty1 root@172.16.1.41:/opt/
-L # 保留軟連接指向的目標文件
-e # 使用的信道協議,指定替代rsh的shell程序
--append # 指定文件接着上次傳輸中斷處繼續傳輸
--append-verify #使用參數續傳(在斷點續傳之后,驗證一下文件,如果不同,修復文件)
--exclude=PATTERN # 指定排除不需要傳輸的文件
[root@m01 ~]# rsync -avzP --append-verify --exclude=2.txt ./* root@172.16.1.41:/opt/
--exclude-from=file # 按照文件指定內容排除
[root@m01 ~]# rsync -avzP --append-verify --exclude-from=/tmp/exclude.txt ./* root@172.16.1.41:/opt/
--bwlimit=100 # 限速傳輸(單位:mb)
[root@m01 ~]# rsync -avzP --append-verify --bwlimit=10 ./* root@172.16.1.41:/opt/
--delete # 讓目標目錄和源目錄數據保持一致
--password-file=xxx # 使用密碼文件
--port # 指定端口傳輸

六,rsync守護進程模式
1.服務端
1.安裝
[root@backup ~]# yum install -y rsync
2.修改配置文件(backup)
[root@backup ~]# vim /etc/rsync.conf
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 backup!
path = /backup
[linux]
comment = welcome to linux!
path=/tmp/linux
3.創建系統用戶
[root@backup opt]# groupadd rsync -g 666
[root@backup opt]# useradd rsync -u 666 -g 666 -M -s /sbin/nologin -r
4.創建密碼文件
[root@backup opt]# echo "rsync_backup:123456" > /etc/rsync.passwd
5.授權(必須授權為600)
[root@backup opt]# chomd 600 /etc/rsync.passwd
6.創建備份目錄
[root@backup opt]# mkdir /backup
[root@backup opt]# mkdir /tmp/linux
7.目錄授權
[root@backup opt]# chown rsync.rsync /backup/
[root@backup opt]# chown rsync.rsync /tmp/linux/
8.關閉防火牆和selinux
[root@backup opt]# systemctl disable --now firewalld
[root@backup opt]# setenforce 0
9.啟動rsync服務
[root@backup opt]# systemctl start rsyncd

客戶端 方法一:自己輸入密碼 [root@m01 ~]# rsync -avzP ./* rsync_backup@172.16.1.41::backup rsync_backup : 虛擬用戶,只在數據傳輸時使用 172.16.1.41 : backup服務端的IP backup : 模塊名稱 方法二:設置密碼文件,運行時讀取 1、編寫密碼文件 [root@backup opt]# echo "123456" > /etc/rsync.passwd 2、授權 [root@m01 ~]# chmod 600 /etc/rsync.passwd 3、連接 [root@m01 ~]# rsync -avzP --password-file=/etc/rsync.passwd ./* rsync_backup@172.16.1.41::linux 方法三:添加環境變量 1、定義環境變量 export RSYNC_PASSWORD=123456 2、同步 [root@m01 ~]# rsync -avzP ./* rsync_backup@172.16.1.41::linux

七,rsync實時同步
rsync是不支持實時同步的,通常我們借助於inotify這個軟件來實時監控文件變化,一旦inotify監控到文件變,則立即調用rsync進行同步。
1、安裝inotify(裝在客戶端)
[root@web01 ~]# yum -y install inotify-tools
2、inotify參數介紹
-m 持續監控
-r 遞歸
-q 靜默,僅打印時間信息(不輸出)
--timefmt 指定輸出時間格式
--format 指定事件輸出格式
%Xe 事件
%w 目錄
%f 文件
-e 指定監控的事件
access 訪問
modify 內容修改
attrib 屬性修改
close_write 修改真實文件內容
open 打開
create 創建
delete 刪除
umount 卸載
3、開始監控
[root@m01 ~]# /usr/bin/inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write /root
回車就開始監控了。
4、實時監控並同步(客戶端m01[0], 測試端m01[1])
[root@m01 ~]# /usr/bin/inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write /root | while read line;do
cd /root
rsync -avzP --delete --password-file=/etc/rsyncd.passwd ./* rsync_backup@172.16.1.41::backup
done

