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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux服务器之间的文件同步(双向同步unison+inotify)

發布時間:2023/12/18 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux服务器之间的文件同步(双向同步unison+inotify) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在日常的運維工作中,需要保證文件的高可用性,以防單點帶來的文件丟失。 根據場景不同,一般會有單向和雙向同步兩種方式。
1、雙向同步:unison+inotify 用于啟動切換的場景
2、單向同步:rsync+inotify ?用于手工恢復的場景
大多數情況下,都用單向同步即可,如果有問題的話,運維認為手工恢復即可; 如果對恢復的實時性要求不叫高的話,可以用雙向同步,出問題的時候,讓系統自動切換先用起來,然后再人工維護,不影響正常使用。
我們來演示一下雙向同步環境的搭建和配置。

1 Unison簡介

Unison是Windows、Linux以及其他Unix平臺下都可以使用的文件同步工具,它能使兩個文件夾(本地或網絡上的)保持內容的一致。Unison擁有與其它一些同步工具或文件系統的相同的特性,但也有自身的特點:
a.跨平臺使用;
b.對內核和用戶權限沒有特別要求;
c.Unison是雙向的,它能自動處理兩分拷貝中更新沒有沖突的部分,有沖突的部分將會顯示出來讓用戶選擇更新策略;
d.只要是能連通的兩臺主機,就可以運行unison,可以直接使用socket連接或安全的ssh連接方式,對帶寬的要求不高,使用類似rsync的壓縮傳輸協議。

示例環境:兩臺centos7的環境
vm1 192.168.1.110
vm2 192.168.1.111


2、編譯并安裝Unison

Linux下通過源碼包編譯安裝Unison時,需要用到Objective Caml compiler。

2.1 編譯和安裝ocaml

[root@vm1 ~]# wget http://caml.inria.fr/pub/distrib/ocaml-4.02/ocaml-4.02.0.tar.gz? [root@vm1 ~]# tar -xzvf ocaml-4.02.0.tar.gz [root@vm1 ~]# cd ocaml-4.02.0 [root@vm1 ocaml-4.02.0]# ./configure [root@vm1 ocaml-4.02.0]# make world opt [root@vm1 ocaml-4.02.0]# make install

2.2 編譯安裝Unison

[root@vm1 ~]# wget ftp://133.31.130.35/pub/pkgsrc/distfiles/unison-2.48.3.tar.gz [root@vm1 ~]# tar -xzvf unison-2.48.3.tar.gz [root@vm1 ~]# cd unison-2.48.3 [root@vm1 unison-2.48.3]# make UISTYLE=text [root@vm1 unison-2.48.3]# make install

2.3 copy unsion到/usr/local/bin

[root@vm1 unison-2.48.3]# cp unison /usr/local/bin

3 配置ssh的無密碼登錄

3.3.1 同步ssh-keygen生成ssh登錄安全密鑰對(兩臺機器上分別執行)

ssh-keygen -t rsa

一路回車到結束
這里將生成一對密鑰,id_rsa(私鑰文件)和id_rsa.pub(公鑰文件),保存在 ~/.ssh/目錄下

3.2 copy公鑰并授權

將id_rsa.pub(公鑰)文件的內容,copy到另外一臺服務器的authorized_keys 文件中,完成授權

# vm1 上執行 cat ~/id_rsa.pub # 獲取內容,然后copy# vm2 的執行黏貼 vi ~/.ssh/authorized_keys# vm2 文件授權 chmod 700 .ssh chmod 600 ~/.ssh/authorized_keys# vm2 重啟SSH服務 [root@vm1 ~]# service sshd restart# vm2 測試: ssh root@vm1

同樣的反向操作,相互授權一下。


4 設置同步腳本

示例這里是同步兩臺機器的nfs文件夾

vm1 上的腳本(unsion.sh)

#/bin/sh UNISON=`ps -ef |grep -v grep|grep -c inotifywait` if [ ${UNISON} -lt 1 ] thenother_server="192.168.1.110"src1="/home/nfs/"dst2="/home/nfs/"/usr/bin/inotifywait -mrq -e create,delete,delete_self,modify,move $src1 | while read line; do/usr/bin/unison $src1 ssh://$other_server/$dst2echo -n "$line " >> /var/log/inotify.logecho `date | cut -d " " -f1-4` >> /var/log/inotify.logdone fi

vm2 上的腳本(unsion.sh)

#/bin/sh UNISON=`ps -ef |grep -v grep|grep -c inotifywait` if [ ${UNISON} -lt 1 ] thenother_server="192.168.1.111"src1="/home/nfs/"dst2="/home/nfs/"/usr/bin/inotifywait -mrq -e create,delete,delete_self,modify,move $src1 | while read line; do/usr/bin/unison $src1 ssh://$other_server/$dst2echo -n "$line " >> /var/log/inotify.logecho `date | cut -d " " -f1-4` >> /var/log/inotify.logdone fi

然后執行兩個腳本,則實現雙向同步。

5 定時檢查同步任務(以防進程死掉)

[unison@localhost ~]# crontab -e # vm1 * * * * * nohup unsion.sh > /dev/null 2>&1 &# vm2 * * * * * nohup unsion.sh > /dev/null 2>&1 &

總結

以上是生活随笔為你收集整理的linux服务器之间的文件同步(双向同步unison+inotify)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。