unison配置
在部署雙機熱備的情況下,要保證兩臺熱備機器上特定目錄的文件一致,需要使用文件夾雙向同步功能,unison和inotify配合使用,可以實現此效果。
操作系統 CentOS6.4 64位
兩臺機器地址分別為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
在執行make install的過程中,可能會出現以下錯誤提示:
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
出現錯誤的原因在與Unison默認是將文件Copy到/root/bin目錄,但Linux默認是沒有該目錄的,因此我們需要將生成的可執行文件unison復制到系統的PATH目錄。
cp unison /usr/local/bin
5、配置ssh key信任
建議通過普通用戶進行操作,理由是通過root操作本身就危險,免密碼登陸的root就更危險了。
在192.168.2.20上執行以下命令
[unison@localhost ~]$ ssh-keygen -t rsa
在提示保存私鑰(key)和公鑰(public key)的位置時,使用默認值;
在提示是否需要私鑰密碼(passphrase)時,直接敲回車,即不使用私鑰密碼。
之后,將生成一對密鑰,id_rsa(私鑰文件)和id_rsa.pub(公鑰文件),保存在/home/unison/.ssh/目錄下。
[unison@localhost ~]$ scp .ssh/id_rsa.pub unison@192.168.2.71:/home/unison/ 將公鑰拷貝到另外一臺機器上
然后在另外一臺192.168.2.71機器上執行以下命令
[unison@localhost ~]$ mv id_rsa.pub .ssh/authorized_keys
以root用戶重啟sshd
[root@localhost ~]# /etc/init.d/sshd restart
192.168.2.20上測試是否配置成功
[unison@localhost ~]$ ssh 192.168.2.71 date 如果不用輸入密碼直接登錄,就說明配置成功
用同樣的方式,在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 #一秒執行一次檢查
owner=true #保持同步過來的文件屬主
group=true #保持同步過來的文件組信息
注意,owner和group為true的情況下,非unison用戶創建的文件同步失敗,因為同步過了之后,執行chown會提示無權限
如果要保持屬主和組一致,就要用root賬戶來執行同步
7、設置成開機啟動
以root用戶將 su - unison -c unison 寫入rc.local
這時,通過repeat來重復檢查,如果目錄下文件太多的話,會導致unison資源占用太多,
設置repeat=0,使用inotify配合使用,可以在文件發生增刪改的情況下,啟動unison,執行一次同步
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、編寫inotify執行腳本
[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表示要監測create,delete,modify,move四類文件操作,可以根據需要配置監測的操作
注意,首先要將unison的配置文件里面的repeat設置為0或者注釋掉,這樣unison只執行一次就退出了。
10、將inotify腳本添加到開機啟動
nohup su - unison -c /home/unison/notify.sh &
總結
- 上一篇: 彻底删除的视频怎么恢复?找回丢失的视频有
- 下一篇: linux下的护眼软件