unison配置
在部署雙機(jī)熱備的情況下,要保證兩臺(tái)熱備機(jī)器上特定目錄的文件一致,需要使用文件夾雙向同步功能,unison和inotify配合使用,可以實(shí)現(xiàn)此效果。
操作系統(tǒng) CentOS6.4 64位
兩臺(tái)機(jī)器地址分別為192.168.2.20 和 192.168.2.71
1、下載unison安裝包
http://www.seas.upenn.edu/~bcpierce/unison//download.html
2、下載unison編譯器
http://caml.inria.fr/pub/distrib/ocaml-4.02/
3、安裝編譯器
./configure
make world opt
make install
4、安裝unison
make UISTYLE=text
make install
在執(zhí)行make install的過(guò)程中,可能會(huì)出現(xiàn)以下錯(cuò)誤提示:
mv: cannot stat ‘/root/bin//unison’: No such file or directory
make: [doinstall] Error 1 (ignored)
cp unison /root/bin/
cp: cannot create regular file ‘/root/bin/’: Is a directory
make: * [doinstall] Error 1
出現(xiàn)錯(cuò)誤的原因在與Unison默認(rèn)是將文件Copy到/root/bin目錄,但Linux默認(rèn)是沒(méi)有該目錄的,因此我們需要將生成的可執(zhí)行文件unison復(fù)制到系統(tǒng)的PATH目錄。
cp unison /usr/local/bin
5、配置ssh key信任
建議通過(guò)普通用戶(hù)進(jìn)行操作,理由是通過(guò)root操作本身就危險(xiǎn),免密碼登陸的root就更危險(xiǎn)了。
在192.168.2.20上執(zhí)行以下命令
[unison@localhost ~]$ ssh-keygen -t rsa
在提示保存私鑰(key)和公鑰(public key)的位置時(shí),使用默認(rèn)值;
在提示是否需要私鑰密碼(passphrase)時(shí),直接敲回車(chē),即不使用私鑰密碼。
之后,將生成一對(duì)密鑰,id_rsa(私鑰文件)和id_rsa.pub(公鑰文件),保存在/home/unison/.ssh/目錄下。
[unison@localhost ~]$ scp .ssh/id_rsa.pub unison@192.168.2.71:/home/unison/ 將公鑰拷貝到另外一臺(tái)機(jī)器上
然后在另外一臺(tái)192.168.2.71機(jī)器上執(zhí)行以下命令
[unison@localhost ~]$ mv id_rsa.pub .ssh/authorized_keys
以root用戶(hù)重啟sshd
[root@localhost ~]# /etc/init.d/sshd restart
192.168.2.20上測(cè)試是否配置成功
[unison@localhost ~]$ ssh 192.168.2.71 date 如果不用輸入密碼直接登錄,就說(shuō)明配置成功
用同樣的方式,在192.168.2.71上完成配置
6、修改unison配置
[unison@localhost ~]$ vi .unison/default.prf
Unison preferences file
#
#
root=/home/unison/test
root=ssh://unison@192.168.2.71//home/unison/test
batch=true
fastcheck=true
logfile=/home/unison/.unison/unison.log
repeat=1 #一秒執(zhí)行一次檢查
owner=true #保持同步過(guò)來(lái)的文件屬主
group=true #保持同步過(guò)來(lái)的文件組信息
注意,owner和group為true的情況下,非unison用戶(hù)創(chuàng)建的文件同步失敗,因?yàn)橥竭^(guò)了之后,執(zhí)行chown會(huì)提示無(wú)權(quán)限
如果要保持屬主和組一致,就要用root賬戶(hù)來(lái)執(zhí)行同步
7、設(shè)置成開(kāi)機(jī)啟動(dòng)
以root用戶(hù)將 su - unison -c unison 寫(xiě)入rc.local
這時(shí),通過(guò)repeat來(lái)重復(fù)檢查,如果目錄下文件太多的話(huà),會(huì)導(dǎo)致unison資源占用太多,
設(shè)置repeat=0,使用inotify配合使用,可以在文件發(fā)生增刪改的情況下,啟動(dòng)unison,執(zhí)行一次同步
8、inotify安裝
下載源碼 https://sourceforge.net/projects/inotify-tools/files/inotify-tools/
[root@localhost unison]# tar xfv inotify-tools-3.13.tar.gz
[root@localhost inotify-tools-3.13]# ./configure
[root@localhost inotify-tools-3.13]# make
[root@localhost inotify-tools-3.13]# make install
9、編寫(xiě)inotify執(zhí)行腳本
[root@localhost unison]# vi notify.sh
LOG=/home/unison/inotify.log
inotifywait -mrq -e create,delete,modify,move /home/unison/test | while read line; do
unison
echo -n “line">>LOG
echo date | cut -d " " -f1-4 >> $LOG
done
此處inotifywait -mrq -e create,delete,modify,move表示要監(jiān)測(cè)create,delete,modify,move四類(lèi)文件操作,可以根據(jù)需要配置監(jiān)測(cè)的操作
注意,首先要將unison的配置文件里面的repeat設(shè)置為0或者注釋掉,這樣unison只執(zhí)行一次就退出了。
10、將inotify腳本添加到開(kāi)機(jī)啟動(dòng)
nohup su - unison -c /home/unison/notify.sh &
總結(jié)
- 上一篇: 彻底删除的视频怎么恢复?找回丢失的视频有
- 下一篇: PCL学习(四)点云转换为网格