Kinh nghiệm cho thấy rằng bạn không bao giờ được quá hoang tưởng về việc sao lưu hệ thống. Khi nói đến việc bảo vệ và lưu giữ dữ liệu quý giá, tốt nhất là bạn nên đi xa hơn và đảm bảo rằng bạn có thể phụ thuộc vào các bản sao lưu của mình nếu có nhu cầu.

Thậm chí ngày nay, khi một số nhà cung cấp dịch vụ lưu trữ và đám mây cung cấp sao lưu tự động cho VPS với chi phí tương đối thấp, bạn sẽ làm tốt việc tạo chiến lược sao lưu của riêng mình bằng cách sử dụng các công cụ của riêng bạn để tiết kiệm một số tiền và sau đó có thể sử dụng nó để mua thêm dung lượng hoặc có được một VPS lớn hơn.

Nghe có vẻ thú vị? Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách sử dụng một công cụ có tên là Dupisting để sao lưu và mã hóa các tệp và thư mục. Ngoài ra, việc sử dụng các bản sao lưu tăng dần cho tác vụ này sẽ giúp chúng ta tiết kiệm dung lượng.

Cài đặt công cụ sao lưu trùng lặp trong Linux

Để cài đặt tính năng trùng lặp trong các bản phân phối dựa trên RHEL, trước tiên bạn sẽ phải bật kho lưu trữ EPEL (bạn có thể bỏ qua bước này nếu bạn đang sử dụng Fedoraself):

# yum update 
# yum install epel-release
OR
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Sau đó chạy,

# yum install duplicity

Đối với Debian và các dẫn xuất:

$ sudo apt update 
$ sudo apt install duplicity

Về lý thuyết, nhiều phương pháp để kết nối với máy chủ tệp được hỗ trợ mặc dù chỉ có ssh / scp / sftp, truy cập tệp cục bộ, rsync, ftp, HSI, WebDAV và Amazon S3 đã được thử nghiệm trên thực tế cho đến nay.

Khi quá trình cài đặt hoàn tất, chúng tôi sẽ độc quyền sử dụng sftp trong các tình huống khác nhau, cả để sao lưu và khôi phục dữ liệu.

Môi trường thử nghiệm của chúng tôi bao gồm RHEL 8 (được sao lưu) và máy Debian 11 (máy chủ dự phòng).

Tạo khóa SSH để đăng nhập không cần mật khẩu vào máy chủ từ xa

Hãy bắt đầu bằng cách tạo các khóa SSH trong hộp RHEL và chuyển chúng sang máy chủ sao lưu Debian.

Nếu bạn đang chạy SSH trên một cổng khác, thì lệnh dưới đây giả sử daemon sshd đang nghe trên cổng XXXXX trong máy chủ Debian. Thay thế AAA.BBB.CCC.DDD IP thực của máy chủ từ xa.

# ssh-keygen -t rsa
# ssh-copy-id [email protected]
# ssh-copy-id -p XXXXX [email protected]  

Sau đó, bạn nên đảm bảo rằng bạn có thể kết nối với máy chủ sao lưu mà không cần sử dụng mật khẩu:

# ssh [email protected]
Đăng nhập từ xa không cần mật khẩu SSH

Bây giờ chúng ta cần tạo GPG sẽ được sử dụng để mã hóa và giải mã dữ liệu của chúng ta:

# gpg2 --full-gen-key

Bạn sẽ được nhắc nhập:

  • Loại chìa khóa
  • Kích thước khóa
  • Khóa sẽ có giá trị trong bao lâu
  • Một cụm mật khẩu
Tạo khóa GPG RSA trong LinuxTạo khóa GPG RSA trong Linux

Để tạo entropy cần thiết cho việc tạo khóa, bạn có thể đăng nhập vào máy chủ thông qua một cửa sổ đầu cuối khác và thực hiện một vài tác vụ hoặc chạy một số lệnh để tạo entropy (nếu không, bạn sẽ phải đợi một thời gian dài cho phần này của quá trình kết thúc).

Khi các khóa đã được tạo, bạn có thể liệt kê chúng như sau:

# gpg --list-keys
Liệt kê các khóa GPG
Liệt kê các khóa GPG

Chuỗi được đánh dấu màu vàng ở trên được gọi là ID khóa công khai và là đối số được yêu cầu để mã hóa tệp của bạn.

Tạo bản sao lưu Linux với tính năng trùng lặp

Để bắt đầu đơn giản, hãy chỉ sao lưu / var / log, ngoại trừ / var / log / anaconda và / var / log / sa.

Vì đây là bản sao lưu đầu tiên của chúng tôi, nó sẽ là bản sao lưu đầy đủ. Các lần chạy tiếp theo sẽ tạo các bản sao lưu gia tăng (trừ khi chúng tôi thêm tùy chọn đầy đủ không có dấu gạch ngang ngay bên cạnh sự trùng lặp trong lệnh bên dưới):

# PASSPHRASE="2error" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email protected]//backups/rhel8
OR
# PASSPHRASE="YourPassphraseHere" duplicity --encrypt-key YourPublicKeyIdHere --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email protected]:XXXXX//backups/rhel8

Hãy chắc chắn rằng bạn không bỏ lỡ dấu gạch chéo kép trong lệnh trên! Chúng được sử dụng để chỉ ra một đường dẫn tuyệt đối đến một thư mục có tên / backups / rhel8 trong hộp sao lưu và là nơi các tệp sao lưu sẽ được lưu trữ.

Thay thế YourPassphraseHere, YourPublicKeyIdHere và RemoteServer bằng cụm mật khẩu bạn đã nhập trước đó, ID khóa công khai GPG và bằng IP hoặc tên máy chủ của máy chủ sao lưu, tương ứng.

Đầu ra của bạn sẽ tương tự như hình ảnh sau:

Tạo / var sao lưu phân vùng
Tạo bản sao lưu bằng tính năng Sao lưu

Hình ảnh trên cho thấy tổng cộng 86,3 MB đã được sao lưu thành 3,22 MB trong đích. Hãy chuyển sang máy chủ sao lưu để kiểm tra bản sao lưu mới được tạo của chúng tôi:

Xác nhận tệp sao lưu LinuxXác nhận tệp sao lưu Linux

Lần chạy thứ hai của cùng một lệnh sẽ mang lại kích thước và thời gian sao lưu nhỏ hơn nhiều:

Nén sao lưuNén sao lưu

Khôi phục bản sao lưu Linux bằng tính năng trùng lặp

Để khôi phục thành công tệp, thư mục có nội dung của nó hoặc toàn bộ bản sao lưu, đích không được tồn tại (tính trùng lặp sẽ không ghi đè lên tệp hoặc thư mục hiện có). Để làm rõ, hãy xóa nhật ký cron trong hộp CentOS:

# rm -f /var/log/cron

Cú pháp để khôi phục một tệp từ máy chủ từ xa là:

# PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://[email protected]//backups/rhel8 /where/to/restore/filename

ở đâu,

  • tên tệp là tệp sẽ được giải nén, với một đường dẫn tương đối đến thư mục đã được sao lưu
  • / where / to / restore là thư mục trong hệ thống cục bộ nơi chúng tôi muốn khôi phục tệp.

Trong trường hợp của chúng tôi, để khôi phục nhật ký chính cron từ bản sao lưu từ xa, chúng tôi cần chạy:

# PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email protected]:XXXXX//backups/rhel8 /var/log/cron

Nhật ký cron sẽ được khôi phục về đích mong muốn.

Tương tự, hãy xóa một thư mục khỏi / var / log và khôi phục nó bằng cách sử dụng bản sao lưu:

# rm -rf /var/log/mail
# PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email protected]:XXXXX//backups/rhel8 /var/log/mail

Trong ví dụ này, thư sẽ được khôi phục về vị trí ban đầu với tất cả nội dung của nó.

Các tính năng khác của Sự trùng lặp

Bất cứ lúc nào, bạn có thể hiển thị danh sách các tệp đã lưu trữ bằng lệnh sau:

# duplicity list-current-files sftp://[email protected]:XXXXX//backups/rhel8

Xóa các bản sao lưu cũ hơn 6 tháng:

# duplicity remove-older-than 6M sftp://[email protected]:XXXXX//backups/rhel8

Khôi phục myfile bên trong thư mục gacanepa như cách đây 2 ngày 12 giờ:

# duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email protected]:XXXXX//remotedir/backups /home/gacanepa/myfile

Trong lệnh cuối cùng, chúng ta có thể thấy một ví dụ về việc sử dụng khoảng thời gian (như được chỉ định bởi -t): một chuỗi các cặp trong đó mỗi cặp bao gồm một số theo sau là một trong các ký tự s, m, h, D, W, M hoặc Y (chỉ giây, phút, giờ, ngày, tuần, tháng hoặc năm tương ứng).

Bản tóm tắt