Sync file, thư mục bằng Lsyncd trên Ubuntu

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

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *