rsync是Linux和Unix下一款遠程數據同步工具,rsync第一次會把數據全量同步到遠端服務器,以後會對比兩個文件的不一樣,傳輸差別文件,實現增量同步
優勢:安全性高、備份迅速,使用同步算法,只同步有變化的文件 備份文件保持原有文件的屬性軟硬鏈接,且支持排除備份等
缺點:在數據同步以前須要掃描全部的文件進行對比才能進行差別化同步,若是同步文件達到百萬級或者千萬級,掃描文件同步將變得很是的耗時,下降了同步的效率c++
rsync是一個強大的命令,他能夠同時實現複製,刪除,查看,遠程同步等功能
1. rsync==cp
root@nfs01 test]# rsync -a aa.txt aa.txt.bak
[root@nfs01 test]# ls
aa.txt aa.txt.bak算法
二、 rsync==scp
[root@nfs01 test]# rsync -rp /test/ 10.0.0.41:/test/
root@10.0.0.41's password: vim
3 、rsync==rm安全
[root@nfs01 test]# mkdir /null
[root@nfs01 test]# rsync -r --delete /null/ /test/
[root@nfs01 test]# ls
4、 rsync==ls
[root@nfs01 test]# rsync /etc/hosts
-rw-r--r-- 352 2018/09/15 01:51:11 hostsbash
語法:Local: rsync [OPTION...] SRC... [DEST]服務器
練習:[root@nfs01 test]# rsync -a /etc/hosts /tmp/hosts.bak
[root@nfs01 test]# ll /tmp/hosts.bak
-rw-r--r-- 1 root root 352 Sep 15 01:51 /tmp/hosts.bak網絡
語法:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST多線程
練習:[root@nfs01 test]# rsync -avz /backup/ root@10.0.0.41:/backup/
root@10.0.0.41's password:
sending incremental file list
./併發sent 1703 bytes received 333 bytes 370.18 bytes/sec
total size is 1622 speedup is 0.80ide
語法:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
1、服務端部署流程
1)檢查軟件是否安裝
[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2)編寫配置文件(注意默認是沒有的,須要手動建立)
[root@backup ~]# vim /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = jiang
secrets file = /etc/rsync.password
[backup]
comment = "practice and use"
path = /backup
~
-- INSERT --
配置參數詳細說明
配置參數 | 說明 |
---|---|
uid = rsync | 指定rsync服務運行的時候,向磁盤進行讀取和寫入操做的操做者 |
gid = rsync | 指定rsync服務運行的時候,向磁盤進行讀取和寫入操做的操做組 |
use chroot = no | 進行數據同步存儲時,安全相關參數,默認內網進行數據同步,能夠關閉 |
max connections = 200 | 定義向備份服務器進行數據存儲的併發鏈接數 |
timeout = 300 | 定義與備份服務器創建的網絡鏈接,在多長時間沒有數據傳輸時,就釋放鏈接 |
pid file = /var/run/rsyncd.pid | 服務程序運行時,會將進程的pid信息存儲到一個指定的pid文件中 |
lock file = /var/run/rsync.lock | 定義鎖文件,主要用於配合max connections 參數,當達到最大鏈接就禁止繼續訪問 |
log file = /var/log/rsyncd.log | 定義服務的日誌文件保存路徑信息 |
[backup] | 指定備份目錄的模塊名稱信息 |
path = /backup | 指定數據進行備份的目錄信息 |
ignore errors | 在進行數據備份傳輸過程過程當中,忽略一些I/O產生的傳輸錯誤 |
list = false | 確認是否能夠將服務配置的模塊信息,在客戶端能夠查看顯示 |
hosts allow = 172.16.1.0/24 | 設置備份目錄容許進行網絡數據備份的主機地址或網段信息,即設置白名單 |
hosts deny = 0.0.0.0/32 | 設置備份目錄禁止進行網絡數據備份的主機地址或網段信息,即設置黑名單 |
auth users = jiang | 指定訪問備份數據目錄的認證用戶信息,爲虛擬定義的用戶,不須要進行建立 |
secrets file = /etc/rsync.password | 設置訪問備份數據目錄進行認證用戶的密碼文件信息,會在文件中設置認證用戶密碼信息 |
3)、建立備份服務管理用戶
useradd rsync -M -s /sbin/nologin
4)建立備份目錄
mkdir /backup
chown -R rsync.rsync /backup
5)建立認證文件
echo "jiang:jiang123" >>/etc/rsync.password
chmod 600 /etc/rsync.password
6)啓動rsync服務
rsync --daemon
2、客戶端部署流程
1)確認軟件是否安裝
[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2)建立認證密碼文件
echo "jiang" >>/etc/rsync.password
chmod 600 /etc/rsync.password
3)、進行數據備份測試
[root@nfs01 tmp]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
Inotify 是一個 Linux 內核特性,它監控文件系統,而且及時向專門的應用程序發出相關的事件警告,好比刪除、讀、寫和卸載操做等。要使用 inotify,必須具有一臺帶有 2.6.13 或更新內核的 Linux 機器
一、 建立要存儲數據的目錄
二、 利用實時同步的軟件監控咱們進行備份的數據目錄
三、 利用rsync服務進行數據推送傳輸備份
1)、安裝inotify軟件
yum install -y inotify-tools
2)、編寫實時同步的腳本
#!/bin/bash
####################
inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /data|\
while read line
do
rsync -az --delete /data/ jiang@172.16.1.41::backup --password-file=/etc/rsync.password
done
說明:在編寫同步腳本以前須要保證rsyc守護進程方式同步正常
inotifywait -m|--monitor 始終保持事件監聽狀態-r 進行遞歸監控-q|--quiet 將無用的輸出信息,不進行顯示--timefmt <fmt> 設定日期的格式man strftime 獲取更多時間參數信息--format <fmt> 命令執行過程當中,輸出的信息格式 -e 指定監控的事件信息man inotifywait 查看全部參數說明和全部能夠監控的事件信息總結主要用到的事件信息:create建立、delete刪除、moved_to移入、close_write修改PS:由於rsync是單線程方式監控目錄,因此若是文件數量達到百萬級會下降實時同步的效率,這時候咱們能夠考慮使用sersync+rsync的方式進行實時同步,sersync是國內開發者開發的一款軟件,使用c++ 編寫而成,他的優勢:多線程方式工做,提升同步效率,使用方便,配置簡單,感興趣的小夥伴能夠自行研究