最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux服務器間文件實時同步的實現(xiàn)

 更新時間:2018年11月21日 09:32:47   作者:AlienPaul  
這篇文章主要介紹了Linux服務器間文件實時同步的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

使用場景

現(xiàn)有服務器A和服務器B,如果服務器A的指定目錄(例如 /home/paul/rsync/ )中的內(nèi)容發(fā)生變更(增刪改和屬性變更),實時將這些變更同步到服務器B的目標目錄中(例如 /home/paul/rsync/ )。

數(shù)據(jù)鏡像備份工具Rsync

Rsync是一個非??焖俸挽`活的文件復制工具。它支持本機或者是和遠程服務器間的文件復制。Rsync使用了delta-transfer算法,它只需要傳送源端和目標端的文件差異部分,大大減少了網(wǎng)絡(luò)帶寬的消耗和復制耗費的時間。Rsync多用于數(shù)據(jù)備份和鏡像。

Rsync使用了快速檢查算法,通過比較文件大小或最后修改時間的變化來判斷文件是否需要同步。

Rsync連接遠程主機有兩種方式:使用ssh或rsync daemon。這里使用Rsync方式來實現(xiàn)遠程文件備份。

Rsync的安裝與操作

安裝Rsync

分別在服務器A和服務器B的terminal執(zhí)行:

sudo yum install rsync

安裝完畢后,會發(fā)現(xiàn)rsync的配置文件位于 etc/rsyncd.conf 。該文件使用daemon方式同步時需要使用,此處暫不介紹。

配置服務器A和B之間的免密登錄

服務器A執(zhí)行:

ssh-keygen
ssh-copy-id 服務器B的IP地址

創(chuàng)建源端目錄和目標端目錄

在服務器A中:

mkdir /home/paul/rsync

在服務器B中:

mkdir /home/paul/rsync

在服務器A創(chuàng)建測試文件

echo "Hello from Server A" >> /home/paul/rsync/demo.txt

執(zhí)行文件傳送命令

在服務器A運行:

# (1)
rsync -avPz --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync
# (2)
rsync -avPz --delete --progress /home/paul/rsync 192.168.100.130:/home.paul/rsync

會發(fā)現(xiàn)在demo.txt也出現(xiàn)在了服務器B中/home/paul/rsync目錄。

命令解析:

(1) 將服務器A中的/home/paul/rsync目錄內(nèi)的文件復制到服務器B(192.168.100.130)的/home.paul/rsync中。

(2) 比較目標端和源端的文件,如果目標端的文件在源端不存在,在目標端刪除該文件。

Rsync存在的問題

Rsync僅是一個文件復制工具,它無法對源端文件的增刪改操作進行監(jiān)聽。在源端做出更改后,需要執(zhí)行rsync命令才能將變更同步到目標端。

Rsync在每次同步前需要掃描整個目錄。如果源目錄內(nèi)的文件數(shù)量比較多,掃描可能需要耗費較多的時間。
為了滿足實時監(jiān)聽的要求,我們需要引入另一個工具:inotify。

文件系統(tǒng)事件監(jiān)聽工具inotify

inotify-tools為inotify提供一個簡單接口。它是一個c語言編寫的庫,同時也包含命令行工具。

inotify-tools的詳細介紹請點擊: https://github.com/rvoicilas/inotify-tools/wiki

inotify-tools的安裝

對于centos7系統(tǒng),依次執(zhí)行:

yum install -y epel-release
yum --enablerepo=epel install inotify-tools

使用inotifywait命令進行事件監(jiān)聽

監(jiān)聽腳本如下(inotifywait-rsync.sh):

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib /home/paul/rsync/ | while read file
do
rsync -avPz --progress /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/
rsync -avPz --delete /home/paul/rsync/ 192.168.100.130:/home/paul/rsync/
echo "${file} was synchronized"
done

參數(shù)解析

  • -m 保持持續(xù)監(jiān)聽狀態(tài),如果不寫該參數(shù),inotifywait會在監(jiān)聽到一次事件之后退出。
  • -r 遞歸方式監(jiān)聽目錄。
  • -q 安靜模式,打印輸出較少的內(nèi)容。
  • --timefmt 指定時間的輸出格式。
  • --format 指定事件輸出的格式。
  • -e 設(shè)置監(jiān)聽的事件類型。這里監(jiān)聽增刪改和metadata的變更。

對于每次觸發(fā)的監(jiān)聽時間,inotifywait會執(zhí)行do和done之間的代碼。在這里,我們調(diào)用之前所說的rsync命令進行文件同步。

監(jiān)聽腳本加入crontab

crontab -e
* * * * * sh /home/paul/inotifywait-rsync.sh

參考資料
https://rsync.samba.org
https://github.com/rvoicilas/inotify-tools/wiki

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Linux初學(CnetOS7 Linux)之切換命令模式和圖形模式的方法

    Linux初學(CnetOS7 Linux)之切換命令模式和圖形模式的方法

    本篇文章主要介紹了Linux初學(CnetOS Linux7)之切換命令模式和圖形模式的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Linux恢復刪除文件的lsof命令詳解

    Linux恢復刪除文件的lsof命令詳解

    Linux系統(tǒng)是服務器最常見的操作系統(tǒng),當然也面臨著非常多的安全事件,當發(fā)生刪除文件錯誤的時候,恢復文件就尤為重要了,下面這篇文章主要介紹了Linux恢復刪除文件的lsof命令,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • 給Linux定時備份數(shù)據(jù)庫的實現(xiàn)腳本

    給Linux定時備份數(shù)據(jù)庫的實現(xiàn)腳本

    這篇文章主要介紹了Linux定時備份數(shù)據(jù)庫實現(xiàn)方式,如果你的服務器數(shù)據(jù)庫需要實現(xiàn)每天定時備份,那么這篇文章會對你大有幫助,有需要的朋友可以借鑒參考下
    2021-09-09
  • 詳解Linux文件鎖flock

    詳解Linux文件鎖flock

    這篇文章主要介紹了詳解Linux文件鎖flock,在多個進程同時操作同一份文件的過程中,很容易導致文件中的數(shù)據(jù)混亂,需要鎖操作來保證數(shù)據(jù)的完整性,這里介紹的針對文件的鎖,稱之為“文件鎖”-flock。
    2016-12-12
  • ubuntu中實現(xiàn)定時彈窗的提醒腳本

    ubuntu中實現(xiàn)定時彈窗的提醒腳本

    最近的項目是在ubuntu的環(huán)境下工作的,因為長時間工作身體不適,所以想寫個腳本定時提醒自己喝水,伸懶腰,這篇文章記錄了整個開發(fā)的過程,有需要的朋友們可以來一起看看。
    2016-10-10
  • CentOS 8設(shè)置自動更新的完整步驟

    CentOS 8設(shè)置自動更新的完整步驟

    這篇文章主要給大家介紹了關(guān)于CentOS 8設(shè)置自動更新的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用CentOS 8具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • 在Ubuntu中實現(xiàn)人臉識別登錄的完整步驟

    在Ubuntu中實現(xiàn)人臉識別登錄的完整步驟

    這篇文章主要給大家介紹了關(guān)于在Ubuntu中實現(xiàn)人臉識別登錄的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-06-06
  • Linux下如何用base64命令加解密字符串

    Linux下如何用base64命令加解密字符串

    在Linux系統(tǒng)上,可以使用`base64`命令對字符串或文件進行Base64加密和解密,加密時,使用`echo`命令將字符串傳遞給`base64`,解密時使用`echo`命令將Base64字符串傳遞給`base64 -d`
    2025-01-01
  • Linux下誤刪messages文件的找回方法

    Linux下誤刪messages文件的找回方法

    今天小編就為大家分享一篇關(guān)于Linux下誤刪messages文件的找回方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Linux兩臺服務器之間復制文件及免密碼登錄的方法

    Linux兩臺服務器之間復制文件及免密碼登錄的方法

    有時候搭建集群機器是,需要在多臺機器中間相互拷貝文件,一種方式是同事sftp拷貝到本機,再分別拷貝到其他服務器上。這里介紹一種直接在兩臺服務器之間拷貝文件且去掉繁瑣的登陸操作的方法
    2017-04-04

最新評論

毕节市| 尖扎县| 元氏县| 琼海市| 紫金县| 株洲县| 营山县| 自贡市| 新绛县| 彩票| 峨山| 刚察县| 鸡泽县| 库车县| 阳城县| 正安县| 黑龙江省| 谢通门县| 专栏| 永顺县| 长丰县| 宽城| 杂多县| 锦州市| 合川市| 靖安县| 枣阳市| 子洲县| 依兰县| 镇安县| 米林县| 海门市| 高清| 隆昌县| 华蓥市| 苍山县| 宁海县| 上蔡县| 买车| 江西省| 巢湖市|