Cách đồng bộ các thư mục cục bộ và từ xa trên VPS với lsyncd
Lsyncd là gì?
Khi quản lý một web server hoặc một ứng dụng, có nhiều tình huống yêu cầu đồng bộ hóa giữa các folder . Trong khi một số công cụ có thể giúp bạn thực hiện điều này, lsyncd là một thành phần sáng giá.
Bài viết này sẽ thảo luận về cách cấu hình lsyncd để phản chiếu các thay đổi giữa các folder trên một máy duy nhất và cách phản chiếu giữa các server từ xa.
Đối với hướng dẫn này, ta sẽ sử dụng VPS Ubuntu 12.04, nhưng bất kỳ bản phân phối hiện đại nào cũng phải hoạt động theo cách tương tự.
Cách cài đặt lsyncd
May mắn là Ubuntu bao gồm lsyncd trong repository lưu trữ mặc định của nó.
Ta có thể cài đặt lsyncd bằng các lệnh sau:
sudo apt-get update sudo apt-get install lsyncd
Thao tác này sẽ cài đặt lsync, nhưng nó sẽ không cung cấp cho bạn cấu hình mặc định. Ta sẽ tạo một cái sau trong bài viết.
Cách tìm ví dụ cấu hình lsyncd
Mặc dù lsyncd không cung cấp file cấu hình theo mặc định, nhưng nó bao gồm một số ví dụ mà ta có thể xem xét để lấy ý tưởng.
Xem các ví dụ bằng cách kiểm tra các file trong folder "/ usr / share / doc / lsyncd /amples":
cd /usr/share/doc/lsyncd/examples ls
lbash.lua lgforce.lua lpostcmd.lua lrsyncssh.lua lecho.lua limagemagic.lua lrsync.lua
Bạn có thể nhìn vào các file văn bản này để biết những gì có thể được thực hiện với cấu hình.
Ta có thể kiểm tra một trong những cấu hình cơ bản hơn bằng cách mở file "lrsync.lua":
sudo nano
---- -- User configuration file for lsyncd. -- -- Simple example for default rsync. -- settings = { statusFile = "/tmp/lsyncd.stat", statusIntervall = 1, } sync{ default.rsync, source="src", target="trg", }
Các dòng bắt đầu bằng hai dấu gạch ngang (-) là comment . Chúng không được giải thích bởi lsyncd.
Tệp cấu hình lsync được viết bằng ngôn ngữ lập trình Lua. Bạn có thể tìm hiểu thêm về Lua tại đây.
Cài đặt môi trường
Ta sẽ đồng bộ hai folder local trong ví dụ đầu tiên của ta . Hãy tạo chúng bằng các lệnh sau:
sudo mkdir -p /source/to/copy sudo mkdir /dest
Sau đó, ta sẽ thêm một số file vào folder đầu tiên để ta có thể kiểm tra xem đồng bộ hóa có hoạt động chính xác hay không:
cd /source/to/copy sudo touch file{1..100}
Các lệnh trên tạo 100 file trong folder "/ source / to / copy".
Ngoài ra, ta có thể tạo folder log và một số file để lsyncd sử dụng:
sudo mkdir /var/log/lsyncd touch /var/log/lsyncd/lsyncd.{log,status}
Tiếp theo, ta có thể tạo folder cấu hình lsyncd:
sudo mkdir /etc/lsyncd
Ta sẽ tạo một file cấu hình bên trong folder này có tên "lsyncd.conf.lua", với nano:
sudo nano /etc/lsyncd/lsyncd.conf.lua
Cách đồng bộ hóa hai folder local với lsyncd
Tệp cấu hình ta đang thực hiện sẽ đồng bộ folder "/ source / to / copy" vào folder "/ dest".
Cấu hình Phần chung
Các cài đặt chung đều được cấu hình trong một phần gọi là "cài đặt". Phần của ta sẽ chứa một số cài đặt cơ bản:
settings = { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status" }
Các tùy chọn này yêu cầu lsyncd sử dụng các file mà ta đã tạo trước đó.
Cấu hình Phần đồng bộ hóa
Phần tiếp theo chỉ định cách bạn muốn các hoạt động đồng bộ hóa được thực hiện. Vì đây là chuyển khoản local , ta sẽ sử dụng rsync thông thường để hoàn tất quá trình chuyển.
Cấu hình này được xác định bởi tùy chọn " default.rsync ". Cấu hình này nghĩa là lsyncd sẽ đợi 20 giây hoặc thu thập 1000 sự kiện đồng bộ hóa riêng biệt và sau đó gọi rsync với những thay đổi cần thiết.
Theo hướng dẫn sử dụng lsyncd, version rsync được gọi tương đương với lệnh:
rsync -ltsd --delete --include-from=- --exclude=* SOURCE TARGET
Điều này nghĩa là rsync hoạt động theo cách sau:
- -l : sao chép các softlink
- -t : thời gian sửa đổi bản sao
- -s : không phân tách khoảng trắng; chỉ ký tự đại diện
- -d : chuyển folder mà không cần đệ quy
Điều duy nhất ta cần làm để thực hiện những thay đổi này là chỉ định kiểu đồng bộ hóa và các folder nguồn và đích. Phần đồng bộ hóa sẽ giống như sau:
sync { default.rsync, source = "/source/to/copy", target = "/dest" }
Nếu bạn muốn thêm tùy chọn vào rsync để sửa đổi hành vi của nó, bạn có thể thực hiện bằng cách chuyển biến "rsyncOpts" một mảng chứa các chuỗi được phân tách bằng dấu phẩy, mỗi chuỗi đại diện cho một tùy chọn rsync:
sync { default.rsync, source = "/source/to/copy", target = "/dest", rsyncOpts = {"rsync option1", "rsync option2", "rsync option3"} }
Bây giờ ta có đủ cấu hình để kiểm tra cài đặt của bạn . Lưu và đóng file .
Thử nghiệm đồng bộ hóa local
Hãy đi đến folder đích và xác minh không có file nào trong folder "/ dest" tại thời điểm này:
cd /dest ls
Lệnh cuối cùng sẽ không trả về kết quả vì folder "/ dest" sẽ trống.
Ta có thể bắt đầu dịch vụ lsyncd bằng cách sử dụng lệnh sau:
sudo service lsyncd start
Kiểm tra lại folder bằng ls:
ls
file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99
Ta có thể thấy rằng tất cả các file được đồng bộ hóa ngay lập tức.
Nếu ta thêm một số file vào folder nguồn, ta sẽ gặp phải độ trễ 20 giây mà ta đã đề cập khi thảo luận về "default.rsync":
sudo mkdir /source/to/copy/hello{1..100} ls
Ban đầu, ta sẽ không thấy file , nhưng sau khi hết thời gian chờ, rsync sẽ đồng bộ hóa các file . Kiểm tra lại bằng cách chạy lại lệnh "ls".
Cách cấu hình đồng bộ hóa từ xa với lsyncd
Với một vài thay đổi đối với file cấu hình của ta , ta có thể cấu hình đồng bộ hóa từ xa.
Trước tiên, ta cần có thể đăng nhập vào máy nhân bản từ máy root thông qua ssh không cần password .
Cách đăng nhập vào máy từ xa bằng phím SSH
Nếu bạn chưa làm như vậy, hãy tạo khóa ssh trên máy của bạn với lsyncd theo hướng dẫn này.
Tạo một cặp khóa cho user root của bạn, vì dịch vụ lsyncd sẽ chạy dưới dạng root. Sau đó, bạn có thể sao chép file khóa vào máy nhân bản từ xa bằng các lệnh sau:
sudo su
ssh-copy-id remote_mirror_ip_address
Tệp khóa của bạn bây giờ sẽ cho phép bạn đăng nhập vào server phản chiếu từ xa với quyền là user root .
Hãy thử ngay bây giờ để kiểm tra xem nó có hoạt động hay không và tạo folder đích trên server từ xa:
ssh remote_mirror_ip_address
Ta sẽ tạo một folder có tên "/ remotesync" để hoạt động như folder đích của ta :
mkdir /remotesync
Thoát khỏi phiên từ xa và phiên root local bằng lệnh "thoát" hai lần:
exit exit
Cách cấu hình lsyncd để phản chiếu từ xa
Ta có thể mở lại file cấu hình lsyncd bằng lệnh sau:
sudo nano /etc/lsyncd/lsyncd.conf.lua
settings = { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status" } sync { default.rsync, source = "/source/to/copy", target = "/dest" }
Ta sẽ chỉ cần áp dụng các thay đổi trong phần "đồng bộ hóa".
Ta sẽ thay đổi "default.rsync" thành "default.rsyncssh" để bật rsync qua ssh và ta sẽ thay thế biến "target" bằng các biến "host" và "targetdir":
settings = {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
default.rsyncssh,
source = "/source/to/copy",
host = "remote_mirror_ip_address",
targetdir = "/remotesync"
}
Lưu file và thoát.
Thử nghiệm đồng bộ hóa từ xa
Bây giờ ta có thể khởi động lại dịch vụ lsyncd bằng cách đưa ra lệnh sau:
sudo service lsyncd restart
Nếu ta truy cập vào máy nhân bản từ xa của bạn , ta sẽ có thể thấy những thay đổi trong folder "/ remotesync" từ xa:
sudo su
ssh remote_mirror_ip_address
ls /remotesync
Bạn sẽ thấy tất cả các file mà ta đã thêm vào folder "/ source / to / copy" local .
Tiến xa hơn
Dịch vụ lsyncd là một cách tốt để đồng bộ hóa các file giữa các folder hoặc hệ thống. Do các file cấu hình dựa trên Lua, nó có thể rất mạnh mẽ và linh hoạt. Tài liệu Lua (được liên kết trước đó) và tài liệu lsync là những tài nguyên tuyệt vời cho phép bạn phát triển các hoạt động đồng bộ phức tạp hơn.
Hãy xem một số ví dụ khác trong folder "/ usr / share / doc / lsyncd /amples" để có thêm ý tưởng.
Các tin liên quan