自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Rsync+Inotify數(shù)據(jù)實(shí)時(shí)同步介紹

開(kāi)發(fā) 開(kāi)發(fā)工具
rsync(remote sync)遠(yuǎn)程同步,rsync是linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具。使用快速增量備份工具Remote Sync可以遠(yuǎn)程同步,支持本地復(fù)制,或者與其他SSH、rsync主機(jī)同步。已支持跨平臺(tái),可以在Windows與Linux間進(jìn)行數(shù)據(jù)同步。rsync監(jiān)聽(tīng)端口:873,rsync運(yùn)行模式:C/S。

一、rsync概述

rsync(remote sync)?遠(yuǎn)程同步,rsync?是linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具。使用快速增量備份工具Remote Sync可以遠(yuǎn)程同步,支持本地復(fù)制,或者與其他SSH、rsync主機(jī)同步。已支持跨平臺(tái),可以在Windows與Linux間進(jìn)行數(shù)據(jù)同步。rsync監(jiān)聽(tīng)端口:873?,rsync運(yùn)行模式:C/S。

官網(wǎng):https://rsync.samba.org/官方文檔:https://www.samba.org/ftp/rsync/rsync.htmlGitHub地址:https://github.com/WayneD/rsync

二、rsync優(yōu)缺點(diǎn)

1)優(yōu)點(diǎn)

  • 可以鏡像保存整個(gè)目錄樹(shù)和文件系統(tǒng);
  • 可以做到保持原來(lái)文件的權(quán)限、時(shí)間、軟硬鏈接等等;
  • 無(wú)須特殊權(quán)限即可安裝;
  • 可以有排除指定文件或目錄同步的功能,相當(dāng)于打包命令tar的排除功能;
  • 可以使用rcp、ssh等方式來(lái)傳輸文件,rsync本身不對(duì)數(shù)據(jù)加密;
  • 支持匿名傳輸,可以實(shí)現(xiàn)方便安全的進(jìn)行數(shù)據(jù)備份和鏡像;
  • 可以實(shí)現(xiàn)增量同步,既只同步發(fā)生變化的數(shù)據(jù),因此數(shù)據(jù)傳輸效率很高;
  • 可以通過(guò)socket(進(jìn)程方式)傳輸文件和數(shù)據(jù)。

2)缺點(diǎn)

  • 同步數(shù)據(jù),需要掃描所有文件進(jìn)行對(duì)比,才進(jìn)行差量傳輸。如果文件數(shù)量達(dá)到百萬(wàn)甚至千萬(wàn)級(jí),掃描文件對(duì)比文件將非常耗時(shí),降低了rsync效率;
  • rsync不能實(shí)時(shí)地區(qū)監(jiān)測(cè)、同步數(shù)據(jù)。雖然可以通過(guò)守護(hù)進(jìn)程方式觸發(fā)同步,但兩次動(dòng)作間有時(shí)間差,導(dǎo)致數(shù)據(jù)不一致,無(wú)法應(yīng)對(duì)出現(xiàn)故障時(shí)完全恢復(fù)數(shù)據(jù)。

解決方法:rsync+inotify

三、rsync+inotify配置與安裝

IP

主機(jī)名

角色

192.168.0.113

k8s-master-168-0-113

rsync、 inotify-tools【數(shù)據(jù)源】

192.168.0.116

k8s-master2-168-0-116

rsync【備份節(jié)點(diǎn)】

圖片

1)rsync安裝

yum -y install rsync

2)rsync配置

cat >/etc/rsyncd.conf<<EOF
uid = root
gid = root
#禁錮在源目錄
use chroot = yes
#監(jiān)聽(tīng)地址,在另外的機(jī)器上,記得修改
address = 192.168.0.113
#監(jiān)聽(tīng)地址tcp/udp 873,可通過(guò)cat /etc/services | grep rsync查看
port 873
#日志文件位置
log file = /var/log/rsyncd.log
#存放進(jìn)程 ID 的文件位置
pid file = /var/run/rsyncd.pid
#允許訪問(wèn)的客戶機(jī)地址
hosts allow = 192.168.0.0/16
#共享模塊名稱(chēng)
[nfsdata]
#源目錄的實(shí)際路徑
path = /opt/nfsdata
comment = Document Root of www.kgc.com
#指定客戶端是否可以上傳文件,默認(rèn)對(duì)所有模塊為 true
read only = false
#同步時(shí)不再壓縮的文件類(lèi)型
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
#授權(quán)賬戶,多個(gè)賬號(hào)以空格分隔,不加則為匿名,不依賴(lài)系統(tǒng)賬號(hào)
auth users = backuper
#存放賬戶信息的數(shù)據(jù)文件
secrets file = /etc/rsyncd_users.db
EOF

rsyncd.conf 常用參數(shù)詳解

rsyncd.conf 參數(shù)

參數(shù)說(shuō)明

uid=root

rsync 使用的用戶。

gid=root

rsync 使用的用戶組(用戶所在的組)

use chroot=no

如果為 true,daemon 會(huì)在客戶端傳輸文件前“chroot to the path”。這是一種安全配置,因?yàn)槲覀兇蠖鄶?shù)都在內(nèi)網(wǎng),所以不配也沒(méi)關(guān)系

max cnotallow=200

設(shè)置最大連接數(shù),默認(rèn) 0,意思無(wú)限制,負(fù)值為關(guān)閉這個(gè)模塊

timeout=400

默認(rèn)為 0,表示 no timeout,建議 300-600(5-10 分鐘)

pid file

rsync daemon 啟動(dòng)后將其進(jìn)程 pid 寫(xiě)入此文件。如果這個(gè)文件存在,rsync 不會(huì)覆蓋該文件,而是會(huì)終止

lock file

指定 lock 文件用來(lái)支持“max connections”參數(shù),使得總連接數(shù)不會(huì)超過(guò)限制

log file

不設(shè)或者設(shè)置錯(cuò)誤,rsync 會(huì)使用 rsyslog 輸出相關(guān)日志信息

ignore errors

忽略 I/O 錯(cuò)誤

read notallow=false

指定客戶端是否可以上傳文件,默認(rèn)對(duì)所有模塊為 true

list=false

是否允許客戶端可以查看可用模塊列表,默認(rèn)為可以

hosts allow

指定可以聯(lián)系的客戶端主機(jī)名或和 ip 地址或地址段,默認(rèn)情況沒(méi)有此參數(shù),即都可以連接

hosts deny

指定不可以聯(lián)系的客戶端主機(jī)名或 ip 地址或地址段,默認(rèn)情況沒(méi)有此參數(shù),即都可以連接

auth users

指定以空格或逗號(hào)分隔的用戶可以使用哪些模塊,用戶不需要在本地系統(tǒng)中存在。默認(rèn)為所有用戶無(wú)密碼訪問(wèn)

secrets file

指定用戶名和密碼存放的文件,格式;用戶名;密碼,密碼不超過(guò) 8 位

[backup]

這里就是模塊名稱(chēng),需用中括號(hào)擴(kuò)起來(lái),起名稱(chēng)沒(méi)有特殊要求,但最好是有意義的名稱(chēng),便于以后維護(hù)

path

這個(gè)模塊中,daemon 使用的文件系統(tǒng)或目錄,目錄的權(quán)限要注意和配置文件中的權(quán)限一致,否則會(huì)遇到讀寫(xiě)的問(wèn)題

配置/etc/rsyncd_users.db,跟auth users對(duì)應(yīng)


cat >/etc/rsyncd_users.db<<EOF
backuper:123456
EOF
#官方要求,必須賦權(quán)600,要不然會(huì)有問(wèn)題
chmod 600 /etc/rsyncd_users.db

rsync常用命令參數(shù)詳解

rsync --help

rsync [選項(xiàng)] 原始位置 目標(biāo)位置

常用選項(xiàng) 說(shuō)明
-r 遞歸模式,包含目錄及子目錄中的所有文件
-l 對(duì)于符號(hào)鏈接文件仍然復(fù)制為符號(hào)鏈接文件
-v 顯示同步過(guò)程的詳細(xì)信息
-z 在傳輸文件時(shí)進(jìn)行壓縮goD
-p 保留文件的權(quán)限標(biāo)記
-a 歸檔模式,遞歸并保留對(duì)象屬性,等同于-rlpt
-t 保留文件的時(shí)間標(biāo)記
-g 保留文件的屬組標(biāo)記(僅超級(jí)用戶使用)
-o 保留文件的屬主標(biāo)記(僅超級(jí)用戶使用)
-H 保留硬鏈接文件
-A 保留ACL屬性信息
-D 保留設(shè)備文件及其他特殊文件
--delete 刪除目標(biāo)位置有而原始位置沒(méi)有的文件
--checksum 根據(jù)對(duì)象的校驗(yàn)和來(lái)決定是否跳過(guò)文件

3)啟動(dòng)rsync服務(wù)

rsync --daemon --cnotallow=/etc/rsyncd.conf
netstat -tnlp|grep :873

4)測(cè)試驗(yàn)證

# 在192.168.0.116節(jié)點(diǎn)上測(cè)試手動(dòng)同步
# 從遠(yuǎn)端【拉取】數(shù)據(jù)
rsync -avz root@192.168.0.113:/opt/nfsdata/* /opt/nfsdata/

# 在192.168.0.113節(jié)點(diǎn)上測(cè)試手動(dòng)同步
# 從【推送】數(shù)據(jù)
rsync -avz /opt/nfsdata/* root@192.168.0.116:/opt/nfsdata/

### 在192.168.0.116節(jié)點(diǎn)上測(cè)試手動(dòng)同步,通過(guò)【拉取】數(shù)據(jù),配置文件配置的模塊,這里走的是rsync協(xié)議,上面走的是ssh協(xié)議,只要做了免密就直接推送或拉取數(shù)據(jù)了。這里就會(huì)用到配置文件里配置的users用戶了,也是secrets file文件里配置的其中一個(gè)用戶。
#【方式一】
rsync -avz backuper@192.168.0.113::nfsdata /opt/nfsdata/
# 【方式二】
rsync -avz rsync://backuper@192.168.0.113/nfsdata /opt/nfsdata/

# 在192.168.0.113節(jié)點(diǎn)上執(zhí)行
###【推送】
#【方式一】非交互式,/opt/backuper.pass文件是backuper用戶的密碼,且文件權(quán)限600
rsync -avz --password-file=/opt/backuper.pass /opt/nfsdata/* backuper@192.168.0.113::nfsdata
# 【方式二】
rsync -avz /opt/nfsdata/* rsync://backuper@192.168.0.113/nfsdata

圖片

圖片

圖片

圖片

5)編譯安裝 inotify-tools

1、inotify-tools概述

  • inotify是一種強(qiáng)大的、細(xì)粒度的、異步的文件系統(tǒng)事件監(jiān)控機(jī)制,比如讀取、寫(xiě)入和創(chuàng)建。Inotify 反應(yīng)靈敏,用法非常簡(jiǎn)單,并且比 cron 任務(wù)的繁忙輪詢高效得多。
  • linux內(nèi)核從 2.6.13 起,加入了inotify支持,通過(guò)inotify可以監(jiān)控文件系統(tǒng)中添加、刪除,修改、移動(dòng)等各種細(xì)微事件,利用這個(gè)內(nèi)核接口,第三方軟件就可以監(jiān)控文件系統(tǒng)下文件的各種變化情況,而inotify-tools就是這樣的一個(gè)第三方軟件。
  • inotify可用于檢測(cè)單個(gè)文件,也可以檢測(cè)整個(gè)目錄。當(dāng)檢測(cè)的對(duì)象是一個(gè)目錄的時(shí)候,目錄本身和目錄里的內(nèi)容都會(huì)成為檢測(cè)的對(duì)象。

在192.168.0.113機(jī)器上安裝

2、優(yōu)化inotify內(nèi)核參數(shù)

在/proc/sys/fs/inotify?目錄下有max_queued_events、max_user_instances、max_user_watches這三個(gè)文件

  • max_queued_events:表示調(diào)用inotify_init時(shí)分配給inotify instance中可排隊(duì)的event的數(shù)目的最大值,超出這個(gè)值的事件被丟棄,但會(huì)觸發(fā)IN_Q_OVERFLOW事件;
  • max_user_instances:表示每一個(gè)用戶可創(chuàng)建的inotify instatnces的數(shù)量上限,默認(rèn)128;
  • max_user_watches:表示同一用戶同時(shí)可以添加的watch數(shù)量。
echo 65535 > /proc/sys/fs/inotify/max_user_instances
echo 99999999 > /proc/sys/fs/inotify/max_queued_events
echo 99999999 > /proc/sys/fs/inotify/max_user_watches

3、inotify-tools下載

# 安裝inotify-tools之前,先安裝一下automake和libtool這兩個(gè)依賴(lài),不然編譯安裝inotify-tools的時(shí)候會(huì)報(bào)錯(cuò)。
yum install automake libtool -y

# 當(dāng)然也得安全編譯工具
yum -y install gcc gcc-c++ make wget

mkdir /opt/software ; cd /opt/software
wget --no-check-certificate https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

# 解壓
tar -zxvf inotify-tools-3.14.tar.gz

4、inotify-tools編譯安裝

cd /opt/software/inotify-tools-3.14
# 編譯安裝
./configure && make && make install

5、編寫(xiě)觸發(fā)式同步腳本

vi /opt/software/inotify-tools-3.14/inotify_rsync.sh

#!/bin/bash
#監(jiān)聽(tīng)/opt/nfsdata/ 目錄:
#INOTIFY_CMD變量:持續(xù)監(jiān)控 /opt/nfsdata/ 目錄中的創(chuàng)建,刪除,移動(dòng),修改,改變時(shí)間的操作
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/nfsdata"
# 注意/tmp/user.pass文件里只有backuper對(duì)應(yīng)的密碼,而且文件權(quán)限只能是600
RSYNC_CMD="rsync -avzH --delete --password-file=/opt/backuper.pass /opt/nfsdata/* backuper@192.168.0.116::nfsdata"

$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
$RSYNC_CMD
done

inotifywait命令常用參數(shù):

圖片

執(zhí)行

cd /opt/software/inotify-tools-3.14/
chmod +x inotify_rsync.sh
# 啟動(dòng)腳本
nohup ./inotify_rsync.sh &

責(zé)任編輯:武曉燕 來(lái)源: 大數(shù)據(jù)與云原生技術(shù)分享
相關(guān)推薦

2011-06-22 10:37:08

rsyncinotify

2025-04-28 08:10:00

Linuxinotifyrsync

2024-08-02 09:36:03

2024-07-03 08:02:19

MySQL數(shù)據(jù)搜索

2024-11-26 08:05:44

2020-03-18 07:11:24

實(shí)時(shí)同步搜索

2021-02-26 05:21:56

MySQL數(shù)據(jù)設(shè)計(jì)

2014-08-14 10:52:49

windowslinux

2021-05-06 05:39:30

Inotify監(jiān)聽(tīng)系統(tǒng)

2014-01-22 11:22:44

華為HANA一體機(jī)FusionCube大數(shù)據(jù)分析

2024-09-11 14:47:00

2016-05-03 14:02:44

2021-06-04 07:24:14

Flink CDC數(shù)據(jù)

2021-07-05 10:48:42

大數(shù)據(jù)實(shí)時(shí)計(jì)算

2023-05-03 08:58:46

數(shù)據(jù)庫(kù)開(kāi)源

2024-10-18 11:39:55

MySQL數(shù)據(jù)檢索

2011-10-28 09:05:09

2016-11-02 09:02:56

交通大數(shù)據(jù)計(jì)算

2021-03-10 14:04:10

大數(shù)據(jù)計(jì)算技術(shù)

2024-06-06 08:58:08

大數(shù)據(jù)SQLAPI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)