Rsync cho Linux: đồng bộ hóa, sao chép và sao lưu tệp
9 phút đọc - 24 tháng 5, 2025

Cách sử dụng rsync trên Linux để thực hiện chuyển dữ liệu theo từng phần, đồng bộ hóa từ xa qua SSH, sao lưu theo lịch trình với cron và tránh bẫy dấu gạch chéo cuối
Rsync cho Linux: cách đồng bộ hóa, sao chép và sao lưu tệp như một chuyên gia
Rsync là công cụ tiêu chuẩn để sao chép tệp giữa các hệ thống Linux. Nó nhanh hơn cp hoặc scp cho bất kỳ tác vụ nào bạn thực hiện nhiều lần, tự động phục hồi khi mạng bị gián đoạn và chỉ chuyển những phần thực sự đã thay đổi. Bài viết này trình bày chức năng của rsync, các tùy chọn quan trọng cần biết, các ví dụ bạn sẽ thường xuyên sử dụng, và cách lên lịch thực thi với cron.
Rsync là gì?
Rsync là một tiện ích dòng lệnh để sao chép và đồng bộ hóa tệp giữa các vị trí. Nó hoạt động cục bộ, qua SSH đến một máy chủ từ xa hoặc với một daemon rsync. Sự khác biệt chính so với cp hoặc scp: rsync so sánh nguồn và đích trước, sau đó chỉ chuyển những phần khác biệt. Trên một thư mục 100 GB mà 200 MB đã thay đổi, rsync sẽ chuyển 200 MB. cp và scp sao chép toàn bộ.
Nó được tích hợp sẵn trong mọi bản phân phối Linux hiện đại. Nếu thiếu: apt install rsync hoặc dnf install rsync.
Tại sao nên sử dụng rsync thay vì cp hoặc scp
Ba lý do khiến rsync vượt trội trong mọi trường hợp sao chép phức tạp:
- Nó là tăng dần. Các lần chạy tiếp theo chỉ truyền các byte đã thay đổi, không phải toàn bộ tệp. Đối với sao lưu và nhân bản, điều đó biến một công việc kéo dài cả đêm thành vài phút.
- Nó chịu được gián đoạn. Với
--partial, một tệp 50 GB đã chuyển được một nửa sẽ tiếp tục từ nơi đã dừng lại thay vì bắt đầu lại từ đầu. - Nó giữ nguyên metadata. Chế độ lưu trữ (
-a) giữ nguyên quyền truy cập, quyền sở hữu, liên kết tượng trưng và dấu thời gian. Điều này rất quan trọng đối với các tệp hệ thống, cây nguồn và bất kỳ thứ gì mà các thuộc tính có ý nghĩa.
Đối với việc sao chép một lần các tệp nhỏ, scp là đủ. Đối với bất kỳ tác vụ nào lặp lại, tiêu tốn nhiều băng thông hoặc bất kỳ tác vụ nào bạn có thể cần tiếp tục, hãy sử dụng rsync.
Các cờ rsync phổ biến
Các tùy chọn bạn sẽ thực sự sử dụng:
| Tham số | Chức năng |
|---|---|
-a | Chế độ lưu trữ. Giữ nguyên quyền truy cập, quyền sở hữu, liên kết tượng trưng và dấu thời gian. Tương đương với -rlptgoD. |
-v | Verbose. Liệt kê các tệp đang được truyền. |
-z | Nén trong quá trình truyền. Hữu ích trên các kết nối chậm hoặc tốn kém, ít hữu ích hơn trên mạng LAN hoặc đối với nội dung đã được nén sẵn. |
-P | Kết hợp --partial và --progress. Tiếp tục các quá trình truyền tải bị gián đoạn, hiển thị tiến trình trực tiếp. |
--delete | Xóa các tệp tại đích không tồn tại trên nguồn. Yêu cầu để tạo bản sao chính xác. |
--exclude | Bỏ qua các tệp phù hợp với một mẫu. |
--exclude-from=FILE | Đọc các mẫu loại trừ từ một tệp. Gọn gàng hơn so với việc kết hợp nhiều --exclude cờ. |
--dry-run | Hiển thị kết quả sẽ xảy ra nếu không chuyển bất kỳ tệp nào. |
--bwlimit=KBPS | Giới hạn sử dụng băng thông theo kilobyte mỗi giây. Hữu ích cho các bản sao lưu chạy trong giờ làm việc. |
--checksum | So sánh các tệp bằng tổng kiểm tra thay vì kích thước và thời gian sửa đổi. Chậm hơn nhưng phát hiện được các trường hợp ngoại lệ. |
-e ssh | Sử dụng SSH để truyền dữ liệu. Tính năng này được kích hoạt mặc định trên hầu hết các bản cài đặt hiện đại. |
Hành vi mặc định so sánh kích thước tệp và thời gian sửa đổi, điều này nhanh chóng và hầu như luôn chính xác. Chuyển sang --checksum nếu quá trình triển khai ghi đè dấu thời gian mà không thay đổi nội dung, hoặc nếu bạn nghi ngờ có sự hỏng hóc ở cấp độ bit.
Ví dụ về Rsync
Sao chép một thư mục cục bộ:
rsync -av /source/path/ /destination/path/Đồng bộ hóa với máy chủ từ xa qua SSH:
rsync -avz /local/dir/ user@remote:/remote/dir/Thử nghiệm trước khi thực hiện bất kỳ thao tác nào có thể gây hư hỏng:
rsync -avz --dry-run /local/dir/ user@remote:/dir/Sao chép hai thư mục, bao gồm cả các tệp đã xóa ở đích:
rsync -av --delete /source/ /destination/Loại trừ các tệp nhật ký và thư mục tạm thời:
rsync -av --exclude='*.log' --exclude='tmp/' /src/ /dest/Tiếp tục quá trình chuyển dữ liệu lớn có thể bị gián đoạn:
rsync -avP user@remote:/backups/big.img /local/Nếu phiên SSH bị ngắt, hãy chạy lại lệnh đó. Với -P, rsync sẽ tiếp tục từ điểm dừng lại thay vì bắt đầu lại từ đầu.
Giới hạn băng thông ở mức 50 MB/s cho việc sao lưu ngoài giờ cao điểm để không làm quá tải đường truyền lên:
rsync -avz --bwlimit=50000 /local/dir/ user@remote:/dir/Cái bẫy dấu gạch chéo cuối
Lỗi rsync phổ biến nhất:
rsync -av /source /destination/ # copies the 'source' directory INTO /destination
rsync -av /source/ /destination/ # copies the CONTENTS of /source into /destinationDấu gạch chéo ở cuối đường dẫn nguồn có nghĩa là "tất cả mọi thứ trong thư mục này". Không có dấu gạch chéo ở cuối có nghĩa là "chính thư mục này". Hãy chạy với --dry-run trước nếu bạn không chắc chắn, đặc biệt là khi kết hợp với --delete.
Tự động hóa rsync bằng cron
Để sao lưu theo lịch trình, bạn cần ba điều sau:
Quyền truy cập SSH không cần mật khẩu vào đích. Các tác vụ cron không thể nhập mật khẩu. Tạo khóa và sao chép nó vào máy chủ sao lưu:
ssh-keygen -t ed25519 ssh-copy-id user@backup-hostMột tập lệnh, không phải một dòng lệnh trong crontab. Dễ kiểm tra hơn, dễ ghi nhật ký hơn:
#!/bin/bash LOG=/var/log/rsync-backup.log rsync -az --delete /etc/ user@backup:/backups/$(hostname)/etc/ >> "$LOG" 2>&1Đặt quyền thực thi bằng
chmod +x.Một mục cron để chạy nó. Chỉnh sửa bằng
crontab -e:0 2 * * * /usr/local/bin/rsync-backup.shĐiều này sẽ chạy tập lệnh mỗi đêm vào lúc 02:00.
Hai cải tiến đáng thực hiện trong môi trường sản xuất: bao bọc skript trong flock để công việc chạy lâu không trùng lặp với lần chạy vào đêm tiếp theo, và chuyển đầu ra qua logger để các lỗi được ghi vào nhật ký hệ thống, nơi các công cụ giám sát có thể phát hiện chúng.
Những suy nghĩ cuối cùng
Rsync là một trong số ít các công cụ Linux mà thời gian dành để tìm hiểu các cờ (flags) sẽ mang lại kết quả gần như ngay lập tức. Các điểm chính:
- Chuyển dữ liệu theo từng phần và hỗ trợ tiếp tục giúp rsync trở thành lựa chọn phù hợp cho bất kỳ tác vụ nào bạn thực hiện nhiều lần
-ađối với chế độ lưu trữ,-zđối với nén,-Pcho việc tiếp tục và theo dõi tiến trình,--deletecho việc tạo bản sao chính xác- Hãy chú ý đến dấu gạch chéo ở cuối đường dẫn nguồn, đặc biệt là với
--delete - Kết hợp với cron và khóa SSH để sao lưu theo lịch trình tự động
Đối với các tác vụ sao lưu lớn di chuyển dữ liệu giữa các cơ sở, việc chạy rsync trên một VPS có băng thông không giới hạn có nghĩa là các khung thời gian sao lưu không bị giới hạn bởi giới hạn truyền tải.

Các cấu hình được tối ưu hóa cho việc tối ưu hóa tải công việc trên máy chủ Linux
Cách chọn, áp dụng và tùy chỉnh các cấu hình tối ưu cho máy chủ GPU, cơ sở dữ liệu và máy chủ Linux băng thông cao, kèm theo ví dụ và mẹo triển khai Ansible.
16 phút đọc - 9 tháng 6, 2026
Tối ưu hóa Linux OOM Killer cho VPS: Hướng dẫn thực hành
12 phút đọc - 8 tháng 6, 2026

Bạn có thắc mắc hoặc cần giải pháp tùy chỉnh?
Các tùy chọn linh hoạt
Phạm vi toàn cầu
Triển khai ngay lập tức
Các tùy chọn linh hoạt
Phạm vi toàn cầu
Triển khai ngay lập tức