rsync介紹
創(chuàng)新互聯(lián)主要業(yè)務(wù)有網(wǎng)站營銷策劃、網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號開發(fā)、成都微信小程序、H5技術(shù)、程序開發(fā)等業(yè)務(wù)。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當(dāng)客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務(wù)的過程中,公司還積累了豐富的行業(yè)經(jīng)驗(yàn)、成都全網(wǎng)營銷推廣資源和合作伙伴關(guān)系資源,并逐漸建立起規(guī)范的客戶服務(wù)和保障體系。
rsync,英文全稱是remote synchronize,是一款實(shí)現(xiàn)遠(yuǎn)程同步功能的免費(fèi)軟件,它在同步文件的同時,可以保持原來文件的權(quán)限、時間、軟硬鏈接等附加信息。 rsync提供了一個客戶機(jī)和遠(yuǎn)程文件服務(wù)器的文件同步的快速方法,而且可以通過ssh方式來傳輸文件。甚至還可以實(shí)現(xiàn)只同步一個文件里有變化的內(nèi)容部分,所以可以實(shí)現(xiàn)快速的同步備份數(shù)據(jù)。同時,rsync還可以實(shí)現(xiàn)同步本地數(shù)據(jù)、刪除文件和目錄的功能。
Inotify 是一個 Linux 內(nèi)核特性,它監(jiān)控文件系統(tǒng),并且及時向?qū)iT的應(yīng)用程序發(fā)出相關(guān)的事件警告,比如刪除、讀、寫和卸載操作等。您還可以跟蹤活動的源頭和目標(biāo)等細(xì)節(jié)。
如果要實(shí)現(xiàn)定時同步數(shù)據(jù),可以在客戶端將rsync加入定時任務(wù),但是定時任務(wù)的同步時間粒度并不能達(dá)到實(shí)時同步的要求。在Linux kernel 2.6.13后提供了inotify文件系統(tǒng)監(jiān)控機(jī)制。通過rsync+inotify組合可以實(shí)現(xiàn)實(shí)時同步。
源服務(wù)器:192.168.177.132(rsync,httpd)
發(fā)起端:192.168.177.132(rsync,httpd,inotify-tools)
# rpm -q rsync //查看rsync有沒有安裝
# vim /etc/rsyncd.conf //rsync的配置文件
uid = nobody
gid = nobody
use chroot = yes
address = 192.168.177.132
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.177.0/24
[wwwroot]
path = /var/www/html
comment = www.kgc.cn
read only = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
auth users = backuper
secrets file = /etc/rsyncd_users.db
# vim /etc/rsyncd_users.db
backuper:abc123 //賬號跟密碼的格式
# chmod 600 /etc/rsyncd_users.db
# yum install httpd -y //安裝web服務(wù)
# rsync --daemon //啟動rsync服務(wù)
# systemctl stop firewalld.service //關(guān)閉防火墻
# setenforce 0 //增強(qiáng)性安全功能
# chmod 777 /var/www/html/
# cd /var/www/html
# echo "this is test" > 123.txt
# systemctl stop firewalld.service
# setenforce 0 //必須先關(guān)閉防火墻
交互,輸入的是源服務(wù)器的地址
# rsync -avz backuper@192.168.177.132::wwwroot /opt/
免交互,無需輸入密碼
# vim /etc/server.pass
# chmod 600 /etc/server.pass
# rsync -az --delete --password-file=/etc/server.pass backuper@192.168.177.132::wwwroot /opt
inotify裝在發(fā)起端
rsync在源服務(wù)器上
源服務(wù)器:
# vim /etc/rsyncd.conf
read only = no
# pkill -9 rsync
# cd /var/run/
# rm -rf rsyncd.pid //刪除pid進(jìn)程
# rsync --daemon //重啟服務(wù)
發(fā)起端:
# chmod 777 /var/www/html/
# tar zxvf inotify-tools-3.14.tar.gz -C /opt //解壓
# cd inotify-tools-3.14/
./configure
# yum install gcc gcc-c++ -y //安裝編譯環(huán)境
# make && make install
# vim /etc/sysctl.conf //進(jìn)行優(yōu)化
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
# sysctl -p //立即生效
# inotifywait -mrq -e modify,create,move,delete /var/www/html/ //對站點(diǎn)進(jìn)行監(jiān)控
# vim /opt/inotify.sh //編寫能同步的腳本
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.177.132::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
# chmod +x inotify.sh
# ./inotify.sh