Lsyncd là một công cụ đơn giản và gọn nhẹ cho phép bạn sao chép thư mục cục bộ của mình sang một thư mục khác trên máy chủ từ xa. Nó hoạt động bằng cách liên tục theo dõi thư mục đã chỉ định để biết các thay đổi cứ sau vài giây và nếu có bất kỳ thay đổi nào được thực hiện thì chúng sẽ được đồng bộ hóa với máy chủ từ xa. Công cụ này rất hữu ích để đồng bộ dữ liệu từ khu vực an toàn sang khu vực không an toàn.
Bắt đầu
Trước khi bắt đầu, bạn nên cập nhật gói hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật chúng bằng lệnh sau:
apt-get update
apt-get upgrade -y
Khi tất cả các gói được cập nhật, hãy khởi động lại hệ thống của bạn để áp dụng các thay đổi.
Cài đặt Lsyncd
Theo mặc định, gói Lsyncd có sẵn trong hầu hết các hệ điều hành Linux. Bạn có thể cài đặt nó bằng cách chạy lệnh sau:
apt-get install lsyncd -y
Khi Lsyncd được cài đặt, bạn có thể xác minh phiên bản Lsyncd đã cài đặt bằng lệnh sau:
lsyncd --version
Bạn sẽ nhận được đầu ra sau: Version: 2.2.3
Định cấu hình Lsyncd để đồng bộ hóa thư mục cục bộ
Trong phần này, chúng tôi sẽ định cấu hình Lsyncd để đồng bộ hóa thư mục /etc/ với thư mục /mnt/ trên hệ thống cục bộ.
Đầu tiên, tạo một thư mục cho Lsyncd bằng lệnh sau:
mkdir /etc/lsyncd
Tiếp theo, tạo một tệp cấu hình Lsyncd mới và xác định thư mục nguồn và đích mà bạn muốn đồng bộ hóa.
nano /etc/lsyncd/lsyncd.conf.lua
Thêm các dòng sau:
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
statusInterval = 20,
nodaemon = false
}
sync {
default.rsync,
source = "/etc/", // Nguồn
target = "/mnt" } // Đích
Lưu và đóng tệp khi bạn hoàn tất.
systemctl start lsyncd
systemctl enable lsyncd
Bạn cũng có thể kiểm tra trạng thái của dịch vụ Lsyncd bằng lệnh sau:
systemctl status lsyncd
Bạn sẽ thấy đầu ra sau:
? lsyncd.service - LSB: lsyncd daemon init script
Loaded: loaded (/etc/init.d/lsyncd; generated)
Active: active (running) since Fri 2020-05-01 03:31:20 UTC; 9s ago
Docs: man:systemd-sysv-generator(8)
Process: 36946 ExecStart=/etc/init.d/lsyncd start (code=exited, status=0/SUCCESS)
Tasks: 2 (limit: 4620)
Memory: 12.5M
CGroup: /system.slice/lsyncd.service
??36921 /usr/bin/lsyncd -pidfile /var/run/lsyncd.pid /etc/lsyncd/lsyncd.conf.lua
??36952 /usr/bin/lsyncd -pidfile /var/run/lsyncd.pid /etc/lsyncd/lsyncd.conf.lua
May 01 03:31:20 ubuntu20 systemd[1]: lsyncd.service: Succeeded.
May 01 03:31:20 ubuntu20 systemd[1]: Stopped LSB: lsyncd daemon init script.
May 01 03:31:20 ubuntu20 systemd[1]: Starting LSB: lsyncd daemon init script...
May 01 03:31:20 ubuntu20 lsyncd[36946]: * Starting synchronization daemon lsyncd
May 01 03:31:20 ubuntu20 lsyncd[36951]: 03:31:20 Normal: --- Startup, daemonizing ---
May 01 03:31:20 ubuntu20 lsyncd[36946]: ...done.
May 01 03:31:20 ubuntu20 systemd[1]: Started LSB: lsyncd daemon init script.
Bạn có thể kiểm tra tệp nhật ký Lsyncd để biết thêm chi tiết như hình bên dưới:
tail -f /var/log/lsyncd/lsyncd.log
Định cấu hình Lsyncd để đồng bộ hóa các thư mục từ xa
Trong phần này, chúng ta sẽ cấu hình Lsyncd để đồng bộ hóa thư mục /etc/ trên hệ thống cục bộ với thư mục /opt/ trên hệ thống từ xa.
Trước khi bắt đầu, bạn cần thiết lập xác thực dựa trên khóa SSH giữa hệ thống cục bộ và máy chủ từ xa để hệ thống cục bộ có thể kết nối với máy chủ từ xa mà không cần mật khẩu.
Trên hệ thống cục bộ, hãy chạy lệnh sau để tạo khóa chung và khóa riêng:
ssh-keygen -t rsa
Lệnh trên sẽ tạo khóa riêng và khóa chung bên trong thư mục ~/.ssh.
Tiếp theo, bạn sẽ cần sao chép khóa chung vào máy chủ từ xa.
Tiếp theo, bạn sẽ cần chỉnh sửa tệp cấu hình Lsyncd và xác định rsyncssh và các biến máy chủ đích:
nano /etc/lsyncd/lsyncd.conf.lua
Thay đổi tệp như hình dưới đây:
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
//Nhiều đích
targets = {
'[email protected]:/data/',
'[email protected]:/storage/data_core/',
}
for _, target in ipairs( targets )
do
sync {
default.rsync,
source = "/data/", //Nguồn
target = target,
exclude ={'*.log','*/cached/*','*/cache/*','*.nosync'},
delay = 0,
rsync = {
compress = true,
acls = true,
verbose = true,
owner = true,
perms = true,
group = true,
rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
}
}
end
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, khởi động lại dịch vụ Lsyncd để bắt đầu đồng bộ hóa.
systemctl restart lsyncd