rsync+inotify實時同步備份數據

rsync同步

rsync+inotify實時同步備份數據

軟件簡介:

rsync命令簡介:

rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。
rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個
算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。 rsync
是一個功能非常強大的工具,其命令也有很多功能特色選項,
來自: rsync命令

rsync [OPTION] SRC [USER@]HOST::DEST
rsync命令的選項:
  -a, archive 存檔模式,等同于-rlptgoD (no -H,-A,-X)
  -u, update 僅僅進行更新,也就是跳過所有已經存在于DST,并且文件時間晚于要備份的文件,不覆蓋更新的文件。
  -z, compress 壓縮傳送
  -R, relative 使用相對路徑信息。
   –timeout=time ip超時時間,單位為秒。
  –delete 刪除那些DST中SRC沒有的文件。

Inotify命令簡介:

Inotify是一種強大的、細粒度的、異步文件系統監控機制,它滿足各種各樣的文件監控需要,
可以監控文件系統的訪問屬性、讀寫屬性、權限屬性、刪除創建、移動等操作,也就是可以監
控文件發生的一切變化。
來自: inotifywait命令

inotifywait  [OPTION…][ … ]
  -m 是要持續監視變化。
  -r 使用遞歸形式監視目錄。
  -q 減少冗余信息,只打印出需要的信息。
  -e 指定要監視的事件列表。

關于rsync和Inotify更多詳細信息可以查看命令手冊;
也可以參考Linux命令大全,


1477615117373128.png

1. 安裝配置rsync

1.1. yum安裝軟件rsync

# 軟件安裝
# 檢查執行結果:rpm -aq rsync
yum install -y rsync

# 添加用戶
# 檢查執行結果:id rsync
useradd rsync -s /sbin/nologin  -M

# 創建目錄并修改屬主
# 檢查執行結果:ll /mydata/rsync
mkdir -p /mydata/rsync
chown -R rsync: /mydata/rsync

1.2. rsync配置

cp /etc/rsyncd.conf{,.bak}
cat <<EOF > /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode

uid = rsync
gid = rsync

use chroot = no
max connections = 100
pid file = /var/run/rsyncd.pid
transfer logging = yes
log file = /var/log/rsyncd.log
exclude = lost+found/
timeout = 900
ignore nonreadable = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[work]
      path = /mydata/rsync
      ignore errors
      read only = false
      list = false
      hosts allow = 10.10.20.0/24
      hosts deny = 0.0.0.0/0
      auth users = rsync_backup
      secrets file = /etc/rsynd.passwd

EOF

1.3. 虛擬用戶secrets file

echo "rsync_backup:123456" > /etc/rsynd.passwd
chmod 600 /etc/rsynd.passwd

1.4. 啟動rsync服務

systemctl start rsyncd

↑↑↑↑↑ On IP 10.10.20.79 ↑↑↑↑↑


↓↓↓↓↓ On IP 10.10.20.71 ↓↓↓↓↓↓

1.5. 測試rsync服務的同步功能

# 創建同步賬戶密碼文件,僅需要密碼,無須用戶名
echo '123456' > /etc/rsync.passwd
# 提權
chmod 600 /etc/rsync.passwd
# 創建同步目錄和測試文件
mkdir /mydata/rsync
echo 'just a test from IP 10.10.20.71' > /mydata/rsync/test

rsync -avz --password-file=/etc/rsync.passwd /mydata/rsync/ rsync_backup@10.10.20.79::work

2. 安裝配置inotify

2.1. 下載軟件

# 從網上下載程序,要求安裝git
git clone https://github.com/rvoicilas/inotify-tools.git  /mydata/inotify-tools.git
# 編譯安裝inotify-tools
cd /mydata/inotify-tools.git
./autogen.sh 
# 編譯三部曲
./configure --prefix=/usr/local/inotify
make && make install

2.2. 直接上腳本:

cat <<'EOF' > ~/bin/inotify.sh
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
#
# Author: jacky18676887374@aliyun.com QQ 18676887374
# date: 20161027-10:05:20
# Vervion: 0.0.1
# Synopsis: COMAND
# 
# inotifywait COMMAND
Inotify="/usr/local/inotify/bin/inotifywait"
# inotifywait OPTION
Option_I='-mrq -e move,modify,delete,create,attrib'
# rsync OPTION
Option_R='-auz --delete --timeout=100  --password-file=/etc/rsync.passwd'
# rsync DEST
Dest='rsync_backup@10.10.20.79::work'
# backup file, inotify file; rsync SRC
Src="/mydata/rsync/"
#
########## judge ##########
if [ ! -e "$Src" ] \
|| [ ! -e "${Option_R##*=}" ] \
|| [ ! -e "${Inotify}" ] \
|| [ ! -e "/usr/bin/rsync" ];then
    echo "Check File and Folder"
    exit 9
fi
########## main ##########
$Inotify ${Option_I} $Src | while read file
    do
        rsync ${Option_R} $Src $Dest &> /dev/null
    done
exit 0
EOF

2.3. 修改執行權限并后臺執行

chmod u+x ~/bin/inotify.sh
~/bin/inotify.sh &

原創文章,作者:昭其,如若轉載,請注明出處:http://www.www58058.com/55125

(1)
昭其昭其
上一篇 2016-10-28
下一篇 2016-10-28

相關推薦

  • 關于大型網站技術演進的思考(三):存儲的瓶頸(3)

    原文出處: 夏天的森林    存儲的瓶頸寫到現在就要進入到深水區了,如果我們所做的網站已經到了做數據庫垂直拆分和水平拆分的階段,那么此時我們所面臨的技術難度的挑戰也會大大增強。 這里我們先回顧下數據庫的垂直拆分和水平拆分的定義: 垂直拆分:把一個數據庫中不同業務單元的數據分到不同的數據庫里。 水平拆分:是根據一定的規則把同一業務…

    Linux干貨 2015-03-03
  • linux基礎入門之一

    一、計算機的組成與功能 計算機由硬件和軟件組成 硬件: 按馮·洛伊曼體系劃分 1、CPU:包括運算器、控制器、寄存器、緩存,對數據控制和計算 2、存儲器:內部存儲器、外部存儲器,對數據提供存儲功能 3、輸入設備:具有下指令,提供數據輸入 4、輸出設備:輸出數據加工的結果 軟件: 1、低級語言:匯編語…

    Linux干貨 2016-09-19
  • 淺談用戶和組相關配置文件

    用戶、組和權限的管理 Linux如何像Windows系統那樣,可以不輸入密碼直接進入圖形界面?那么如何如何自動登錄圖形界面呢?這就要用到編輯配置文件: nano  /etc/gdm/custom.cof  ,在里面加上   automaticLoginEnable=true automaticLogin=root 退出…

    Linux干貨 2016-10-23
  • http://www.jianshu.com/p/f1d0739b141f

    Linux干貨 2017-07-30
  • “lnmap實戰之負載均衡架構(無高可用)”之新增keepalived高可用

    “lnmap實戰之負載均衡架構(無高可用)”之新增keepalived高可用 我之前有一篇”lnmap實戰之負載均衡架構(無高可用)“博客是專門部署了lanmap,之前沒有做高可用,那么我們現在就把高可用補上去吧 這樣我們照著之前的文檔從新部署一下 1.機器結構如下: 192.168.42.150 node0 …

    Linux干貨 2017-06-25
  • 用戶管理類命令

    2018-03-18

    Linux干貨 2018-03-18
欧美性久久久久