日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

通过rsync搭建一个远程备份系统(二)

發(fā)布時(shí)間:2023/12/18 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过rsync搭建一个远程备份系统(二) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Rsync+inotify實(shí)時(shí)備份數(shù)據(jù)

rsync在同步數(shù)據(jù)的時(shí)候,需要掃描所有文件后進(jìn)行對比,然后進(jìn)行差量傳輸,如果文件達(dá)到了百萬或者千萬級別以上是,掃描文件的時(shí)間也很長,而如果只有少量的文件變更了,那么此時(shí)rsync是非常低效的。所以此時(shí)需要一個(gè)實(shí)時(shí)監(jiān)控文件變化的軟件結(jié)合rsync來做實(shí)時(shí)數(shù)據(jù)備份。

what's inotify

inotify是一個(gè)強(qiáng)大的,細(xì)粒度的,異步的文件系統(tǒng)事件監(jiān)控機(jī)制,linux內(nèi)核從2.6.13開始加了這個(gè)功能,可以通過監(jiān)控文件系統(tǒng)添加,刪除,修改移動等事件,利用這個(gè)接口,第三方軟件可以監(jiān)控文件系統(tǒng)添加,刪除,修改移動等事,inotify-tools就是這樣的一個(gè)第三方軟件。

install it

安全前首先確認(rèn)內(nèi)核大于2.6.13以上,以下重新編譯內(nèi)核加入inotify的支持,具體方法請自查。

[root@salt ~]# uname -r 2.6.32-504.el6.x86_64 [root@salt ~]# ll /proc/sys/fs/inotify/ total 0 -rw-r--r-- 1 root root 0 Nov 4 02:53 max_queued_events -rw-r--r-- 1 root root 0 Nov 4 02:53 max_user_instances -rw-r--r-- 1 root root 0 Nov 4 02:53 max_user_watches

如果 ll 后顯示有三個(gè),那么說明支持inotify了。
既然系統(tǒng)支持,那么接下來安裝它 。
官網(wǎng)地址是:https://github.com/rvoicilas/inotify-tools
我這里的下載地址是:https://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

[root@salt tmp]# tar zxf inotify-tools-3.14.tar.gz [root@salt tmp]# cd inotify-tools-3.14 [root@salt inotify-tools-3.14]# ./configure --prefix=/usr/local/inotifytools && make && make install [root@salt inotify-tools-3.14]# cd /usr/local/inotifytools/ [root@salt inotifytools]# ls bin include lib share [root@salt inotifytools]# ll bin/inotifywa* -rwxr-xr-x. 1 root root 44319 Nov 4 03:00 bin/inotifywait -rwxr-xr-x. 1 root root 41425 Nov 4 03:00 bin/inotifywatch

安裝好inotify-tools,會生成inotifywait 或者 inotifywatch 兩個(gè)指令,

  • inotifywait用于等待文件或者文件集上的特定事件,可以監(jiān)控任何文件和目錄設(shè)置,并且可以遞歸地監(jiān)控整個(gè)目錄樹
  • inotifywatch用于收集被監(jiān)控的文件系統(tǒng)統(tǒng)計(jì)數(shù)據(jù),包括整個(gè)inotify時(shí)間發(fā)生多少次等信息。
inotify 相關(guān)參數(shù)

inotify定義了一些接口參數(shù),用來限制inotify消耗kernel memory的大小。由于這些參數(shù)都是內(nèi)存參數(shù),因此根據(jù)實(shí)際情況調(diào)節(jié)其大小,下面介紹下這些參數(shù):

  • /proc/sys/fs/inotify/max_queued_events 表示調(diào)用了inotify_init時(shí)分配到inotify_instance中可排隊(duì)的event數(shù)最大值,超過這值就會被丟棄,但會出發(fā)IN_Q_QVRFLOW事件
  • /proc/sys/fs/inotify/max_user_instances 表示每一個(gè)real_user ID可創(chuàng)建的inotify instances數(shù)量上限。
  • /proc/sys/fs/inotify/max_user_watches 表示每個(gè)inotify 實(shí)例相關(guān)聯(lián)的watchs上限,也就是inotify實(shí)例監(jiān)控最大文件的數(shù)量,如果文件數(shù)量巨大,這個(gè)值也需要調(diào)高。如我們修改成8百萬
[root@localhost inotify-tools-3.14]# cat /proc/sys/fs/inotify/max_user_watches 8192 [root@localhost inotify-tools-3.14]# echo "3000000" > /proc/sys/fs/inotify/max_user_watches [root@localhost inotify-tools-3.14]# cat /proc/sys/fs/inotify/max_user_watches 3000000
inotifywait 相關(guān)參數(shù)

inotifywait是一個(gè)監(jiān)控等待事件,可以配合shell腳本來使用它,下面說下常用的幾個(gè)參數(shù):

  • -m (--monitor) 表示處于一直保持時(shí)間監(jiān)聽的狀態(tài)
  • -r (--recursive) 表示遞歸查詢目錄
  • -d (--daemon) 守護(hù)進(jìn)程運(yùn)行
  • -q (--quiet) 表示打印出監(jiān)控事件
  • -c (--event) 通過此參數(shù)可以指定要監(jiān)控的事件,常見的事件有modify,delete,create和attrib等等
    man inotifywait可以查詢到更多的參數(shù)

公司應(yīng)用案例:rsync+inotify搭建實(shí)時(shí)同步系統(tǒng)

網(wǎng)站架構(gòu)簡單概要

這是一個(gè)應(yīng)用商店業(yè)務(wù),前端haproxy負(fù)載均衡,中間nginx作為web服務(wù)節(jié)點(diǎn),網(wǎng)站數(shù)據(jù)訪問都到后端存儲節(jié)點(diǎn),后端存儲節(jié)點(diǎn)與公司app發(fā)布節(jié)點(diǎn)通過rsync+inotify進(jìn)行同步,此時(shí)你也許會問了,為什么不直接把APP放在后端存儲節(jié)點(diǎn)了呢,我們當(dāng)時(shí)是這樣考慮:

  • 存儲節(jié)點(diǎn)是有多臺服務(wù)器,如果要上傳app的話,就得上傳很多臺服務(wù)器,我們通過inotify+rsync就可以上傳到發(fā)布機(jī)上,自己自動同步到多臺后端存儲服務(wù)器了,這樣就實(shí)現(xiàn)了上傳到一臺,同步到多臺的效果。
  • 服務(wù)器都在阿里云,發(fā)布機(jī)在內(nèi)網(wǎng),公司需要訪問的話,直接訪問內(nèi)部發(fā)布機(jī)即可,避免訪問阿里云的服務(wù)器,占用它的帶寬資源。

所以下面就通過inotify+rsync來實(shí)現(xiàn)app文件的自動同步了

環(huán)境介紹:

以下為實(shí)驗(yàn)環(huán)境,但是其生產(chǎn)情況和這類似。只不過是服務(wù)器數(shù)量多了幾臺罷了。

  • 192.168.141.3 發(fā)布機(jī) 安裝inotify+rsync
  • 192.168.141.4 存儲節(jié)點(diǎn) rsync服務(wù)端模式

我們在剛才的操作中,已經(jīng)在192.168.141.3上的發(fā)布機(jī)安裝好了rsync+inotify的,192.168.141.4上把rsync配置成服務(wù)器模式,發(fā)布機(jī)配制成客戶端模式,這樣發(fā)布機(jī)上一有東西都自動同步到存儲節(jié)點(diǎn)。

在存儲節(jié)點(diǎn)(192.168.141.4)上配置rsync
[root@localhost ~]# useradd store # 往store家目錄下同步數(shù)據(jù) [root@localhost ~]# cat /etc/rsyncd.conf uid = nobody gid = nobody use chroot = no max connections = 10 strict modes = yes pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [appstore] path = /home/store comment = app file ignore errors read only = no write only = no hosts allow = * list = false uid = root gid = root auth users = store secrets file = /etc/server.pass [root@localhost ~]# cat /etc/server.pass store:123..aa [root@localhost ~]# chmod 600 /etc/server.pass [root@localhost ~]# ll /etc/server.pass -rw-------. 1 root root 14 Nov 5 01:42 /etc/server.pass # 千萬不要忘記600權(quán)限
在發(fā)布機(jī)(192.168.141.3)上的配置

確保inotify安裝正確后,我們首先手動測試下看rsync能不能夠正常傳輸東西

[root@localhost ~]# rsync -vzrtopg --delete --progress /home/store store@192.168.141.4::appstore Password: sending incremental file list store/ store/.bash_logout18 100% 0.00kB/s 0:00:00 (xfer#1, to-check=7/9) ....一堆東西

顯然,上面的狀態(tài)說明rsync正常工作的,接下來寫一個(gè)腳本,實(shí)現(xiàn)rsync+inotify結(jié)合工作

[root@localhost ~]# cat syncapp.sh #!/bin/bash node1="192.168.141.4" # 如果有多個(gè)服務(wù)端,可以node2=xx,node3=xxx,總之自由發(fā)揮吧 src=/home/store/ # 確保目錄存在 dst=appstore user=store /usr/local/inotifytools/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src \ | while read file dorsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user@$node1::$dstecho "${file} was rsynced" >> /var/log/rsyncd.log 2&>1 done

腳本相關(guān)參數(shù)如下:

  • --timefmt 指定時(shí)間的輸出格式
  • --format 指定變化文件的詳細(xì)信息
  • -e close_write,delete,create,attrib 需要注意的這個(gè)close_write,表示等文件寫完以后在觸發(fā)rsync同步,
  • -e modify,delete,create,attrib
測試是否正常工作

我們在發(fā)布機(jī)下的/home/store上放一個(gè)東西,或者新建一個(gè)目錄,刪除一個(gè)東西,如果存儲節(jié)點(diǎn)能夠自動同步過去,那么就正常了。。。。

轉(zhuǎn)載于:https://www.cnblogs.com/liaojiafa/p/6033520.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的通过rsync搭建一个远程备份系统(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。