Unison là một công cụ đồng bộ hóa tập tin tương tự như Rsync, nhưng sự khác biệt lớn là nó đồng bộ hóa thay theo kiểu Master-Master, nghĩa là: các tập tin thay đổi trên server1 thì server2 sẽ thay đổi theo và ngược lại .
Chuẩn bị :
2 server chạy ubuntu server 11.10 với hostname và IP từng Server như sau :
Kgp-A.vn 200.200.200.134
Kgp-B.vn 200.200.200.135
Và tôi muốn đồng bộ thư mục chứa dữ liệu cần đồng bộ là /kenhgiaiphap ở 2 server ( tạo thư mục này bên 2 server ) .
Thực Hiện :
Install Unison và SSH cho 2 server
# apt-get install unison openssh-server ssh
Tạo private/public key trên server kgp-A.vn
# ssh-keygen -t dsa
Sau đó copy public key của server kgp-A.vn đến server kgp-B.vn
# ssh-copy-id -i $HOME/.ssh/id_dsa.pub root@200.200.200.135
Qua server kgp-B.vn kiểm tar xem public key của server kgp-A.vn chuyển qua chưa
# cat $HOME/.ssh/authorized_keys
Chạy Unison
Chạy Unison lần đầu tiên để đồng bộ thư mục /kenhgiaiphap của 2 server .
Bên gkp-A.vn chạy lệnh sau:
(Trước khi chạy ta tạo vài file hay thư mục nào đó trong thư mục /kenhgiaiphap bên 2 server để test thử )
# unison /kenhgiaiphap/ ssh://200.200.200.135//kenhgiaiphap
Qua 2 Server ta thấy dữ liệu đã đồng bộ .
Tạo 1 Script tự động trả lời các thông số ,các câu hỏi lúc ta chạy lệnh để đồng bộ
( Thực hiện bên server kgp-A.vn )
# vi /root/.unison/default.prf
root = /kenhgiaiphap
root = ssh://200.200.200.135//kenhgiaiphap
auto=true
batch=true
Với mục đích là đồng bộ thư mục trên 2 server cơ bản thì với các thông số trong file/root/.unison/default.prf như trên là đủ .
Nếu muốn thêm các option khác thì các bạn tìm hiểu thêm qua lệnh : man unison
Đến đây thì chúng ta có thể chạy Script trên bằng lệnh unison ko cần thông số gì hết để test thử .
Và tạo Crontab cho hệ thống tự đồng bộ theo thời gian mỗi 5 phút .
# crontab –e
*/5 * * * * /usr/bin/unison &> /dev/null
Phan Trọng Hiếu ( Theo Howtoforge )