rdiff-backup là một tập lệnh Python mạnh mẽ và dễ sử dụng để sao lưu tăng tiến địa phương / từ xa, hoạt động trên bất kỳ hệ điều hành POSIX nào như Linux, Mac OS X hoặc Cygwin. Nó kết hợp những tính năng đáng chú ý của một bản sao và một bản sao lưu tăng tiến.
Một điều đáng kể là nó giữ nguyên các thư mục con, tập tin dev, liên kết cứng và các thuộc tính tập tin quan trọng như quyền hạn, sở hữu uid/gid, thời gian sửa đổi, thuộc tính mở rộng, acl và resource forks. Nó có thể hoạt động ở chế độ tiết kiệm băng thông qua ống dẫn, tương tự như công cụ sao lưu rsync phổ biến.
rdiff-backup sao lưu một thư mục duy nhất sang một thư mục khác qua mạng sử dụng SSH, ngụ ý rằng việc truyền dữ liệu được mã hóa nên an toàn. Thư mục đích (trên hệ thống từ xa) trở thành một bản sao chính xác của thư mục nguồn, tuy nhiên các bản sao lưu đảo ngược thêm được lưu trữ trong một thư mục con đặc biệt trong thư mục đích, điều này cho phép khôi phục các tập tin bị mất trong một thời gian trước đó.
Dependencies/ Phụ thuộc
Để sử dụng lệnh rdiff-backup trong Linux, bạn cần cài đặt các gói sau trên hệ thống của bạn:
- Python v2.2 trở lên
- librsync v0.9.7 trở lên
- Các module Python pylibacl và pyxattr là tùy chọn nhưng cần thiết cho quyền kiểm soát truy cập POSIX (ACL) và hỗ trợ thuộc tính mở rộng tương ứng.
- rdiff-backup-statistics yêu cầu Python v2.4 trở lên.
How to Install rdiff-backup in Linux
Quan trọng: Nếu bạn đang hoạt động qua mạng, bạn sẽ phải cài đặt rdiff-backup trên cả hai hệ thống, ưu tiên là cả hai cài đặt của rdiff-backup phải là cùng một phiên bản.
Tập lệnh đã có sẵn trong các kho chính thức của các bản phân phối Linux phổ biến, chỉ cần chạy lệnh dưới đây để cài đặt rdiff-backup cùng với các gói phụ thuộc của nó:
Intall rdiff-backup On Ubuntu
Để cài đặt Rdiff-Backup trên Ubuntu Focal hoặc Debian Bullseye hoặc mới hơn (có phiên bản 2.0).
$ sudo apt-get update
$ sudo apt-get install librsync-dev rdiff-backup
Để cài đặt Rdiff-Backup trên Ubuntu Backports cho các phiên bản cũ hơn (cần một phiên bản 2.0 được backport).
$ sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
$ sudo apt update
$ sudo apt install rdiff-backu
On CentOS/RHEL 8
Để cài đặt Rdiff-Backup trên CentOS và RHEL 8 (từ COPR).
$ sudo yum install yum-plugin-copr epel-release
$ sudo yum copr enable frankcrawford/rdiff-backup
$ sudo yum install rdiff-backup
On CentOS/RHEL 7
Để cài đặt Rdiff-Backup trên CentOS và RHEL 7 (từ COPR).
$ sudo yum install yum-plugin-copr epel-release
$ sudo yum copr enable frankcrawford/rdiff-backup
$ sudo yum install rdiff-backup
On CentOS/RHEL 6
$ sudo yum install centos-release-scl
$ sudo yum install rh-python36 gcc libacl-devel
$ scl enable rh-python36 bash
$ sudo pip install rdiff-backup pyxattr pylibacl
$ echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
$ sudo chmod +x /usr/bin/rdiff-backup
On Fedora
Để cài đặt Rdiff-Backup trên Fedora 32+.
$ sudo dnf install rdiff-backup
How to Use rdiff-backup in Linux
Như đã đề cập trước đó, rdiff-backup sử dụng SSH để kết nối với máy tính từ xa trong mạng của bạn, và việc xác thực mặc định trong SSH là phương thức tên người dùng / mật khẩu, thông thường đòi hỏi tương tác con người.
Tuy nhiên, để tự động hóa các nhiệm vụ như sao lưu tự động với scripts và vượt quá, bạn sẽ cần cấu hình Đăng nhập không cần mật khẩu SSH bằng cách sử dụng khóa SSH, vì khóa SSH tăng cường sự tin tưởng giữa hai máy chủ Linux cho việc đồng bộ hoặc chuyển file dễ dàng.
Sau khi đã thiết lập Đăng nhập không cần mật khẩu SSH, bạn có thể bắt đầu sử dụng tập lệnh với các ví dụ sau.
Backup Files to Different Partition
Ví dụ dưới đây sẽ sao lưu thư mục /etc
vào một thư mục Backup trên một phân vùng khác:
$ sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup
Để loại trừ một thư mục cụ thể cùng với các thư mục con của nó, bạn có thể sử dụng tùy chọn --exclude
như sau:
$ sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup
Chúng ta có thể bao gồm tất cả các tập tin thiết bị, tệp FIFO, tệp socket và các liên kết tượng trưng bằng cách sử dụng tùy chọn --include-special-files
như sau:
$ sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup
Có hai cờ quan trọng khác mà chúng ta có thể đặt cho việc chọn tệp; kích thước --max-file-size
loại bỏ các tệp lớn hơn kích thước đã cho (theo byte) và --min-file-size
loại bỏ các tệp nhỏ hơn kích thước đã cho (theo byte):
$ sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup
Backup Remote Files on Local Linux Server
Cho mục đích của phần này, chúng ta sẽ sử dụng:
Remote Server (tecmint) : 192.168.56.102
Local Backup Server (backup) : 192.168.56.10
Như đã nói trước đó, bạn phải cài đặt cùng phiên bản của rdiff-backup trên cả hai máy, bây giờ hãy thử kiểm tra phiên bản trên cả hai máy như sau:
$ rdiff-backup -V
Trên máy chủ sao lưu, tạo một thư mục sẽ lưu trữ các tệp sao lưu như sau:
# mkdir -p /backups
Bây giờ từ máy chủ sao lưu, chạy các lệnh sau để sao lưu các thư mục /var/log/
và /root
từ máy chủ Linux từ xa 192.168.56.102 sang /backups
:
# rdiff-backup root@192.168.56.102::/var/log/ /backups/192.168.56.102_logs.backup
# rdiff-backup root@192.168.56.102::/root/ /backups/192.168.56.102_rootfiles.backup
Bảng chụp màn hình dưới đây hiển thị tệp gốc trên máy chủ từ xa 192.168.56.102 và các tệp đã sao lưu trên máy chủ sao lưu 192.168.56.10:
Lưu ý thư mục rdiff-backup-data được tạo trong thư mục backup
như được hiển thị trong ảnh chụp, nó chứa dữ liệu quan trọng về quá trình sao lưu và các tệp tăng tiến.
Bây giờ, trên máy chủ 192.168.56.102, các tệp bổ sung đã được thêm vào thư mục gốc như được hiển thị bên dưới:
Hãy chạy lại lệnh sao lưu để lấy dữ liệu đã thay đổi, chúng ta có thể sử dụng tùy chọn -v[0-9]
(trong đó số chỉ định cấp độ hướng dẫn, mặc định là 3 tức là yên lặng) để đặt tính năng hướng dẫn:
# rdiff-backup -v4 root@192.168.56.102::/root/ /backups/192.168.56.102_rootfiles.backup
Và để liệt kê số lượng và ngày của các bản sao lưu tăng tiến một phần chứa trong thư mục /backups/192.168.56.102_rootfiles.backup, chúng ta có thể chạy:
# rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/
Automating rdiff-back Backup Using Cron
Chúng ta có thể in các số liệu tóm tắt sau khi sao lưu thành công với --print-statistics
. Tuy nhiên, nếu chúng ta không đặt tùy chọn này, thông tin sẽ vẫn có sẵn từ tệp thống kê của phiên. Đọc thêm về tùy chọn này trong phần THỐNG KÊ của trang Hướng dẫn sử dụng.
Và cờ –remote-schema cho phép chúng ta đặt phương pháp kết nối với máy tính từ xa khác.
Bây giờ, hãy bắt đầu bằng cách tạo một tệp backup.sh
trên máy chủ sao lưu 192.168.56.10 như sau:
# cd ~/bin
# vi backup.sh
Thêm các dòng sau vào tệp script.
#!/bin/bash
#This is a rdiff-backup utility backup script
#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only /"' root@192.168.56.102::/var/logs /backups/192.168.56.102_logs.back
#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
#append error message in ~/backup.log file
echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
exit 1;
fi
#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back
Lưu tệp và thoát, sau đó chạy lệnh sau để thêm script vào cronjob trên máy chủ sao lưu 192.168.56.10:
# crontab -e
Thêm dòng này để chạy kịch bản sao lưu của bạn hằng ngày lúc nửa đêm:
0 0 * * * /root/bin/backup.sh > /dev/null 2>&1
Lưu Cronjob và đóng, bây giờ chúng ta đã tự động hóa quy trình sao lưu thành công. Hãy đảm bảo rằng nó hoạt động như mong đợi.
Đọc qua trang Hướng dẫn sử dụng của rdiff-backup để biết thêm thông tin, các tùy chọn sử dụng khái quát và ví dụ:
# man rdiff-backup
Đó là tất cả cho bây giờ! Trong bài hướng dẫn này, chúng tôi chỉ cho bạn cách cài đặt và sử dụng cơ bản rdiff-backup, một tập lệnh Python dễ sử dụng để sao lưu tăng tiến địa phương / từ xa trên Linux. Hãy chia sẻ ý kiến của bạn với chúng tôi qua phần phản hồi phía dưới.