日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

rsync下行同步+inotify實時同步部署

作者:Kiro君 更新時間: 2022-07-13 編程語言

一、rsync簡介

一款快速增量備份工具

  • Remote Sync,遠程同步
  • 支持本地復制、遠程復制、遠程守護進程式復制,或者與其他SSH、rsync主機同步
  • 官方網站:https://rsync.samba.org/
  • 以其delta-transfer算法聞名。
  • rsync監聽端口:873
  • rsync運行模式:C/S

二、rsync同步源

在遠程同步任務中, 負責發起rsync同步操作的客戶機稱為客戶端,而負責 響應來自客戶端的rsync同步操作的服務器稱為備份源, 也稱之為同步源

  • 下行同步(下載)中, 同步源負責提供文檔的原始位置,發起端對該位置有讀取權利
  • 上行同步(上傳)中,同步源負責提供文檔的目標位置,發起端對該位置有寫入權利

在這里插入圖片描述

三、rsync特點

可以鏡像保存整個目錄和文件系統
可以很容易做到保持原文件的權限、時間、軟硬連接等
無須特殊權限即可安裝

快速
第一次同步時rsync會復制全部內容,但在下一次只傳輸修改過的文件
rsync在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的寬帶

安全
可以使用scp、ssh等方式來傳輸文件
也可通過直接socket連接
支持匿名傳輸,以方便進行網站鏡像

四、配置rsync源

1、基本思路

建立rsyncd.conf配置文件、獨立的賬號文件
啟用rsync的 --daemon模式

2、配置文件rsyncd.conf

認證配置auth users、secrets file,不加則為匿名

3、獨立的賬號文件

用戶名:密碼
每行一個用戶記錄
獨立的賬號數據,不依賴系統賬號

4、啟用rsync服務

通過 --daemon獨自提供服務,rsync --daemon
執行kill $(cat /var/run/rsyncd.pid)關閉服務

五、同步方式

① 完整備份

每次備份都是從備份源將所有的文件或目錄備份到目的地。

②差量備份

備份上次完全備份以后有變化的數據(針對的是上次的完全備份,備份過程中不清楚存檔屬性)

③增量備份

備份上次備份以后有變化的數據(會清楚存儲屬性)

六、rsync命令

命令使用語法

rsync 【選項】原始位置 目標位置

常用選項

常用選項 說明
-r 遞歸模式,包含目錄及子目錄中的所有文件
-l 對于符號鏈接文件仍然復制為符號鏈接文件
-v 顯示同步過程的詳細信息
-z 在傳輸文件時進行壓縮
-a 歸檔模式,遞歸并保留對象屬性,等同于-rlptgoD
-p 保留文件的權限標記
-t 保留文件的時間標記
-g 保留文件的屬組標記(僅超級用戶使用)
-o 保留文件的屬主標記(僅超級用戶使用)
-H 保留硬鏈接文件
-A 保留ACL屬性信息
-D 保留設備文件及其他特殊文件
–delete 刪除目標位置有而原始位置沒有的文件
–checksum 根據對象的校驗和來決定是否跳過文件

七、配置源的方法

格式一:

#用戶名@主機地址: :共享模塊名
rsync -avz backuper@192.168.4.200: :wwwroot /root

#backuper指的是我在同步的時候用的哪個用戶身份
#wwwroot代表的是模塊,模塊下面會寫同步的默認路徑和一些特性,所以我們只需要寫模塊就好了
#/root指的是本地節點

格式二:

#rsync:/用戶名@主機地址/共享模塊名
rsync -avz rsync: //backuper@192.168.4.200/wwwroot /root


URL:具體的位置點,例如:http://www.baidu.com./class1/men/id01.html
URI:標識的是擁有同一類特性或類型的一個集合 ,例如http://www.baidu.com./class1/men

?

八、配置rsync下行同步

環境配置

主機 操作系統 IP地址 軟件 / 安裝包 / 工具
Master CentOS7 192.168.61.22 rsync
Slave CentOS7 192.168.61.33 rsync / inotify-tools-3.14.tar.gz
  • 安裝包鏈接:inotify-tools-3.14.tar.gz
  • 下行同步:將master服務器數據備份到slave服務器

?

1、Master(192.168.61.22)

#基礎環境配置
systemctl stop firewalld.service 
setenforce 0

#配置rsync源服務器
rpm -q rsync
yum -y install rsync

#建立/etc/rsyncd.conf配置文件
vim /etc/rsyncd.conf      		#添加以下配置

uid = nobody					#root
gid = nobody					#root
use chroot = yes				#禁錮在源目錄                                                
address = 192.168.184.50		#監聽地址
port 873                     	#監聽端口 tcp/udp 873,可通過 cat /etc/services | grep rsync 查看                                           
log file = /var/log/rsyncd.log	#日志文件位置                  
pid file = /var/run/rsyncd.pid	#存放進程ID的文件位置                  
hosts allow = 192.168.184.0/24	#允許訪問的客戶機地址
[wwwroot]                                                               
path = /var/www/html     		#源目錄的實際路徑                               
comment = Document Root of www.ljm.com	
read only = yes             	#是否為只讀                                     
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z  	#同步時不再壓縮的文件類型      
auth users = backuper           #授權賬戶,多個賬號以空格分隔                                 

## secrets file = /etc/rsyncd_users.db #存放賬戶信息的數據文件      

uid = nobody
gid = nobody
use chroot = yes                                                
address = 192.168.61.22
port 873                                           
log file = /var/log/rsyncd.log                  
pid file = /var/run/rsyncd.pid                  
hosts allow = 192.168.184.0/24
[wwwroot]                                                               
path = /var/www/html                               
comment = Document Root of www.wdc.com	
read only = yes                                     
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z     
auth users = wdc                                
secrets file = /etc/user.db

#如采用匿名的方式,只要將其中的 “auth users” 和 “secrets file”配置項去掉即可

#為備份賬戶創建數據文件
vim /etc/user.db
wdc:123123		#無需建立同名系統用戶

chmod 600 /etc/user.db

#保證所有用戶對源目錄 /var/www/html 都有讀的權限
mkdir -p /var/www/html
chmod +r /var/www/html/
ls -ld /var/www/html/

#啟動 rsync 服務程序
rsync --daemon
netstat -natp | grep rsync

cd /var/www/html
touch aaa.html bbb.html
ls

#關閉 rsync 服務
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid

#關閉防火墻及安裝機制
在這里插入圖片描述
#rsync系統一般已默認安裝,安裝httpd是為了生成/var/www/html目錄(后續會用到作為共享目錄)
在這里插入圖片描述

#編輯rsync配置文件

在這里插入圖片描述

#編輯用戶賬號文件,固定格式為[名稱:密碼],一行一個
在這里插入圖片描述

#官方要求,最好只是賦權600!
在這里插入圖片描述

#開啟服務、檢測端口號,確認服務是否成功開啟
在這里插入圖片描述

#切換至共享目錄下,創建文件
在這里插入圖片描述

2、slave(192.168.61.33)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#關閉防火墻及安裝機制

yum install -y rsync
#安裝rsync

mkdir /abc
cd /abc/
#創建一個目錄/abc,用來同步

rsync -avz backuper@192.168.61.22::wwwroot /abc
#使用rsync同步備份源的同步文件

ls 
#查看同步是否成功


vim /etc/server.pass
20210311
#編輯免交互密鑰文件,第一行為密碼


chmod 600 /etc/server.pass
#給密鑰文件賦權600

rsync -az --delete --password-file=/etc/server.pass backuper@192.168.61.22::wwwroot /abc
#rsync,使用密鑰文件/etc/server/pass對應backuper用戶,IP地址為192.168.61.22的共享模塊文件進行壓縮,并歸檔同步至當前服務器的/abc目錄下,同時刪除差異內容,如果原目標有的,會增加,原目標沒有的,會刪除。保持一致性。

ls /abc

#查看下行同步是否成功

#關閉防火墻及安裝機制
在這里插入圖片描述
#安裝rsync
在這里插入圖片描述
#創建一個目錄/abc,用來同步
在這里插入圖片描述
#使用rsync同步備份源的同步文件,并查看是否完成
在這里插入圖片描述
#編輯免交互密鑰文件,第一行為密碼
在這里插入圖片描述
#給密鑰文件賦權600
在這里插入圖片描述

九、發起端(客戶端)配置 rsync+inotify

  • 使用inotify通知接口,可以用來監控文件系統的各種變化情況,如文件存取、刪除、移動、修改等。利用這一機制,可以非常方便地實現文件異動告警、增量備份,并針對目錄或文件的變化及時作出響應。
  • 將inotify機制與rsync工具相結合,可以實現觸發式備份(實時同步),即只要原始位置的文檔發生變化,則立即啟動增量備份操作;否則處于靜默等待狀態。這樣,就避免了按固定周期備份時存在的延遲性、周期過密等問題。
  • 因為 inotify 通知機制由 Linux 內核提供,因此主要做本機監控,在觸發式備份中應用時更適合上行同步。

1.Master 關閉只讀模式并為共享目錄賦權

Master(192.168.61.22)

vim /etc/rsyncd.conf
read only = no
#關閉只讀模式,否則將不可寫入


kill `cat /var/run/rsyncd.pid`
#修改完配置文件需要重啟服務,這里采用直接殺掉進程號的方式

netstat -natp | grep rsync
#檢查一下服務是否已被終止

rsync --daemon
netstat -natp | grep rsync
#再次開啟服務并檢查端口號確認

2.優化 Slave 內核參數

Slave(192.168.61.33)

cat /proc/sys/fs/inotify/max_queued_events      #監控事件隊列
cat /proc/sys/fs/inotify/max_user_instances     #最多監控實例數
cat /proc/sys/fs/inotify/max_user_watches       #每個實例最多監控文件數

vim /etc/sysctl.conf         #加大每個參數
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
#當要監控的目錄、文件數據量較多或者變化頻繁時,建議加大參數值

sysctl -p
#刷新

3.客戶端(192.168.61.33):編譯安裝 inotify-tools

yum install -y gcc gcc-c++ 
#安裝gcc gcc-c++ 

cd /opt
#切換至/opt上傳inotify-tools安裝包

tar zxf inotify-tools-3.14.tar.gz 
#解壓

cd /opt/inotify-tools-3.14/
./configure
make -j 4 && make install
#編譯安裝

4.客戶端啟動監聽

#持續監聽對/abc的modify,create,move,delete操作
inotifywait -mrq -e modify,create,delete /abc

5、編寫觸發同步腳本

vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ backuper@192.168.59.111::wwwroot"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
	fi
done
----詳解----
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/"
#INOTIFY_CMD變量:持續監控 /opt/abc目錄中的創建,刪除,移動,修改,改變時間的操作
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ xixi@192.168.59.111::wwwroot"
#RSYNC_CMD變量:使 xixi 用戶,/etc/server.pass 密鑰文件,將 /opt/xcf1 目錄下的文件進行壓縮,歸檔,保留硬鏈接文件同步至 192.168.61.22 的共享模塊定義的目錄 /var/www/html 下,并刪除差異性內容,保持一致性

$INOTIFY_CMD | while read DIRECTORY EVENT FILE		#持續監控...
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then		#如果服務并未啟動,則執行同步
        $RSYNC_CMD
	fi
done
----

cd /opt/
chmod +x inotify.sh
#給腳本賦權

chmod +x /etc/rc.d/rc.local 
echo "/opt/inotify.sh" >> /etc/rc.d/rc.local 
#設置開機自啟動

sh -x inotify.sh
#執行腳本

cd /opt/abc
touch jingjing.html
rm -rf jiang.html
#創建一個新的html文件并刪除之前的qwe
ls
#再次確認一下

原文鏈接:https://blog.csdn.net/m0_61744194/article/details/125608880

欄目分類
最近更新