Rsync
一款快速增量備份工具
支持遠程同步,支持上傳和下載
命令:
Rsync [選項] 原始位置 目標位置
-a:歸檔模式,遞歸併保留對象屬性,等同於 -rlptgoD
-v:顯示同步過程的詳細(verbose)信息
-z:在傳輸文件時進行壓縮(compress)
-H:保留硬連接文件
-A:保留ACL屬性信息
--delete:刪除目標位置有而原始位置沒有的文件
--checksum:根據對象的校驗和來決定是否跳過文件
上傳:rsync -avz A(/opt/) B(root@目標IP:/root/html)
rsync -avz A(/opt/) B(root@目標IP::wwwroot)
:: 表示連接的是共享文件夾
將A主機的文件上傳到主機B
下載:rsync -avz B(root@IP:/root/html) A(/opt/)
rsync -avz B(root@目標IP::wwwroot) A(/opt/)
A是客戶端,B是服務器
實驗:2臺linux
服務器:192.168.80.182
客戶端:192.168.80.181
客戶端:安裝rsync工具
服務器:
1 yum install -y rsync
2 vi /etc/rsyncd.conf uid = nobody
gid = nobody
use chroot = yes
address = 192.168.80.182
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.80.0/24
[wwwroot]
path = /var/www/html
comment = Document Root of www.benet.com
read only = no
dont compress = .gz .bz2 .tgz .zip .rar .z auth users = zlx
Secrets file = /etc/rsyncd_users.db
3建立虛擬用戶zlx(客戶端以虛擬用戶訪問服務器)
vi /etc/rsyncd_users.db zlx:abc123
4設置權限chmod 600 /etc/rsyncd_users.db
5啓動程序:rsync --daemon
6檢查:netstat -anpt | grep rsync 出現873口
註釋:源主機文件位置/var/www/html 共享名wwwroot
客戶端使用命令進行下載操作:
rsync -avz [email protected]::wwwroot/ ./
有密碼交互,可以設置去除:
export RSYNC_PASSWORD=abc123 (永久生效則寫入/etc/ profile中)
客戶端使用命令進行上傳操作:
1,注意共享文件夾的屬性:read only = no
2,文件的屬主改爲nobody
確認權限沒問題後執行本地文件上傳操作:
rsync -avz /bin/b [email protected]::wwwroot
·
--delete的使用
rsync -avzH --delete [email protected]::wwwroot /opt
客戶端刪除與服務器共享文件夾內不符的文件,同時根據要求下載共享文件夾內的數據
實驗2:rsync+inotify實時同步:
服務器(92.168.80.182)安裝inotify監控,若發生改變則將上行同步至客戶端(192.168.80.181)
服務器:
1編譯安裝inotify
確保有c++,gcc,make工具
tar xf inotify-tools-3.14.tar.gz -C /opt
cd /opt/inotify-tools-3.14/
./configure
make && make install
2配合inotify觸發備份、調整內核參數
vi /etc/sysctl.conf
fs.inotify.max_queued_events = 16384 //監控隊列大小
fs.inotify.max_user_instances = 1024 //最多監控實例數
fs.inotify.max_user_watches = 1048576 //每個實例最多監控文件數
3 查看參數設置:sysctl –p
4通過腳本完成出發備份任務
vi /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait –mrq -e modify,create,attrib,move,delete /var/www/html"
RSYNC_CMD="rsync -azH --delete /var/www/html/ [email protected]:/srv"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 50 ] ; then
$RSYNC_CMD
fi
Done
注:去除交互,腳本才能正常執行。
5執行腳本,開始監控:sh /opt/inotify_rsync.sh &
實時測試
1首先將服務器共享文件夾內的文件刪除
2將客戶端內/srv文件夾內數據刪除(腳本:是服務器共享問件夾和客戶端/srv文件夾的同步)
3在服務器上新建文件夾abc (監控端有反應)
4查看客戶端是否同步
檢查完畢!
rsync
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Flume能否代替Canal實時同步Mysql的Binlog數據?
杨鑫newlfe
2020-06-02 00:07:48
Unity3d遊戲畫面實時同步html5或WebGL中(基於FMETP STREAM)
程序员正茂
2020-05-24 13:22:49
Oracle RAC+ASM 數據庫實時同步
wahahaman
2020-04-08 11:49:42
實時同步 && 全網備份
shangzui
2020-02-26 05:53:06
rsync-Inotify文件數據實時同步
kingredfly
2020-02-22 21:22:54
Unity3D客戶端實時同步
jxw167
2019-11-19 14:52:24
inotify+rsync數據的實時同步
流年灬似水
2019-08-04 13:16:55
rsync+inotify實時同步
XiaoBingZ
2019-07-05 13:25:10
INOTIFY監控服務與RSYNC服務實現CLIENT與SERVER之間的實時同步
何1991
2019-05-19 13:39:32
rsync+inotify實現數據的實時同步
fgddfw
2019-05-09 13:08:45
SGDMA與普通DMA
藍天上的雲℡
2024-05-02 14:21:20
用json來存數據的思路. json類型數據庫的思路.
張博的博客
2024-05-02 14:19:50