rsync+inotify实现文件增量实时同步
rsync+inotify實現(xiàn)文件增量實時同步
- 項目環(huán)境
- 防火墻{項目環(huán)境,不是必要條件}
- 項目需求
- 一、rsync安裝部署
- 1.檢查是否安裝rsync
- 2.測試系統(tǒng)rsync命令
- 3.新建配置文件
- 服務器A{133}
- 創(chuàng)建或配置/etc/rsyncd.conf文件
- 創(chuàng)建授權(quán)賬戶的密碼文件
- 服務器B{135}
- 創(chuàng)建或配置/etc/rsyncd.conf文件
- 創(chuàng)建授權(quán)賬戶的密碼文件
- 4.啟動【占用端口873】
- 5.關(guān)閉
- 關(guān)閉不掉需要執(zhí)行以下操作
- 5.rsync命令介紹
- 二、inotify-tools安裝部署
- 三、rsync+inotify實現(xiàn)文件增量實時同步
- 腳本說明
- 服務器A{133}
- 配置文件inotify_back.sh
- **設置腳本權(quán)限**
- 腳本執(zhí)行失敗
- 啟動inotify
注解:rsync是數(shù)據(jù)同步,inotify是實時同步,不要搞混
項目環(huán)境
兩個服務器:
服務器A: 100.102.3.133 源服務器 有目錄 /data/site/
服務器b: 100.102.3.135 目標服務器 有目錄 /home/application/site/
防火墻{項目環(huán)境,不是必要條件}
服務器b: 100.102.3.133
firewall-cmd --perman --zone=public --add-rich-rule=“rule family=“ipv4” source address=“100.102.3.135” accept”
firewall-cmd --reload
firewall-cmd --list-all
服務器A: 100.102.3.135
firewall-cmd --perman --zone=public --add-rich-rule=“rule family=“ipv4” source address=“100.102.3.133” accept”
firewall-cmd --reload
firewall-cmd --list-all
項目需求
1.將 100.102.3.133 中的 /data/site/ 下的文件 實時同步到100.102.3.135下邊的 /home/application/site/ 文件夾中
3.開機自啟動同步程序
4.記錄同步數(shù)據(jù)的日志
一、rsync安裝部署
1.檢查是否安裝rsync
rpm -qa|grep rsync #默認自帶的,所以沒有寫安裝教程2.測試系統(tǒng)rsync命令
在133上執(zhí)行,會將135的site 同步到133/home/site/的文件中 rsync -avH --delete root@100.102.3.135:/home/application/site/ /home/site/ --log-file=/home/application/log/aa.log3.新建配置文件
服務器A{133}
創(chuàng)建或配置/etc/rsyncd.conf文件
[root@VM-12-13-centos /]# vi /etc/rsyncd.conf ###注意空格問題,否則啟動不了 #進程對應的進程號文件 pid file = /var/run/rsyncd.pid port = 873 address = 100.102.3.133 uid = root gid = root use chroot = yes read only = no hosts allow = 100.102.3.135 hosts deny=* max connections = 10 motd file = /etc/rsyncd.motd lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log log format = %t %a %m %f %b syslog facility = local3 timeout = 300 [igiNet] path = /home/application/site/ list=no ignore errors comment = igiNet auth users = mngUser secrets file = /etc/rsyncd.secret創(chuàng)建文件后賦權(quán) [root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.conf創(chuàng)建授權(quán)賬戶的密碼文件
[root@VM-12-13-centos /]# vi /etc/rsyncd.pwd netPwd 創(chuàng)建文件后賦權(quán) [root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.pwd[root@VM-12-13-centos /]# vi /etc/rsyncd.secret mngUser:mngPwd創(chuàng)建文件后賦權(quán) [root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.secret服務器B{135}
創(chuàng)建或配置/etc/rsyncd.conf文件
pid file = /var/run/rsyncd.pid port = 873 address = 100.102.3.135 uid = root gid = root use chroot = yes read only = no hosts allow = 100.102.3.133 hosts deny=* max connections = 10 motd file = /etc/rsyncd.motd lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log log format = %t %a %m %f %b syslog facility = local3 timeout = 300 [igiNet] path = /home/application/site/ list=no ignore errors comment = igiNet auth users = netUser secrets file = /etc/rsyncd.secret創(chuàng)建授權(quán)賬戶的密碼文件
[root@VM-12-13-centos /]# vi /etc/rsyncd.pwd mngPwd 創(chuàng)建文件后賦權(quán) [root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.pwd[root@VM-12-13-centos /]# vi /etc/rsyncd.secret netUser:netPwd 創(chuàng)建文件后賦權(quán) [root@VM-12-13-centos /]# chmod 600 /etc/rsyncd.secret4.啟動【占用端口873】
rsync --daemon --config=/etc/rsyncd.conf查看是否啟動成功
ps -ef|grep rsyncnetstat -ntap | grep rsync5.關(guān)閉
kill -9 pid關(guān)閉不掉需要執(zhí)行以下操作
[root@VM-12-13-centos /] cd /var/run/[root@VM-12-13-centos /run] cat rsyncd.pid ##查看pid文件[root@VM-12-13-centos /run] rm -rf rsyncd.pid ##刪除pid文件[root@VM-12-13-centos /run] rsync --daemon ##服務正常啟動5.rsync命令介紹
本文章用了 avH
rsync [選項] 原始位置 目標位置 常用選項 說明 -r 遞歸模式,包含目錄及子目錄中的所有文件 -l 對于符號鏈接文件仍然復制為符號鏈接文件 -v 顯示同步過程的詳細信息 -z 在傳輸文件時進行壓縮goD -p 保留文件的權(quán)限標記 -a 歸檔模式,遞歸并保留對象屬性,等同于-rlpt -t 保留文件的時間標記 -g 保留文件的屬組標記(僅超級用戶使用) -o 保留文件的屬主標記(僅超級用戶使用) -H 保留硬鏈接文件 -A 保留ACL屬性信息 -D 保留設備文件及其他特殊文件 --delete 刪除目標位置有而原始位置沒有的文件 --checksum 根據(jù)對象的校驗和來決定是否跳過文件二、inotify-tools安裝部署
inotify-tools 下載路徑
https://sourceforge.net/projects/inotify-tools/files/latest/download
# 解壓inotify tar -zxvf inotify-tools-3.13.tar.gz # 進入解壓目錄 cd inotify-tools-3.13 # 編譯并安裝(prefix是指定安裝目錄,編譯安裝前需安裝好GCC : yum install gcc) ./configure --prefix=/home/application/inotifor/ 安裝 make && make install三、rsync+inotify實現(xiàn)文件增量實時同步
腳本說明
1.【服務器A】和【服務器B】是一樣的腳本,dstdir上邊rsyncd.conf配置的參數(shù),rsyncuser 用戶 rsyncpassdir用戶的密碼文件。
2.如果單項同步【服務器A】-【服務器B】是不需要再【服務器B】上編輯腳本的。
3.【服務器A】,【服務器B】相互同步,可以實現(xiàn)附件共享的作用,和(共享磁盤)的作用是一致的。
srcdir 需要同步的文件路徑,路徑最后面必須加入 / 否則會導致循環(huán)同步 dstdir 目標服務器的的模塊名稱,該名稱即rsyncd.conf文件中[ ] 的內(nèi)容 excludedir 需要排除的文件列表,每一行是一條記錄 rsyncuser 同步使用的用戶名 rsyncpassdir 同步使用的用戶的密碼 dstip 目標ip,多個ip以空格區(qū)分服務器A{133}
配置文件inotify_back.sh
#!/bin/sh srcdir=/data/site/ dstdir=igiNet rsyncuser=netUser rsyncpassdir=/etc/rsyncd.pwd dstip="100.102.3.135" for ip in $dstipdorsync -avH --delete $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdirdone/home/application/inotifor/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir | while read filedofor ip in $dstipdorsync -avH --delete $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdirecho " ${file} was rsynced" >> /tmp/rsync.log 2>&1donedone設置腳本權(quán)限
chmod U+X inotify_back.sh腳本執(zhí)行失敗
sed -i 's/\r$//' inotify_back.sh啟動inotify
nohup ./inotify_back.sh 2>&1 </dev/null | cat >> log.out &總結(jié)
以上是生活随笔為你收集整理的rsync+inotify实现文件增量实时同步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实话实说别直说
- 下一篇: 安卓机如果相册不选图片就退出_教你怎么把