Sao lưu Raspberry Pi không quá phức tạp. Mặc dù có nhiều giải pháp sao lưu tinh vi, đôi khi cách tiếp cận đơn giản lại hiệu quả nhất. Bài viết này sẽ chỉ cho bạn cách sử dụng rsync – một công cụ dòng lệnh nhỏ nhưng mạnh mẽ, hoàn hảo để tạo bản sao lưu cục bộ đáng tin cậy cho thiết lập Raspberry Pi của bạn.
Mục lục bài viết
Sử dụng Rsync để sao lưu các file và thư mục Raspberry Pi
Cách đơn giản nhất để sao lưu một thư mục là sử dụng lệnh:
rsync -av /source/directory /backup/location
Ví dụ, để sao lưu thư mục root vào ổ cứng ngoài được mount tại “/media/backup”, hãy sử dụng lệnh:
rsync -av --delete /home/david/immich-app /media/backup
... để sao lưu cơ sở dữ liệu thư viện ảnh.
Sau đây là những gì các tùy chọn khác nhau thực hiện:
- -a kích hoạt chế độ lưu trữ, chế độ này bảo toàn quyền, quyền sở hữu và timestamp của file
- -v cung cấp đầu ra chi tiết để bạn có thể xem những gì đang được sao chép.
- --delete xóa các file khỏi vị trí sao lưu không còn tồn tại trong nguồn.
Lưu ý: Bạn cũng nên biết rằng rsync đặc biệt chú ý đến dấu gạch chéo theo sau trong đường dẫn. Dấu gạch chéo theo sau trên nguồn có nghĩa là "sao chép nội dung của thư mục này" chứ không phải chính thư mục đó. Ví dụ, rsync -av --delete /home/pi/folder /media/backup sao chép nội dung của ‘folder’ trực tiếp vào ‘backup’, trong khi bỏ dấu gạch chéo sao chép chính thư mục ‘folder’ vào ‘backup’.
Xác minh bản sao lưu Raspberry Pi
Trước khi dựa vào bản sao lưu, bạn nên xác minh rằng nó hoạt động chính xác. Cách đơn giản nhất để kiểm tra là sử dụng tùy chọn chạy thử với rsync, có thể được chỉ định là -n hoặc --dry-run. Chạy lệnh:
rsync -avn --delete /home/pi/folder /media/backup
... sẽ hiển thị không có file nào cần chuyển nếu bản sao lưu của bạn được cập nhật.
Để xác minh kỹ lưỡng hơn, bạn có thể thêm tùy chọn -c hoặc --checksum vào lệnh rsync của mình. Mặc dù chậm hơn so với so sánh timestamp và kích thước mặc định, nhưng điều này đảm bảo rằng mọi file đều hoàn toàn giống hệt nhau giữa nguồn và bản sao lưu bằng cách tính toán checksum. Chỉ cần chạy:
rsync -avc --delete /home/pi/folder /media/backup
Cách chi tiết nhất để xác minh bản sao lưu của bạn là sử dụng lệnh diff, lệnh này sẽ so sánh mọi file và thư mục giữa vị trí nguồn và vị trí sao lưu. Để thực hiện xác minh này, hãy sử dụng:
diff -r /home/pi/folder /media/backup/folder
Tùy chọn -r yêu cầu diff kiểm tra tất cả các thư mục con theo cách đệ quy. Nếu lệnh không tạo ra đầu ra, điều đó có nghĩa là bản sao lưu giống hệt với nguồn. Nếu có sự khác biệt, diff sẽ cho bạn biết chính xác những file nào khác hoặc bị thiếu.
Tạo bản sao lưu đầy đủ của Raspberry Pi bằng Rsync
Trong một số trường hợp, việc sao lưu toàn bộ thẻ SD Raspberry Pi của bạn có thể thuận tiện và an toàn hơn thay vì chỉ một số ít thư mục quan trọng.
Để tạo bản sao lưu đầy đủ của Raspberry Pi bằng rsync, bạn sẽ cần một đích sao lưu - một thẻ SD khác hoặc ổ cứng ngoài có đủ dung lượng để chứa toàn bộ hệ thống của bạn. Ổ sao lưu phải được định dạng bằng hệ thống file tương thích với Linux như ext4 để bảo toàn tất cả các quyền và thuộc tính của file một cách chính xác.
Phần khó nhất khi sao lưu toàn bộ hệ thống Raspberry Pi là xử lý đúng các thư mục và file hệ thống đặc biệt. Theo kinh nghiệm, giải pháp dễ nhất là loại trừ các thư mục hệ thống không cần sao lưu hoặc có thể gây ra sự cố nếu khôi phục. Tạo một file có tên “backup-exclude.txt” và thêm các thư mục hệ thống sau đây cần được loại trừ khỏi bản sao lưu:
- /proc/* # Thông tin tiến trình runtime
- /sys/* # Thông tin hệ thống và kernel
- /dev/* # File thiết bị
- /tmp/* # File tạm thời
- /run/* # Dữ liệu runtime
- /mnt/* # Điểm mount
- /media/* # Phương tiện di động
- /home/pi/.cache/* # File cache người dùng
- /lost+found # Thư mục khôi phục hệ thống file
Với các loại trừ này, bạn có thể đóng nhiều ứng dụng đang chạy nhất có thể rồi thực hiện lệnh sao lưu sau:
sudo rsync -avxhP --delete --exclude-from=/home/pi/backup-exclude.txt / /media/backup/rootfs/
Tùy chọn -x ngăn rsync vượt qua ranh giới hệ thống file, điều này có thể gây ra sự cố với các thư mục hệ thống. Tùy chọn -h khiến rsync hiển thị kích thước file và tốc độ truyền ở định dạng dễ đọc đối với con người.
Tự động sao lưu rsync
Mặc dù sao lưu đầy đủ được tạo thủ công rất hữu ích, nhưng nhiều người thích tự động hóa chúng bằng trình lập lịch cron tích hợp của Linux. Để thiết lập, hãy tạo một file có tên là “backup-pi.sh” trong thư mục root với nội dung sau:
#!/bin/bash
BACKUP_DRIVE="/media/backup"
LOG_FILE="/home/pi/backup-log.txt"
# Check if backup drive is mounted
if ! mountpoint -q $BACKUP_DRIVE; then
echo "Backup drive not mounted at $BACKUP_DRIVE" >> $LOG_FILE
exit 1
fi
# Create timestamp for logging
date >> $LOG_FILE
# Run backup with error checking
sudo rsync -avxhP --delete \
--exclude-from=/home/pi/backup-exclude.txt \
/ $BACKUP_DRIVE/rootfs/ \
>> $LOG_FILE 2>&1
# Record backup completion
echo "Backup finished at 22/12/2024" >> $LOG_FILE
echo "-------------------" >> $LOG_FILE
Làm cho script có thể thực thi được bằng chmod +x backup-pi.sh, sau đó lên lịch bằng cron. Nhập crontab -e và thêm dòng này để chạy sao lưu hàng ngày vào lúc nửa đêm:
0 0 * * * /home/pi/backup-pi.sh
Khôi phục bản sao lưu Rsync Raspberry Pi
Để khôi phục các file hoặc thư mục riêng lẻ, quy trình này rất đơn giản. Chỉ cần hoán đổi nguồn và đích trong lệnh rsync. Ví dụ, để khôi phục thư viện ảnh từ bản sao lưu:
rsync -av /media/backup/home/david/immich-app/ /home/david/immich-app/
Để khôi phục toàn bộ hệ thống, trước tiên bạn cần cài đặt lại Raspberry Pi OS trên thẻ SD của mình. Bắt đầu bằng cách cài đặt bản sao mới của Raspberry Pi OS trên thẻ SD mới. Sau khi hoàn tất, hãy khởi động Pi bằng thẻ SD mới và hoàn tất quy trình thiết lập ban đầu. Tiếp theo, kết nối ổ đĩa sao lưu của bạn với Pi của bạn. Khi mọi thứ đã được kết nối và mount đúng cách, bạn có thể khôi phục bản sao lưu của mình bằng lệnh rsync:
sudo rsync -avxhP /media/backup/rootfs/ /
Sau khi khôi phục hoàn tất, bạn nên khởi động lại Pi của mình để kiểm tra xem tất cả các file đã khôi phục đã được load đúng cách chưa. Bạn cũng nên xác minh rằng các service và cấu hình quan trọng của mình đang hoạt động như mong đợi.
Nếu một số ứng dụng không hoạt động sau khi khôi phục, hãy kiểm tra file nhật ký của chúng (thường là trong /var/log/) để tìm bất kỳ lỗi nào liên quan đến quyền. Bạn có thể cần chạy:
sudo chown -R $USER:$USER /home/$USER
... để sửa quyền sở hữu các file thư mục root. Như bạn thấy, khôi phục bằng rsync dễ như tạo bản sao lưu – chỉ cần đảo ngược đường dẫn nguồn và đích trong các lệnh.
Mặc dù dòng lệnh rsync rất đơn giản, nhưng có một số lựa chọn thay thế GUI tuyệt vời nếu bạn không thoải mái với terminal. Ví dụ, Syncthing cho phép bạn đồng bộ nhiều thư mục trên các hệ thống khác nhau, trong khi Timeshift cung cấp chức năng tạo snapshot hệ thống với giao diện gọn gàng. Bất kể bạn chọn công cụ nào, điều quan trọng là phải duy trì sao lưu thường xuyên Raspberry Pi để bảo vệ dữ liệu có giá trị và cấu hình hệ thống của bạn.