Sao lưu dữ liệu với Borg Pull Docker

Trong bài trước mình có hướng dẫn cách sử dụng Borg Backup để sao lưu dữ liệu ở chế độ Push Mode, tức là dữ liệu sẽ được “đẩy” từ máy chủ chứa dữ liệu về máy chủ chứa bản sao lưu. Đây cũng là cách được khuyến cáo sử dụng vì đảm bảo được tính bảo mật cho máy chủ chứa dữ liệu vì không có kết nối trực tiếp nào từ bên ngoài đến nó. Tuy nhiên cách này chỉ phù hợp với những ai có một máy chủ sao lưu riêng biệt, có 1 IP tĩnh (hoặc sử dụng dịch vụ DDNS cho IP động) và quan trọng nhất là có thể mở port (cổng) để nhận kết nối từ bên ngoài.

Tuy nhiên, đối với những người sử dụng máy tính cá nhân để sao lưu dữ liệu từ máy chủ web (hay máy chủ chứa dữ liệu cần sao lưu) thì việc mở cổng hay cấu hình DDNS khá là phức tạp, chưa kể nó còn mang lại nhiều rủi ro về mặt bảo mật cho máy tính.

Để giải quyết vấn đề này, Borg cung cấp thêm chế độ Pull Mode, cho phép máy tính có thể “kéo” dữ liệu từ máy chủ chứa dữ liệu về. Ngược lại với chế độ Push Mode, ở chế độ Pull Mode máy tính sẽ kết nối đến máy chủ thông qua giao thức SSH để sao lưu dữ liệu. Do đây là máy tính cá nhân nên việc cho phép nó kết nối đến máy chủ chứa dữ liệu là khá an toàn. Nhược điểm duy nhất với chế độ Pull Mode chính là tôc độ sao lưu sẽ khá là chậm so với sử dụng Borg Backup ở chế độ Push Mode.

Sau đây mình sẽ hướng dẫn cách sử dụng Borg Pull Docker để sao lưu dữ liệu.

1. Yêu cầu tiên quyết

2. Tạo SSH Key cho máy chủ chứa dữ liệu

Để máy tính có thể truy cập máy chủ chứa dữ liệu mà không cần sử dụng mật khẩu, mình phải tạo các khoá SSH trên máy chủ bằng lệnh sau:

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Sao chép SSH private key về máy tính

cat ~/.ssh/id_rsa

Sao chép nội dung được xuất ra màn hình và lưu lại thành 1 file trên máy tính

3. Cài đặt Borg Pull Docker trên máy tính

git clone https://github.com/workleast/borgpull-docker.git

cd borgpull-docker

4. Cấu hình Borg Pull Docker

Đây là các thiết lập cần thiết để Borg Pull Docker có thể chạy.

4.1 Cấu hình file docker-compose.yml

File này dùng để khai báo các kết nối và thư mục sao lưu trên máy chủ chứa dữ liệu.

nano docker-compose.yml
services:
  borgpull:
    build:
      context: .
    restart: always
    image: workleast/borgpull
    container_name: borgpull
    volumes:
      - path/to/repository:/backups # replace with your actual path to repository directory here
      - ./config/ssh/id_rsa:/root/.ssh/id_rsa # replace with your SSH private key file
      - ./config/crontab.txt:/etc/crontabs/root # edit crontab.txt file to schedule automatic backups
    environment:
      TZ: "Asia/Ho_Chi_Minh"
      BACKUP_ADDR: "user@server_ip" # replace with your actual backup server's address here
      ARCHIVE_NAME: "archive-{now:%Y-%m-%dT%H:%M:%S}"
      TARGET_DIR: "/" # replace with your target directory (to be backed up) in the backup server
    cap_add:
      - SYS_ADMIN
    devices:
      - /dev/fuse
    security_opt:
      - apparmor:unconfined

path/to/repository: đường dẫn đến thư mục chứa các bản sao lưu. Ví dụ: ~/backups

BACKUP_ADDR: địa chỉ kết nối đến máy chủ chứa dữ liệu. Ví dụ: [email protected]

ARCHIVE_NAME: định dạng tên các bản sao lưu. Ví dụ: workleast-{now:%Y-%m-%dT%H:%M:%S}

TARGET_DIR: đường dẫn đến thư mục chứa dữ liệu cần sao lưu trên máy chủ. Ví dụ: /root

4.2 Cấu hình file config/ssh/id_rsa

File này chứa khoá riêng tư (private key) của SSH trên máy chủ

nano config/ssh/id_rsa

Tiến hành sao chép nội dung trong file id_rsa ở bước 2 vào đây

4.3 Cấu hình file config/crontab.txt

File này cho phép cầu hình thời gian tự động sao lưu dữ liệu.

nano config/ssh/crontab.txt
# at 13:30 everyday
0 30 13 * * * /usr/local/bin/borgpull create >> /var/log/borgpull

Thay đổi thời gian tự động sao lưu với định dạng “ss mm hh”. Ví dụ muốn tự động thực hiện sao lưu vào lúc 12 giờ 00 phút hằng ngày thì nhập vào “0 0 12”

5. Sử dụng Borgpull Docker

Đầu tiên, tiến hành chạy Borgpull Docker bằng lệnh

docker compose up -d

5.1 Khỏi tạo thư mục Borg repo (chỉ cần chạy trong lần đầu tiên)

docker exec -it borgpull borgpull init

5.2 Tạo một bản sao lưu

docker exec -it borgpull borgpull create

5.3 Xem danh sách các bản sao lưu

docker exec -it borgpull borgpull list

5.4 Xoá một bản sao lưu

docker exec -it borgpull borgpull delete <TEN_BAN_SAO_LUU>

5.5 Khôi phục một bản sao lưu lên máy chủ

docker exec -it borgpull borgpull restore <TEN_BAN_SAO_LUU>

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *