Rsync備份服務


一、Rsync 原理圖

二、Rsync 原理描述

  2.1:什么是Rsync

    Rsync是備份的一款軟件,它可以實現全量備份、增量備份,也可以在不改變內容、屬性的情況下進行同步備份,端口默認是873

  2.2:Rsync的三種工作模式

    Rsync支持本地備份(相當於本地的CP命令)、遠程備份(通過SSH)、通過daemon模式(服務端、客戶端)可以進行Pull拉取數據和Push推送數據

  2.3:Rsync原理闡述(針對常用的daemon模式)

    ① Rsync客戶端執行Rsync命令,去向服務端認證

    ② 首先服務端會認證發送訪問的虛擬用戶(在服務端配置的auth users參數)

    ③ Rsync客戶端告訴服務端虛擬用戶,認證成功或者失敗

    ④ 認證客戶端發送的密碼文件(客戶端發送時--password-file = /etc/rsyncd.pas)

    ⑤ 認證成功同步數據

三、Rsync 優缺點

  3.1:優點(使用它的理由)

    ①  增量備份,支持socket(daemon)集中備份(支持推拉,都是以客戶端為參照物)

    ②  支持遠程shell通道模式還可以密碼ssh傳輸

    ③ 支持斷點續傳

    ④ 可以排除指定的文檔或者目錄,相當於tar的排除功能

    ⑤ 支持匿名認證遠程模式傳輸,實現方便安全的數據傳輸

  3.2:缺點(什么時候要用其他的方法)

    ① 大量小文件同步時間長,有時候會出現進程突然的停止

    ② 同步大文件的時候會中斷,沒有完成同步前是隱藏文件(點開頭的文件),但是可以通過它的斷點續傳來實現傳輸

四、Rsync 什么環境使用

  ① 利用定時任務(crontab)+rsync實現定時同步數據,主要同步的信息一般是內部人員使用的文件

  ② 利用實時同步軟件(inotify)+rsync實現實時的同步數據,主要同步的信息是用戶或者客戶上傳到服務器的文件

五、Rsync 搭建部署

  5.1:語法及常用參數

常用參數:
-avz:保持屬性,輸出詳細信息
-e:    隧道模式傳輸(SSH)
--delete:刪除(無差異同步,兩個文件保持一致)
--exclude=*.log: 要排除的文件
--bwlimit=10: 限速同步
--progress:在傳輸時顯示傳輸的過程
--partial:斷點續傳

基於rsync daemon客戶端同步語法:
拉取: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
        rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
推送: rsync [OPTION...] SRC... [USER@]HOST::DEST
        rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

  5.2:在服務端安裝rsync軟件

安裝:
yum -y install rsync (Centos7 已經默認安裝了)
檢查:
rpm -qa rsync
結果出現表示已安裝 rsync-3.0.9-18.el7.x86_64

  5.3:在服務端修改rsync的主配置文件(/etc/rsyncd.conf)

在etc下面有rsyncd.conf這個文件,這個文件中有一些注釋信息,就是配置文件中的規則
我們要進行自定義配置文件:
cat >/etc/rsyncd.conf<<EOF
uid = root                      # 用戶,遠端的命令使用rsync訪問共享目錄
gid = root                      # 用戶組
port = 873                      # 服務端口
address = 192.168.163.129       # 服務地址 一般使用內網地址

pid file = /var/run/rsyncd.pid  # 進程號文件
lock file = /var/run/rsyncd.lock# 鎖文件
log file = /var/log/rsync.log   # 日志文件

auth users = rsyncadmin         # 虛擬用戶
secrets file = /etc/rsyncd.pas  # 密碼文件
motd file = /etc/rsyncd.motd    # 描述文件(這個配置可以寫到每個模塊中,每個不同的同步就會顯示不同的描述信息了)

transfer logging = yes          # 使 rsync 服務器將傳輸操作記錄到傳輸日志文件。默認值為false
log format = "%o [ %a ] %m (%u) %f %b %l %b"    # 日志格式
syslog facility = daemon        # 指定 rsync 發送日志消息給 syslog 時的消息級別
use chroot = no                 # 默認為 true,在傳輸文件之前首先 chroot 到 path 參數所指定的目錄下;優點,安全;缺點,需要 root 權限,不能備份指向 path 外部的符號連接所指向的目錄文件
timeout = 900                   # 超時時間
ignore nonreadable = yes        # 是否忽略錯誤
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  # 用來指定那些在傳輸之前不進行壓縮處理的文件
max connections = 20            # 最大連接數

read only = false               # 手動推送 可寫
write only = true               # 可讀
list = false

hosts allow = 192.168.163.0/24  # 允許訪問地址
hosts deny = *                  # 拒絕訪問地址(這個最好是不用;allow 和 deny同時存在的時候會出現不生效的情況)


# 模塊配置
[date_backup]                   # 模塊名
path = /opt/data_backup         # 備份目錄絕對路徑
EOF

  5.4:在服務端創建身份認證文件

生成身份認證文件(rsyncadmin虛擬用戶123456密碼)
ehco "rsyncadmin:123456" >> /etc/rsyncd.pas
特別重要的一點
一定給這個文件600權限不然你會很慘的
chmod 600 /etc/rsyncd.pas

  5.5:在服務端創建備份的目錄(配置文件中模塊path的目錄)

創建備份目錄(同配置文件中模塊的path路徑)
mkdir -p /opt/backup

  5.6:在服務端創建描述信息文件

創建歡迎描述信息主要是在執行客戶端推送的時候有個顯示
echo "welcome rsync server" >> /etc/rsyncd.motd

  5.7:在服務端啟動rsync服務

啟動兩種方式
rsync --daemon
systemctl start rsyncd
檢查
ps -ef | grep rsync | grep -v grep
netstat -lntup | grep rsync

  5.8:在客戶端創建備份目錄

創建備份目錄的主要原因是為了對客戶端要備份的文件進行統一打包推送
mkdir -p /opt/backup

  5.9:在客戶端創建身份認證密碼文件(只包含密碼)

和服務端的密碼保持一致,因為傳輸數據需要進行密碼的認證
echo "123456" >> /etc/rsyncd.pas
同樣一定要給600權限
chmod 600 /etc/rsyncd.pas

  5.10:在客戶端測試往服務端推送拉取文件

使用推送的方式,把數據推到服務端
        # 第一種方式(需要修改read only = false)
        rsync -avz --progress --delete /opt/backup/ rsyncadmin@192.168.163.129::date_backup/ --password-file=/etc/rsyncd.pas
 
        # 第二種方式(需要修改write only = false)
        rsync -avz --progress --delete /opt/backup/ rsync://rsyncadmin@192.168.163.129/date_backup/ --password-file=/etc/rsyncd.pas
 
        # 過濾所有得log文件
        rsync -avz --progress --exclude=*.log --delete /opt/backup/ rsyncadmin@192.168.163.129::date_backup/ --password-file=/etc/rsyncd.pas
        rsync -avz --progress --exclude={a,b} --delete /opt/backup/ rsyncadmin@192.168.163.129::date_backup/ --password-file=/etc/rsyncd.pas  # 排除多個文件
使用拉取的方式
        # 方法一
        rsync -avz /opt/backup/ --progress --delete rsyncadmin@192.168.163.129::date_backup --password-file=/etc/rsyncd.pas
 
        # 方法二
         rsync -avz --progress /opt/backup/ rsync://rsyncadmin@192.168.163.129/date_backup/ --password-file=/etc/rsyncd.pas
 
PS:接下來就可以設置計划任務crontab來定時的執行備份任務了(--delete 參數最好不要加 會出現血的慘案)
其他參數:
    限速:
        rsync -avz --progress --exclude=*.log --bwlimit=10 --delete /opt/backup/ rsyncadmin@192.168.163.129::date_backup/ --password-file=/etc/rsyncd.pas

  5.11:其他的兩種方式的使用

本地方式:
rsync -avz /etc/hosts /mut/

遠程ssh方式:
rsync -avz /etc/hosts -e 'ssh -p 22' root@192.168.163.132:/mnt/
如果慢可以在ssh配置中設置兩個參數(ssh_config文件)
GSSAPIAuthentication yes 改為 no
UseDNS  yes 改為 no

六、Rsync 擴展(實時同步)

  6.1:inotify+rsync

  6.2:sersync

  6.3:lsyncd

七、Rsync 總結

  Rsync這個工具其實還是挺好用的在工作中用的也很多,它的優點完全大於缺點,所有事實上在工作中它的有點會得到充分的利用的,缺點也是可以使用其他的方式解決的,這個工具挺重要的 在linux屬於5星軟件的,還有就是想要快速的定位錯誤真的需要你對整個流程、原理要了解的,掌握它相當於掌握了linux的一款初級神器呦

八、Rsync 錯誤總結

1、密碼輸入錯誤,虛擬用戶名錯誤

2、secrets file = /etc/rsyncd.pad指定的密碼文檔和實際密碼文檔名稱不一致

3、/etc/rsyncd.pad文檔權限不是600

4、rsyncadmin:123456密碼配置文檔后面注意不要有空格

5、rsync客戶端密碼文檔中只輸入密碼信息即可,不要輸入虛擬認證用戶名稱

6、推送時雙冒號后面為模塊名date_backup,而不是路徑/date_backup

7、telnet連接rsync服務ip地址873端口,查看服務是否啟動 telnet 192.168.163.129 873


免責聲明!

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



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