Kiến Thức Linux Linux Căn Bản

Làm thế nào để đồng bộ các thư mục bằng Lsyncd trên Ubuntu 20.04

Lsyncd

Lsyncd là một công cụ đơn giản và nhẹ cho phép bạn phản chiếu thư mục cục bộ của bạn đến 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 giám sát các thư mục cụ thể cho các thay đổi cứ vài giây và nếu có bất kỳ thay đổi nào thì chúng đồng bộ hóa với các máy chủ từ xa. Công cụ này rất hữu ích để đồng bộ dữ liệu từ một vùng an toàn đến một vùng không an toàn.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và sử dụng Lsyncd để đồng bộ hoá các thư mục cục bộ và các thư mục từ xa.

Điều kiện tiên quyết

  • Một máy chủ chạy Ubuntu 20.04.
  • Mật khẩu gốc được cài đặt trên máy chủ của bạn.

Bắt đầu

Trước khi bắt đầu, cập nhật gói của hệ thống của bạn lên phiên bản mới nhất là một ý tưởng hay. Bạn có thể cập nhật chúng bằng lệnh sau:

apt-get update -y
apt-get upgrade -y

Một khi các gói được cập nhật, 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ó chỉ 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 với lệnh sau:

lsyncd --version

Bạn nên có kết quả sau:

Version: 2.2.3

Cấu hình Lsyncd để đồng bộ hóa các thư mục cục bộ

Trong phần này, chúng ta sẽ cấu hình Lsyncd để đồng bộ/etc/directory  đến   /mnt/directory trên hệ thống cục bộ.
Đầu tiên, tạo một thư mục cho Lsyncd với lệnh sau:

mkdir /etc/lsyncd

Tiếp theo, tạo tập tin cấu hình Lsyncd mới và định nghĩa thư mục nguồn và đích mà bạn muốn đồng bộ hoá.

nano /etc/lsyncd/lsyncd.conf.lua

Thêm vào những điểm sau:

settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status",
   statusInterval = 20,
   nodaemon   = false
}

sync {
        default.rsync,
        source = "/etc/",
        target = "/mnt"
}

Hãy lưu và đóng lại hồ sơ khi làm xong.

systemctl start lsyncd
systemctl enable lsyncd

Bạn cũng có thể kiểm tra tình trạng của dịch vụ Lsyncd với lệnh sau đây:

systemctl status lsyncd

Bạn sẽ thấy kết quả sau đây:

? 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 tin Lsyncd log để biết thêm chi tiết như dưới đây:

tail -f /var/log/lsyncd/lsyncd.log

Bạn sẽ thấy kết quả sau đây:

/lsyncd/lsyncd.conf.lua
Fri May  1 03:30:57 2020 Normal: Finished a list after exitcode: 0
Fri May  1 03:31:20 2020 Normal: --- Startup, daemonizing ---
Fri May  1 03:31:20 2020 Normal: recursive startup rsync: /etc/ -> /mnt/
Fri May  1 03:31:20 2020 Normal: Startup of /etc/ -> /mnt/ finished.

Bạn cũng có thể kiểm tra tình trạng đồng bộ với mệnh lệnh sau:

tail -f /var/log/lsyncd/lsyncd.status

Các bạn có thể thấy các thay đổi trong thư mục MNT với các lệnh sau:

ls /mnt/

Bạn sẽ thấy rằng tất cả các tập tin và thư mục từ thư mục /etc được thêm vào thư mục /mnt:

acpi                    dconf           hosts            logrotate.conf       newt                     rc2.d          subuid-
adduser.conf            debconf.conf    hosts.allow      logrotate.d          nginx                    rc3.d          sudoers
alternatives            debian_version  hosts.deny       lsb-release          nsswitch.conf            rc4.d          sudoers.d
apache2                 default         init             lsyncd               ntp.conf                 rc5.d          sysctl.conf
apparmor                deluser.conf    init.d           ltrace.conf          openal                  rc6.d          sysctl.d

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ộ/etc/thư mục trên hệ thống cục bộ với/opt/thư mục 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 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 đây để tạo khoá công cộng và khoá riêng:

ssh-keygen -t rsa

Bạn sẽ thấy kết quả sau đây:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:c7fhjjhAamFjlk6OkKPhsphMnTZQFutWbr5FnQKSJjE root@ubuntu20
The key's randomart image is:
+---[RSA 3072]----+
| E ..            |
|  ooo            |
| oo= +           |
|=.+ % o . .      |
|[email protected] oSo. o    |
|ooo=B o .o o o   |
|=o.... o    o    |
|+.    o .. o     |
|     .  ... .    |
+----[SHA256]-----+

Lệnh trên sẽ tạo ra khóa private và public trong ~/.ssh.
Tiếp theo, bạn sẽ cần phải chép khoá công khai vào máy chủ từ xa. Bạn có thể sao chép mệnh lệnh sau đây:

ssh-copy-id root@remote-server-ip

Bạn sẽ được yêu cầu cung cấp mật khẩu của người dùng root từ xa như sau:

[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Một khi người dùng đã được xác nhận, khóa công khai sẽ được gắn vào tập tin authorized_keys  và kết nối từ xa của người dùng sẽ được đóng lại.

Bây giờ, anh có thể đăng nhập vào máy chủ từ xa mà không cần nhập mật khẩu.

Để kiểm tra nó chỉ cần cố gắng đăng nhập vào máy chủ từ xa thông qua SSH:

ssh root@remote-server-ip

Nếu mọi việc suôn sẻ, bạn sẽ được đăng nhập ngay lập tức.

Tiếp theo, các bạn sẽ cần chỉnh sửa tập tin cấu hình Lsyncd và xác định các biến rsyncssh và máy chủ đích:

nano /etc/lsyncd/lsyncd.conf.lua

Thay đổi tập tin như sau:

settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status",
   statusInterval = 20,
   nodaemon   = false
}

sync {
        default.rsyncssh,
        source = "/etc/",
	host = "remote-server-ip",
        targetdir = "/opt"
}

Hãy lưu và đóng lại hồ sơ khi làm xong. Sau đó khởi động lại dịch vụ Lsyncd để bắt đầu đồng bộ.

systemctl restart lsyncd

Bạn có thể kiểm tra trạng thái đồng bộ hoá với mệnh lệnh sau:

tail -f /var/log/lsyncd/lsyncd.log

Bạn sẽ thấy kết quả sau đây:

Fri May  1 04:32:05 2020 Normal: --- Startup, daemonizing ---
Fri May  1 04:32:05 2020 Normal: recursive startup rsync: /etc/ -> 45.58.38.21:/opt/
Fri May  1 04:32:06 2020 Normal: Startup of "/etc/" finished: 0

Bạn có thể xem các thay đổi trong thư mục/opt trên máy chủ từ xa với lệnh sau:

ls /opt

Bạn sẽ thấy rằng tất cả các tập tin và thư mục từ thư mục /etc được thêm vào thư mục của máy chủ/OPT từ xa:

acpi                    dconf           hosts            logrotate.conf       newt                     rc2.d          subuid-
adduser.conf            debconf.conf    hosts.allow      logrotate.d          nginx                    rc3.d          sudoers
alternatives            debian_version  hosts.deny       lsb-release          nsswitch.conf            rc4.d          sudoers.d
apache2                 default         init             lsyncd               ntp.conf                 rc5.d          sysctl.conf
apparmor                deluser.conf    init.d           ltrace.conf          openal                   rc6.d          sysctl.d

Kết luận

Trong hướng dẫn trên, chúng tôi đã học được cách cài đặt và định hình Lsyncd cho đồng bộ hóa cục bộ và đồng bộ hóa từ xa. Bây giờ bạn có thể sử dụng Lsyncd trong môi trường sản xuất cho các mục đích dự phòng. Cứ tự nhiên hỏi tôi nếu anh có thắc mắc gì.

Đăng ký liền tay Nhận Ngay Bài Mới

Subscribe ngay

Cám ơn bạn đã đăng ký !

Lỗi đăng ký !

Tags

Add Comment

Click here to post a comment

Đăng ký liền tay
Nhận Ngay Bài Mới

Subscribe ngay

Cám ơn bạn đã đăng ký !

Lỗi đăng ký !