Sao lưu và đồng bộ dữ liệu với rsync

rsync chỉ truyền phần dữ liệu đã thay đổi, nên lần sao lưu thứ hai trở đi nhanh hơn rất nhiều so với copy thông thường. Đây là công cụ sao lưu được dùng nhiều nhất trên Linux.

Cú pháp cơ bản

rsync -avh /nguon/ /dich/
  • -a — chế độ lưu trữ: giữ quyền, chủ sở hữu, thời gian, liên kết
  • -v — hiển thị chi tiết
  • -h — dung lượng dễ đọc

Dấu gạch chéo cuối rất quan trọng

rsync -av /du_lieu/  /backup/    # chép NỘI DUNG vào /backup/
rsync -av /du_lieu   /backup/    # chép CẢ THƯ MỤC -> /backup/du_lieu/

Đây là nguồn nhầm lẫn số một khi dùng rsync. Luôn thử với --dry-run trước.

Luôn diễn tập trước

rsync -avh --dry-run --delete /nguon/ /dich/

--delete xóa ở đích những file đã không còn ở nguồn. Rất hữu ích để bản sao giống hệt bản gốc — và cũng rất nguy hiểm nếu gõ nhầm đường dẫn.

Sao lưu qua SSH

rsync -avz -e "ssh -p 22" /var/www/ [email protected]:/backup/www/

-z nén dữ liệu khi truyền, đáng dùng khi đường truyền chậm. Với mạng LAN nhanh thì bỏ đi lại nhanh hơn.

Loại trừ thư mục không cần

rsync -avh --progress \
  --exclude='node_modules/' \
  --exclude='*.log' \
  --exclude='.git/' \
  /var/www/ /backup/www/

Sao lưu tăng dần theo ngày

#!/bin/bash
NGAY=$(date +%F)
rsync -avh --delete \
  --link-dest=/backup/moi_nhat \
  /var/www/ /backup/$NGAY/
rm -f /backup/moi_nhat
ln -s /backup/$NGAY /backup/moi_nhat

--link-dest tạo hard link tới bản sao trước với các file không đổi. Kết quả: mỗi ngày là một bản đầy đủ để khôi phục, nhưng chỉ tốn dung lượng cho phần thay đổi.

Tự động chạy hằng đêm

# crontab -e
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Quy tắc 3-2-1

3 bản sao dữ liệu, trên 2 loại phương tiện khác nhau, trong đó 1 bản đặt ở nơi khác về mặt địa lý.

Và điều quan trọng nhất: một bản sao lưu chưa từng được khôi phục thử thì không phải là bản sao lưu. Hãy đặt lịch mỗi quý khôi phục thử một lần.

Lên đầu trang