環境:
linux :內核3.0以上
同步工具:
rsync&sersync
資料:https://rsync.samba.org/examples.html
要求:須以root實作一下操作,否則容易失敗
rsync是檔案或目錄同步的常用工具,尤其在分布式系統下進行同步,可以通過自寫腳本呼叫該命令的方式實作,但現在有更加容易實作的方法,通過以上工具以組態檔的形式實作實時雙向同步,
第一步:安裝rsync
yum -y install xinetd rsync
xinetd --是用來管理rsync的
rsync--同步工具
sersync--監控目錄
調整內核引數:
sysctl -w fs.inotify.max_queued_events="99999999" #inotify佇列最大長度,如果值太小,會出現"** Event Queue Overflow **"錯誤,導致監控檔案不準確sysctl -w fs.inotify.max_user_watches="99999999" #要同步的檔案包含多少目錄,可以用find /opt/tongbu1 -type d | wc -l 統計,必須保證max_user_watches值大于統計結果
sysctl -w fs.inotify.max_user_instances="65535" #每個用戶創建inotify實體最大值
二 安裝rsync 在AB服務器各自安裝rsync:
yum -y install xinetd rsync(用root權限)
mkdir -p /cmiot/File_Receive(用root用戶)
第一步:配置rsync的組態檔
vi /cmiot/File_Receive
#===========================
#主機A的組態檔
uid = root
gid = root
port=873
use chroot = yes
max connections = 5
syslog facility = local5
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
transfer logging = yes
address=192.168.106.205 #服務器A
hosts allow=192.168.106.206 #服務器B
hosts deny = * #禁止同步的ip
read only=false
list=yes
ignore errors #忽略一些IO錯誤
auth users = rsyncuser
secrets file = /etc/rsync.passwd
################################
[backup]
path = /cmiot/File_Receive/ #必須是完整路徑,某位的'/'必須加上
comment = welcome to oldboyedu backup! #解釋
#===========================
#建立虛擬賬戶對應的用戶名與密碼(用于客戶端連接的賬戶和密碼)
#A主機密碼驗證檔案
vim /etc/rsync.passwd
rsyncuser:123456
chmod 600 /etc/rsync.passwd
B主機登錄密碼檔案--用于登錄B主機使用
vim /etc/rsync_bak.passwd
123456
chmod 600 /etc/rsync_bak.passwd #===========================
#主機B的組態檔
uid = root
gid = root
port=873
use chroot = yes
max connections = 5
syslog facility = local5
pid file = /var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
transfer logging = yes
address=192.168.106.206 #服務器B
hosts allow=192.168.106.205 #服務器A:修改一下允許訪問的網段,根據實際情況填寫
hosts deny = * #禁止同步的ip
read only=false
list=yes
ignore errors #忽略一些IO錯誤
auth users = rsyncuser_bak
secrets file = /etc/rsync_bak.passwd
################################
[backup_bak] #模塊名稱
path = /cmiot/File_Receive/ #備份目錄,必須是完整路徑,某位的'/'必須加上
comment = welcome to oldboyedu backup! #解釋
#===========================
#建立虛擬賬戶對應的用戶名與密碼(用于客戶端連接的賬戶和密碼)
B主機密碼驗證檔案
vim /etc/rsync_bak.passwd
rsyncuser_bak:123456
chmod 600 /etc/rsync_bak.passwd
A主機密碼登陸了檔案
vim /etc/rsync.passwd
123456
chmod 600 /etc/rsync.passwd #注意:密碼驗證檔案與登錄密碼檔案密碼必須一致 第二步:開啟873埠
netstat -antup|grep 873
防火墻開機啟動:systemctl enable firewalld.service
查看防火墻狀態:firewall-cmd --state
開啟防火墻:systemctl start firewalld.service
開放873埠:firewall-cmd --zone=public --add-port=873/tcp --permanent
重啟:systemctl restart firewalld.service
重新加載載:firewall-cmd --reload
#===========================
第三步: 查看rsync行程
ps -ef | grep rsync | grep -v grep
檢查啟動用戶并kill掉行程,洗掉行程檔案
kill -9 pid
rm -rf /var/run/rsyncd.pid
rm -rf /var/run/rsync.lock
rm -rf /var/run/rsyncd_bak.pid
rm -rf /var/run/rsync_bak.lock #===========================
第三步:啟動rsync行程:rsync --daemon --config=/etc/rsyncd.conf
echo -ne rsync –daemon --config=/etc/rsyncd.conf >> /etc/rc.local #開機自啟 #===========================
第四步:測驗同步--采取
備用服務器創建同步目錄:mkdir -p /cmiot/File_Receive
rsync -avz /cmiot/File_Receive/ rsyncuser@Bip::backup
輸入密碼成功同步后修改:echo"123456">/etc/rsync.passwd
如下命令就可以自動登錄:
rsync -avz /cmiot/File_Receive/* rsyncuser@s206::backup --password-file=/etc/rsync.passwd 第四步:配置sersync
在AB服務器上傳壓縮檔案sersync2.5.4_64bit_binary_stable_final.tar 至/usr/local/ 目錄下,
用tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz進行解壓,然后執行mv GNU-Linux-x86 sersync,
然后執行vim /usr/local/sersync/confxml.xml進行修改
vi /usr/local/sersync/confxml.xml
對如下內容進行修改:
<host hostip="localhost" port="8008"></host> # 開啟DUBUG模式
#注:設定為true,開啟debug模式,會在sersync正在運行的控制臺,列印inotify事件與rsync同步命令,
<debug start="true"/> # 設定要監控的事件
#注:對于大多數應用,可以嘗試把createFile(監控檔案事件選項)設定為false來提高性能,減少 rsync通訊,因為拷貝檔案到監控目錄會產生create事件與close_write事件,所以如果關閉create事件,只監控檔案拷貝結束時的事 件close_write,同樣可以實作檔案完整同步,
#如果將createFolder設為false,則不會對產生的目錄進行監控,該目錄下的子檔案與子目錄也不會被監控,
#默認情況下對創建檔案(目錄)事件與洗掉檔案(目錄)事件都進行監控,如果專案中不需要洗掉遠程目標服務器的檔案(目錄),則可以將delete 引數設定為false,則不對洗掉事件進行監控,
<inotify>
<delete start="true"/>
<createFolder start="false"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="false"/>
</inotify> <sersync> # 本地同步的目錄路徑
<localpath watch="/cmiot/File_Receive/"> # 遠程IP和rsync模塊名
<remote ip="對方ip" name="rsync_bak"/>
</localpath>
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="對方配置用戶" passwordfile="本機登錄對方密碼"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<!--<exclude expression="*.php"></exclude>-->
<!--<exclude expression="info/*"></exclude>-->
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync> #===================================================== 啟動sersync:/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml 1)在主服務器開啟sersync守護行程,使sersync在后臺運行,開啟實時同步
./sersync -d
2)在開啟實時監控之前對主服務器目錄與遠程目標機目錄進行一次整體同步
./sersync -r
如果設定了過濾器,即在xml檔案中,filter為true,則暫時不能使用-r引數進行整體同步,-r引數將會無效,
3)指定組態檔
./sersync -o XXX.xml
對于sersync使用可執行檔案目錄下的默認組態檔confxml.xml,如果需要使用另一個組態檔,可以使用-o引數指定其它組態檔,也可開啟多個sersync守護行程分別使用不同的組態檔, 自啟動:vim /etc/rc.d/rc.local在最后一行增加/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml #============================================================== 同步測驗: 在開啟rsync和sersync行程后,在A或B其中一臺服務器上從其他目錄檔案隨意復制一個檔案或檔案夾,在被同步機上查看其檔案大小或檔案夾大小,檔案個數 命令:
顯示硬碟占用空間
du -h
lsblk
查看指定目錄大小
du -sh /opt
查看各個目錄大小
du -h --max-depth=1
當前目錄的全部檔案個數(包含子檔案夾的檔案)
ls -lR | grep "^-" | wc -l
按檔案大小排序 由大到小
ls -Slh
包含子目錄檔案
du -sh * | sort -n
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/110898.html
標籤:其他
上一篇:磁力驅動泵的使用注意事項
下一篇:關于起名
