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

四、Rsync使用及功能
-a #歸檔模式傳輸, 等於-tropgDl -t -r -o -p -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/
-r #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。
[root@m01 ~]# rsync -vzr ./a 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 # 指定端口傳輸
| OPTION選項 |
功能 |
| -a |
這是歸檔模式,表示以遞歸方式傳輸文件,並保持所有屬性,它等同於-r、-l、-p、-t、-g、-o、-D 選項。-a 選項后面可以跟一個 --no-OPTION,表示關閉 -r、-l、-p、-t、-g、-o、-D 中的某一個,比如-a --no-l 等同於 -r、-p、-t、-g、-o、-D 選項。 |
| -r |
表示以遞歸模式處理子目錄,它主要是針對目錄來說的,如果單獨傳一個文件不需要加 -r 選項,但是傳輸目錄時必須加。 |
| -v |
表示打印一些信息,比如文件列表、文件數量等。 |
| -l |
表示保留軟連接。 |
| -L |
表示像對待常規文件一樣處理軟連接。如果是 SRC 中有軟連接文件,則加上該選項后,將會把軟連接指向的目標文件復制到 DEST。 |
| -p |
表示保持文件權限。 |
| -o |
表示保持文件屬主信息。 |
| -g |
表示保持文件屬組信息。 |
| -D |
表示保持設備文件信息。 |
| -t |
表示保持文件時間信息。 |
| --delete |
表示刪除 DEST 中 SRC 沒有的文件。 |
| --exclude=PATTERN |
表示指定排除不需要傳輸的文件,等號后面跟文件名,可以是通配符模式(如 *.txt)。 |
| --progress |
表示在同步的過程中可以看到同步的過程狀態,比如統計要同步的文件數量、 同步的文件傳輸速度等。 |
| -u |
表示把 DEST 中比 SRC 還新的文件排除掉,不會覆蓋。 |
| -z |
加上該選項,將會在傳輸過程中壓縮。 |
 |
|
五、Rsync守護進程模式
1、服務端
1、安裝
[root@backup ~]# yum install -y rsync
2、修改配置文件
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]# chmod 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 disabel --now firewalld
[root@backup opt]# setenforce 0
9、啟動rsyncd服務
[root@backup opt]# systemctl start rsyncd
2、客戶端
方法一:自己輸入密碼
[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.pass
wd ./* 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、實時監控並同步
[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
