国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux中inotify+unison實現數據雙向同步備份

2024-08-27 23:55:23
字體:
來源:轉載
供稿:網友
  文章以一個例子來給各位介紹關于linux中inotify+unison實現數據雙向同步備份配置 方法,希望此例子能幫助各位深入的理解inotify+unison配置.
 
  服務器分別為:
 
  服務器A:192.168.1.6,同步目錄:/var/www
 
  服務器B:192.168.1.7,同步目錄:/var/www
 
  安裝unison:
 
  首先安裝ocaml,版本至少為3.07或更高.
 
  下載地址:http://caml.inria.fr.代碼如下:
 
  tar xvf ocaml-3.10.2.tar.gz
  cd ocaml-3.10.2
  ./configure
  make world opt
  make install
  cd ..
  安裝unison:下載地址:www.seas.upenn.edu/~bcpierce/unison/,代碼如下:
 
  tar xvf unison-2.32.52.tar.gz
  cd unison-2.32.52
  make UISTYLE=text THREADS=true STATIC=true
  cp unison /usr/local/bin
  cd ..
  注:UISTYLE=text THREADS=true STATIC=true表示使用命令行方式,加入線程支持以靜態模式編譯,安裝inotify,下載地址:http://inotify-tools.sourceforge.net:
 
  tar xvf inotify-tools-3.14.tar.gz
  cd inotify-tools-3.14
  ./configure
  make
  make install
  cd ..
  配置雙機ssh信任(除以下方法外,也可以在A中生成密鑰后,把A上的.ssh目錄全SCP到B服務器/root/.ssh,這樣方便些),以root用戶登陸,在服務器A上創建.ssh目錄:
 
  mkdir ~/.ssh
  chmod 700 ~/.ssh
  生成RSA密鑰:ssh-keygen -t rsa,然后連續三次回車,添加密鑰到授權密鑰文件中,在192.168.1.6服務器A上操作,2222是端口號,代碼如下:
 
  cd ~/.ssh
  ssh "-p 2222" 192.168.1.6 cat /root/.ssh/id_rsa.pub >> authorized_keys  #小寫p
  ssh "-p 2222" 192.168.1.7 cat /root/.ssh/id_rsa.pub >> authorized_keys
  scp  -P 2222 authorized_keys 192.168.1.7:/root/.ssh/  #大寫P
  chmod 600 /root/.ssh/authorized_keys
  在192.168.1.7服務器B上操作:chmod 600 /root/.ssh/authorized_keys
 
  分別在兩臺機器上執行如下測試,第一次執行時,會要求輸入密碼,以后執行則不需要說明信任成功,代碼如下:
 
  ssh -p 2222 192.168.1.6 date
  ssh -p 2222 192.168.1.7 date
  添加腳本,在192.168.1.6服務器A上添加腳本:
 
  mkdir /script
  vim /script/inotify.sh
  #/bin/bash
  UNISON=`ps -ef |grep -v grep|grep -c inotifywait`
  if [ ${UNISON} -lt 1 ]
  then
  ip2="192.168.1.7"
  src2="/var/www /"
  dst2="/var/www/ "
  /usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line  --phpfensi.com
  do
  /usr/local/bin/unison -batch $src2 ssh://$ip2/$dst2
  echo -n "$line " >> /var/log/inotify/inotify$(date +%u).log
  echo ` date +%F %T " " -f1-4` >> /var/log/inotify/inotify$(date +%u).log
  done
  fi
  在192.168.1.7服務器上添加腳本:
 
  mkdir /script
  vim /script/inotify.sh
  #/bin/bash
  UNISON=`ps -ef |grep -v grep|grep -c inotifywait`
  if [ ${UNISON} -lt 1 ]
  then
  ip2="192.168.1.6"
  src2="/var/www /"
  dst2="/var/www/ "
  /usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line
  do
  /usr/local/bin/unison -batch $src2 ssh://$ip2/$dst2
  echo -n "$line " >> /var/log/inotify/inotify$(date +%u).log
  echo ` date +%F %T " " -f1-4` >> /var/log/inotify/inotify$(date +%u).log
  done
  fi
  在二臺服務器上修改腳本權限:chmod a+x /script/inotify.sh,在計劃任務中添加任務,原本在/etc/rc.local下添加開機啟動的,但出問題,腳本并不執行,代碼如下:
 
  crontab –e
  #unison+inotify
  * * * * * /bin/sh /script/inotify.sh > /dev/null 2>&1 &
  重啟電腦,測試二臺服務器中/var/www的內容是否能同步,不重啟電腦,手動執行腳本也可以測試:
 
  sh /script/inotify
 
  在其中一臺/var/www目錄中添加,或修改,或刪除文件的時候,可以看到腳本狀態,同時另一臺服務器也應該會跟隨操作,如果有問題,請手動修改下腳本.
 
  在某些公司中,是禁止禁用root遠程登陸,只能使用普通用戶進行同步方案,等待同步目錄,二臺電腦不能使用一樣的待同步目錄名,否則報錯,代碼如下:
 
  192.168.1.6: /var/web1
  192.168.1.7: /var/web2
  安裝過程如上:
 
  useradd –g apache unison
  passwd unison
  --輸入新密碼:
  chown –R unison. /var/www
  mkdir /home/unison/.ssh
  chmod 700 /home/unison/.ssh
  su – unison
  ssh-keygen -t rsa
  然后連續三次回車,添加密鑰到授權密鑰文件中,在192.168.1.6服務器A上操作(2222是端口號,代碼如下:
 
  cd /home/unison/.ssh
  ssh "-p 2222" 192.168.1.6 cat /home/unison/.ssh/id_rsa.pub >> authorized_keys  #小寫p
  ssh "-p 2222" 192.168.1.7 cat /home/unison /.ssh/id_rsa.pub >> authorized_keys
  scp  -P 2222 authorized_keys 192.168.1.7:/home/unison/.ssh/  #大寫P
  chmod 600 /home/unison/.ssh/authorized_keys
  在192.168.1.7服務器B上操作:
 
  chmod 600/home/unison/.ssh/authorized_keys
 
  分別在兩臺機器上執行如下測試,第一次執行時,會要求輸入密碼,以后執行則不需要說明信任成功,代碼如下:
 
  ssh -p 2222 unison@192.168.1.6 date
  ssh -p 2222 unison@192.168.1.7 date
  su - root
  A腳本,代碼如下:
 
  #/bin/bash
  UNISON=`ps -ef |grep -v grep|grep -c inotifywait`
  if [ ${UNISON} -lt 1 ]
  then
  ip2="unison@192.168.1.7:2222"
  src2="/var/web1/"
  dst2="/var/web2/"
  /usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line
  do
  /usr/local/bin/unison -batch -sshargs "-i /home/unison/.ssh/id_rsa" $src2 ssh://$ip2  --phpfensi.com
  /$dst2
  echo -n "$line " >> /var/umelook-log/inotify/inotify$(date +%u).log
  echo ` date +%F %T` >> /var/umelook-log/inotify/inotify$(date +%u).log
  done
  fi
  B腳本,代碼如下:
 
  #/bin/bash
  UNISON=`ps -ef |grep -v grep|grep -c inotifywait`
  if [ ${UNISON} -lt 1 ]
  then
  ip2="unison@192.168.1.6:2222"
  src2="/var/web2/"
  dst2="/var/web1/"
  /usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line
  do
  /usr/local/bin/unison -batch -sshargs "-i /home/unison/.ssh/id_rsa" $src2 ssh://$ip2
  /$dst2
  echo -n "$line " >> /var/umelook-log/inotify/inotify$(date +%u).log
  echo ` date +%F %T` >> /var/umelook-log/inotify/inotify$(date +%u).log
  done
  fi  
  在此我自己常用字的同步備份并不是這個而一個單向備份的工具,是網絡比較常用的一個備份工具,在此我就不說了免得大家攻擊我呀。
 
 

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高阳县| 德州市| 巴青县| 龙江县| 乌拉特中旗| 开封市| 崇礼县| 苍梧县| 海原县| 徐汇区| 新密市| 合作市| 横山县| 定西市| 三台县| 郎溪县| 马鞍山市| 玉屏| 三台县| 彭阳县| 胶南市| 丰台区| 祥云县| 凤冈县| 沙洋县| 星座| 河北省| 阿鲁科尔沁旗| 肥西县| 闽侯县| 中卫市| 水富县| 日土县| 福安市| 厦门市| 潮州市| 玉田县| 玉屏| 改则县| 萝北县| 客服|