- Rsync là gì và tại sao nên dùng rsync?
- Cú pháp cơ bản của rsync
- Backup dữ liệu cục bộ bằng rsync
- Backup qua server khác bằng SSH và rsync
- Đồng bộ dữ liệu giữa hai server (sync / mirror)
- Migrate dữ liệu sang server mới bằng rsync
- Tối ưu tốc độ khi đồng bộ nhiều file nhỏ
- Một số tùy chọn rsync hữu ích khác
- Quy trình gợi ý khi thiết kế chiến lược backup
- Kết luận
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 dunghtml: 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
--deletekhi 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
- Rsync mã nguồn
- Dump database
- 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ỏ
-zkhi 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
- Xác định dữ liệu cần backup
- Chọn nơi lưu backup
- Viết lệnh rsync cho từng loại dữ liệu
- Test bằng
--dry-run - Thiết lập cronjob
- Đị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