Linux服務器實現(xiàn)文件實時同步的方法詳解
1 背景說明
在做系統(tǒng)集群部署時,涉及到兩個或多個服務器之間文件同步.在軟件層面linux服務環(huán)境找到以下兩種同步方式
- 利用linux NFS功能將網絡共享文件掛載成本地目錄
- 采用文件監(jiān)聽,實時推送
服務器資源如下
- 服務器1 10.2.4.51 ,作為主服務器
- 服務器2 10.2.4.52 ,作為從服務器
2 NFS網絡共享配置
2.1 主服務器
2.1.1 安裝應用包
yum install -y nfs-utils rpcbind #nfs安裝命令 author: herbert qq:464884492 systemctl enable nfs #將nfs設置開機啟動 systemctl enable rpcbind #將rpcbind設置開機啟動
2.1.2 共享配置
主服務建立需要共享的文件夾
mkdir /home/nfs_data # 主服務需要共享的目錄
配置從服務可以訪問主服務器
vi /etc/exports #author: herbert qq:464884492
設置內容為
/home/nfs_data/ 10.2.4.52(rw,sync,no_root_squash)
重啟服務,注意一定要先啟動 rpcbind
systemctl stop nfs systemctl stop rpcbind systemctl start rpcbind systemctl start nfs showmount -e # 可以檢查NFS配置是否生效 # 配置正確后,會有一下提示信息 Export list for hk51: /home/nfs_data 10.2.4.52
2.1.3 防火墻配置
如果服務器需要開啟防火墻,需要在防火墻添加服務,可以通過firewall-cmd --state
防火墻開啟狀態(tài)
firewall-cmd --add-service=nfs --permanent --zone=public firewall-cmd --add-service=mountd --permanent --zone=public firewall-cmd --add-service=rpc-bind --permanent --zone=public firewall-cmd --reload #重新載入配置,使其生效
2.2 從服務器
2.2.1 應用包安裝
yum -y install nfs-utils
2.2.2 掛載配置
在相同的路徑建立同樣的目錄
mkdir /home/nfs_data # 從服務需要共享的目錄
掛載目錄
mount -t nfs -o sync,noac 10.2.4.51:/home/nfs_data /home/nfs_data #目錄掛載
檢查掛載
df -h #查看掛載
配置開機啟動掛載
vi /etc/fstab #追加內容 10.2.4.51:/home/nfs_data /home/nfs_data/ nfs sync,noac 0 0
3 文件實時監(jiān)聽同步
3.1 SSH互信配置
主服務器和從服務分別生成自己的公鑰,命令如下
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa # 生成證書 cd ~/.ssh/ #切換目錄 touch authorized_keys #生成認證文件 cat id_rsa.pub >>authorized_keys #復制公鑰到認證文件 scp authorized_keys 10.2.4.52:/root/.ssh #遠程復制自己公鑰到對方服務器 service sshd restart #重啟SSH服務
主服務器和從服務器 authorized_keys 文件,保存所有需要免密登錄服務器的公鑰信息即id_rsa.pub
文件中的值
3.2 同步軟件安裝
主服務器和從服務器同時安裝應用包
yum -y install inotify-tools yum -y install unison #author: herbert qq:464884492
主服務器從服務器在相同路徑建立需要實時共享的目錄
mkdir /home/sync_data
3.3 同步腳本編寫
主服務器(10.2.4.51)監(jiān)聽同步腳本,文件名 /home/runfilesync.sh
#/bin/bash dstIp="10.2.4.52" src="/home/sync_data" dst="/home/sync_data" /usr/bin/inotifywait -mrq -e create,delete,modify,move $src | while read line; do /usr/bin/unison -batch $src ssh://$dstIp/$dst echo -n "$line " >> /var/log/inotify.log echo `date | cut -d " " -f1-4` >> /var/log/inotify.log done
從服務器(10.2.4.52)監(jiān)聽同步腳本,文件名 /home/runfilesync.sh
#/bin/bash dstIp="10.2.4.51" src="/home/sync_data" dst="/home/sync_data" /usr/bin/inotifywait -mrq -e create,delete,modify,move $src | while read line; do /usr/bin/unison -batch $src ssh://$dstIp/$dst echo -n "$line " >> /var/log/inotify.log echo `date | cut -d " " -f1-4` >> /var/log/inotify.log done
3.4 運行腳本,開機自起
腳本需要后臺運行,啟動命令如下
nohup sh /home/runfilesync.sh & ps -aux | grep runfilesync #檢查腳本是否在運行 #設置開機啟動 author: herbert qq:464884492 crontab -e #追加內容 @reboot /home/runfilesync.sh
4 效果測試
- 在主服務器 /home/nfs_data 和 /home/sync_data 兩個文件夾中分別添加
touch 地心俠士.txt
,然后ssh到從服務,可以在從服務器這兩個文件夾中找到地心俠士.text
- 在從服務器 /home/nfs_data 和 /home/sync_data 兩個文件夾中分別添加
touch 小院不小.txt
,然后ssh到主服務,可以在主服務器這兩個文件夾中找到小院不小.text
5 總結
通過軟件或者協(xié)議實現(xiàn)實時同步,以上兩種方法各有優(yōu)劣.采用NFS網絡共享協(xié)議,必須指定一個網絡主節(jié)點.采用inotify+unison方式,有點分布式的感覺,無需指定主節(jié)點,但同步效果方面和穩(wěn)定性方面會差一些
文件監(jiān)聽同步軟件inotify
和 unison
安裝需要編譯環(huán)境,安裝時比較麻煩.我這里提供了rpm
安裝包以及對應依賴包(安裝命令rpm -ivh xxx.rpm
).
到此這篇關于Linux服務器實現(xiàn)文件實時同步的方法詳解的文章就介紹到這了,更多相關Linux服務器文件同步內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
/etc/security/limits.conf詳解與配置過程
在Linux系統(tǒng)中,通過/etc/security/limits.conf文件和/etc/security/limits.d/目錄下的配置文件,可以設置用戶或用戶組的資源限制,配置文件中的soft和hard限制分別代表警告級別和硬性限制,它們需要匹配才能生效2024-10-10CentOS服務器+監(jiān)控寶SNMP監(jiān)控全攻略分享
很多人和Sudu一樣都想使用監(jiān)控寶去監(jiān)控自己的linux服務器,但是因為安裝snmp存在一些問題導致無法成功設置snmp的設置。2010-12-12手把手教你啟用Win10的Linux子系統(tǒng)(圖文超詳細)
這篇文章主要介紹了手把手教你啟用Win10的Linux子系統(tǒng)(圖文超詳細),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12