rsync


一.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

  

 

 


免責聲明!

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



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