linux中Rsync詳解


image

一、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 拉:
		客戶端將數據從服務端拉取到本地

image

四、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 加上該選項,將會在傳輸過程中壓縮。
image

五、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

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM