Hướng dẫn Backup, Đồng Bộ và Migrate dữ liệu bằng rsync trên Linux

rsync là công cụ gần như không thể thiếu khi quản trị server Linux, đặc biệt trong các bài toán backup, đồng bộ và migrate dữ liệu giữa máy chủ này sang máy chủ khác. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng rsync để sao lưu, đồng bộ và chuyển dữ liệu một cách an toàn, nhanh chóng, tối ưu cho cả hệ thống nhỏ lẫn server dung lượng lớn.

Hướng dẫn Backup, Đồng Bộ và Migrate dữ liệu bằng rsync trên Linux

Rsync là gì và tại sao nên dùng rsync?

rsync là một công cụ dòng lệnh dùng để sao chép và đồng bộ file/thư mục giữa:

  • Các thư mục trên cùng một server
  • Hai server khác nhau qua SSH
  • Ổ đĩa cục bộ và ổ đĩa gắn ngoài

Ưu điểm nổi bật của rsync:

  • Incremental: chỉ copy phần dữ liệu thay đổi.
  • Bảo toàn quyền file: giữ nguyên quyền, owner, group, timestamp.
  • Linh hoạt: kết hợp với SSH, cron, script.
  • Tối ưu dữ liệu lớn: rất phù hợp với thư mục chứa hàng trăm nghìn file.

Cú pháp cơ bản của rsync

Cú pháp phổ biến:

rsync [options] source destination

Ví dụ:

rsync -av /var/www/html/ /backup/www-html/

Các tham số thường dùng:

  • -a: archive mode
  • -v: verbose
  • -z: nén khi truyền
  • --delete: xóa file không còn tồn tại
  • --progress: hiển thị tiến trình

Backup dữ liệu cục bộ bằng rsync

Backup dữ liệu trong cùng một server:

rsync -av --progress /var/www/html/ /backup/www-html/

Sự khác nhau của dấu /:

  • html/: copy nội dung
  • html: copy cả thư mục

Backup định kỳ qua cron:

0 2 * * * rsync -av /var/www/html/ /backup/www-html/ > /var/log/rsync-backup.log 2>&1

Backup qua server khác bằng SSH và rsync

rsync -avz --progress /var/www/html/ user@server2:/backup/www-html/

Cấu hình SSH key:

ssh-keygen
ssh-copy-id user@server2

Đồng bộ dữ liệu giữa hai server (sync / mirror)

rsync -avz --delete --progress /var/www/html/ user@server2:/var/www/html/

Lưu ý:

  • Chỉ dùng --delete khi muốn mirror 1:1
  • Nên test trước bằng --dry-run

Migrate dữ liệu sang server mới bằng rsync

  1. Rsync mã nguồn
  2. Dump database
  3. Rsync lần cuối trước khi đổi DNS

Rsync source code:

rsync -avz --progress /var/www/html/ user@new-server:/var/www/html/

Dump database:

mysqldump -u root -p dbname | gzip > dbname.sql.gz
rsync -av dbname.sql.gz user@new-server:/backup/

Khôi phục database tại server mới:

gunzip < dbname.sql.gz | mysql -u root -p dbname

Rsync lần cuối:

rsync -avz --delete --progress /var/www/html/ user@new-server:/var/www/html/

Tối ưu tốc độ khi đồng bộ nhiều file nhỏ

  • Bỏ -z khi sync ảnh hoặc file đã nén:
    rsync -av --progress /data/images/ user@server2:/data/images/
  • Không dùng --checksum
  • Nếu cần giới hạn băng thông:
    rsync -av --bwlimit=5000 /var/www/html/ user@server2:/var/www/html/

Một số tùy chọn rsync hữu ích khác

  • --exclude:
    rsync -av /var/www/html/ --exclude="cache/" --exclude="*.log" /backup/www-html/
  • --partial, --partial-dir
  • --dry-run:
    rsync -av --dry-run /var/www/html/ user@server2:/var/www/html/

Quy trình gợi ý khi thiết kế chiến lược backup

  1. Xác định dữ liệu cần backup
  2. Chọn nơi lưu backup
  3. Viết lệnh rsync cho từng loại dữ liệu
  4. Test bằng --dry-run
  5. Thiết lập cronjob
  6. Định kỳ test restore

Kết luận

rsync là giải pháp mạnh mẽ, linh hoạt và hiệu quả cho các bài toán backup, đồng bộ và migrate dữ liệu trên Linux. Khi sử dụng đúng cách và tối ưu tham số, rsync giúp tiết kiệm thời gian, băng thông và nâng cao độ an toàn cho hệ thống.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...