Fast Byte - Thuê VPS Giá Rẻ
VPS & Server

Lệnh Rsync Linux Là Gì? Cách Đồng Bộ File, Thư Mục & Backup Dữ Liệu

Lệnh rsync trong Linux là công cụ dòng lệnh tiêu chuẩn vàng giúp quản trị viên hệ thống và lập trình viên sao chép, đồng bộ dữ liệu nhanh chóng giữa các thư mục cục bộ hoặc giữa hai máy chủ từ xa. Nhờ thuật toán delta-transfer độc đáo chỉ truyền tải những byte dữ […]

Ảnh đại diện Thanh Lam NguyễnThanh Lam Nguyễn18 phút đọc

Lệnh rsync trong Linux là công cụ dòng lệnh tiêu chuẩn vàng giúp quản trị viên hệ thống và lập trình viên sao chép, đồng bộ dữ liệu nhanh chóng giữa các thư mục cục bộ hoặc giữa hai máy chủ từ xa. Nhờ thuật toán delta-transfer độc đáo chỉ truyền tải những byte dữ liệu có sự thay đổi, rsync giúp tiết kiệm tối đa băng thông mạng và rút ngắn thời gian sao lưu vượt bậc so với các lệnh copy truyền thống. Trong bài viết này, đội ngũ kỹ thuật tại ThueVPSGiaRe.vn sẽ hướng dẫn bạn toàn diện từ cú pháp, các cờ tham số quan trọng đến kịch bản ứng dụng rsync thực tế trên máy chủ.

1. Lệnh rsync trong Linux là gì? Cơ chế hoạt động và ưu điểm vượt trội

Lệnh rsync trong Linux là gì? Rsync (viết tắt của Remote Sync) là tiện ích dòng lệnh mã nguồn mở chuyên dùng để sao chép và đồng bộ hóa tập tin, thư mục giữa hai vị trí trên cùng một máy chủ hoặc giữa hai máy chủ qua mạng mạng máy tính. Được phát triển bởi Andrew Tridgell và Paul Mackerras vào năm 1996, rsync hoạt động dựa trên thuật toán đồng bộ vi sai (delta-transfer algorithm) tân tiến.

Trong môi trường quản trị Linux, rsync không đơn thuần là một công cụ copy thay thế cho cp hay scp. Khác biệt cốt lõi nằm ở cách rsync xử lý dữ liệu: khi thực hiện sao chép một tệp đã tồn tại ở phía đích, rsync sẽ băm (hash) tệp tin thành các khối nhỏ (blocks), so sánh checksum giữa nguồn và đích, sau đó chỉ truyền tải những byte dữ liệu thực sự có sự thay đổi. Nếu một tệp dữ liệu dung lượng 10 GB chỉ bị chỉnh sửa vài megabyte, rsync chỉ gửi vài megabyte đó qua đường truyền thay vì chuyển lại toàn bộ 10 GB.

Lệnh rsync trong Linux là gì

Các ưu điểm vượt trội đưa rsync trở thành công cụ sao lưu số 1

Khi so sánh với các phương thức truyền tải dữ liệu truyền thống, rsync sở hữu những lợi thế kỹ thuật không thể thay thế:

  • Bảo toàn siêu dữ liệu (Metadata Preservation): Chế độ lưu trữ (archive mode) của rsync cho phép giữ nguyên vẹn các thuộc tính quan trọng của tệp tin bao gồm quyền phân quyền (permissions), chủ sở hữu (ownership user/group), thời gian chỉnh sửa (timestamps), liên kết mềm (symlinks) và liên kết cứng (hardlinks).
  • Nén dữ liệu động trên đường truyền: Với tùy chọn -z, rsync tự động nén các khối dữ liệu bằng thuật toán zlib trước khi đẩy ra card mạng và giải nén tại máy đích, giúp giảm thiểu đáng kể dung lượng băng thông tiêu thụ.
  • Bảo mật tối đa qua SSH: Rsync không yêu cầu phải mở các cổng daemon không an toàn trên internet. Thay vào đó, công cụ này tận dụng đường hầm bảo mật của giao thức SSH để mã hóa toàn bộ phiên truyền tải tệp.
  • Hỗ trợ tiếp tục truyền tải file dở dang: Khi quá trình đồng bộ các tệp dung lượng lớn bị gián đoạn do sự cố mạng, rsync có thể ghi nhận phần dữ liệu đã gửi và tiếp tục tải tiếp mà không phải copy lại từ đầu.

2. Hướng dẫn cài đặt rsync trên Ubuntu, Debian, CentOS và AlmaLinux

Một nguyên tắc bất di bất dịch khi làm việc với rsync qua mạng: Rsync phải được cài đặt trên cả hai máy chủ (cả máy nguồn gửi dữ liệu và máy đích nhận dữ liệu). Nếu một trong hai đầu thiếu gói phần mềm này, phiên làm việc sẽ lập tức kết thúc với mã lỗi rsync: command not found.

Trước hết, hãy mở terminal và kiểm tra xem hệ điều hành đã có sẵn rsync hay chưa:

rsync --version

Nếu hệ thống chưa nhận diện lệnh, bạn cần cài đặt thông qua trình quản lý gói của từng hệ điều hành. Quá trình này bắt buộc người thao tác phải sở hữu quyền root là gì hoặc được cấp quyền sudo để can thiệp vào các thư mục nhị phân hệ thống:

Cài đặt trên Ubuntu và Debian

sudo apt update
sudo apt install rsync -y

Cài đặt trên CentOS, RHEL, Rocky Linux và AlmaLinux

Đối với CentOS 7 cũ, bạn sử dụng yum; đối với CentOS Stream, Rocky Linux hoặc AlmaLinux 8/9, hãy dùng dnf:

# Dành cho CentOS 7
sudo yum install rsync -y

# Dành cho AlmaLinux, Rocky Linux, RHEL 8/9
sudo dnf install rsync -y

VPS Linux Giá Rẻ

SSD NVMe U.2, Băng thông không giới hạn

Cần máy chủ backup dữ liệu ổn định với tốc độ đọc/ghi cao?

Đồng bộ hàng chục GB dữ liệu qua rsync luôn đòi hỏi ổ cứng tốc độ cao và đường truyền mạng không bị bóp băng thông. Thuê VPS giá rẻ tại Fast Byte với ổ SSD NVMe U.2 chuyên dụng, port 100 Mbps và toàn quyền root chỉ từ 50K/tháng sẽ là giải pháp máy chủ backup lý tưởng cho bạn.

Tham khảo gói VPS chỉ từ 50K

3. Cú pháp cơ bản và bảng tổng hợp tham số rsync quan trọng nhất

Theo chuẩn tài liệu chính thức man rsync, cấu trúc câu lệnh rsync bao gồm 3 dạng thức vận hành chính:

# 1. Đồng bộ cục bộ trên cùng một máy (Local to Local)
rsync [OPTIONS] NGUỒN ĐÍCH

# 2. Đẩy dữ liệu từ máy cục bộ lên máy chủ từ xa (Local to Remote - Push)
rsync [OPTIONS] NGUỒN user@remote_host:ĐÍCH

# 3. Kéo dữ liệu từ máy chủ từ xa về máy cục bộ (Remote to Local - Pull)
rsync [OPTIONS] user@remote_host:NGUỒN ĐÍCH
Tham số Tên đầy đủ Mô tả chức năng chi tiết
-a –archive Chế độ lưu trữ tổng hợp (-rlptgoD): đệ quy thư mục, bảo lưu quyền, user/group, timestamp, symlink.
-v –verbose Hiển thị chi tiết danh sách tệp tin và trạng thái tiến trình xử lý ra màn hình terminal.
-z –compress Nén các khối dữ liệu trong quá trình truyền tải mạng giúp tiết kiệm băng thông.
-h –human-readable Định dạng các thông số dung lượng theo đơn vị thân thiện (K, M, G thay vì byte thuần túy).
-P –partial –progress Kết hợp hiển thị thanh tiến trình (%) và giữ lại file tải dở để có thể resume khi gặp sự cố.
-e –rsh=COMMAND Chỉ định giao thức kết nối từ xa (phổ biến nhất là khai báo port SSH tùy chỉnh).
–delete –delete Tự động xóa các tệp tin tại thư mục đích nếu chúng không còn tồn tại ở thư mục nguồn.
–exclude –exclude=PATTERN Bỏ qua các tệp tin hoặc thư mục khớp với mẫu khai báo (như *.log, node_modules).
-n –dry-run Chạy mô phỏng thử nghiệm, hiển thị các hành động sẽ diễn ra nhưng không thay đổi dữ liệu thật.

Quy tắc vàng: Bẫy dấu gạch chéo cuối dòng (Trailing Slash)

Đây là lỗi kinh điển khiến rất nhiều quản trị viên hệ thống tạo ra các cấu trúc thư mục lồng nhau ngoài ý muốn. Trong rsync, sự hiện diện của dấu gạch chéo / ở cuối đường dẫn nguồn mang ý nghĩa quyết định:

  • CÓ dấu gạch chéo ở nguồn (/var/www/html/): Rsync hiểu rằng bạn muốn copy toàn bộ nội dung bên trong thư mục html đổ thẳng vào thư mục đích, không tạo thêm thư mục cha html.
  • KHÔNG CÓ dấu gạch chéo ở nguồn (/var/www/html): Rsync sẽ copy chính bản thân thư mục html cùng tất cả dữ liệu bên trong đặt vào thư mục đích (kết quả tại đích sẽ là /dest/html/).

4. 7 Ví dụ thực hành lệnh rsync từ cơ bản đến nâng cao

Để làm chủ rsync, bạn hãy thực hành trực tiếp qua 7 tình huống thực tế thường gặp nhất trong vận hành máy chủ Linux.

Ví dụ 1: Sao chép dữ liệu cục bộ giữa hai thư mục trên cùng một máy chủ

Tổ hợp cờ kinh điển -avzh (archive, verbose, compress, human-readable) là tiêu chuẩn thường dùng nhất:

rsync -avzh /home/source_data/ /mnt/backup_disk/

Ví dụ 2: Đồng bộ dữ liệu lên máy chủ từ xa qua SSH (Push)

Bản chất của việc đẩy dữ liệu lên máy chủ từ xa là rsync sẽ khởi tạo một kênh truyền qua SSH để mã hóa các gói tin truyền qua mạng internet:

rsync -avzhP /var/www/mywebsite/ [email protected]:/var/www/mywebsite/

Cờ -P sẽ hiển thị tốc độ truyền tải tệp theo thời gian thực (KB/s, MB/s) và thanh đo phần trăm tiến độ từng tệp tin.

Ví dụ 3: Kéo dữ liệu từ VPS từ xa về máy tính cục bộ (Pull)

Khi bạn cần tải bản backup cơ sở dữ liệu hoặc thư mục mã nguồn từ máy chủ ảo về máy trạm cá nhân, đây là một trong những phương pháp an toàn nhất thay thế cho các giải pháp copy file từ pc vào vps thủ công:

rsync -avzh [email protected]:/backup/database_daily.sql /home/user/local_backups/

Ví dụ 4: Kết nối qua cổng SSH tùy chỉnh (Custom SSH Port)

Vì lý do bảo mật chống scan mật khẩu, các quản trị viên thường đổi port SSH mặc định từ 22 sang một port ngẫu nhiên (ví dụ port 2222). Để rsync nhận diện đúng port, bạn khai báo qua cờ -e:

rsync -avzh -e 'ssh -p 2222' /var/log/ [email protected]:/remote_logs/

Ví dụ 5: Kiểm tra mô phỏng an toàn với tùy chọn –dry-run (-n)

Trước khi thực hiện các tác vụ đồng bộ phức tạp trên hệ thống production, hãy luôn chạy lệnh kèm cờ --dry-run (hoặc -n). Rsync sẽ quét toàn bộ danh sách tệp, in ra màn hình những hành động nó dự kiến làm nhưng không hề sửa đổi một byte dữ liệu nào:

rsync -avzh --dry-run /var/www/html/ /var/www/backup_html/

Ví dụ 6: Đồng bộ chính xác 1:1 với cờ –delete

Theo mặc định, rsync chỉ thêm mới hoặc cập nhật các tệp có sự thay đổi. Nếu một tệp bị xóa ở thư mục nguồn, nó vẫn sẽ tồn tại ở thư mục đích. Để biến thư mục đích thành một bản gương (mirror) phản chiếu chính xác 100% thư mục nguồn, bạn bổ sung tùy chọn --delete:

rsync -avzh --delete /var/www/html/ /backup/mirror_html/

CẢNH BÁO NGUY HIỂM: Tùy chọn --delete có thể xóa sạch các tập tin quan trọng tại đích nếu bạn khai báo nhầm đường dẫn nguồn hoặc thiếu dấu gạch chéo. Luôn chạy thử lệnh với --dry-run trước khi thực thi lệnh thật có chứa --delete.

Ví dụ 7: Bỏ qua các tệp tin và thư mục rác với –exclude

Khi đồng bộ mã nguồn website Node.js hoặc Laravel, bạn không cần thiết phải chuyển các thư mục cache nặng nề hay dependencies. Rsync cung cấp tham số --exclude để lọc bỏ các định dạng này:

rsync -avzh --exclude 'node_modules' --exclude '*.log' --exclude '.git' /project/ /backup/project/

Hạ Tầng Tối Ưu

CPU Intel Gold, Port 100 Mbps ổn định

Khởi tạo máy chủ riêng để đồng bộ dữ liệu an toàn

Các kịch bản rsync đồng bộ liên tục giữa các server đòi hỏi đường truyền mạng nội địa độ trễ thấp và băng thông không giới hạn. Dịch vụ VPS giá rẻ tại Fast Byte giúp bạn thiết lập một node lưu trữ độc lập, toàn quyền kiểm soát firewall và port SSH chỉ từ 50K/tháng.

Khám phá bảng giá VPS Fast Byte

5. So sánh chi tiết Rsync và SCP: Khi nào nên sử dụng?

Trong hệ sinh thái các tiện ích mạng Linux, SCP (Secure Copy) và Rsync thường xuyên được đưa lên bàn cân so sánh vì cả hai đều tận dụng giao thức SSH để truyền tải tập tin. Tuy nhiên, kiến trúc bên dưới của chúng có sự phân hóa rõ ràng.

Tiêu chí so sánh Rsync (Remote Sync) SCP (Secure Copy) Khuyến nghị thực tế
Cơ chế truyền tải Đồng bộ vi sai (chỉ truyền phần file thay đổi). Sao chép tuyến tính toàn bộ tệp từ đầu đến cuối. Rsync tiết kiệm băng thông vượt trội khi dữ liệu lặp lại.
Khả năng Resume Có (hỗ trợ cờ -P hoặc --partial). Không hỗ trợ (rớt mạng phải truyền lại từ byte đầu). Bắt buộc dùng Rsync đối với các tệp nặng trên 1 GB.
Bảo toàn thuộc tính Toàn diện (Permissions, Owner, Group, Symlink). Hạn chế (chỉ hỗ trợ giữ timestamp và mode cơ bản qua -p). Rsync là lựa chọn số 1 khi backup toàn bộ hệ thống file.
Môi trường cài đặt Bắt buộc cả hai máy nguồn và đích phải cài rsync. Chỉ cần máy đích có dịch vụ SSH server (OpenSSH). SCP tiện lợi hơn khi cần copy nhanh 1 file vào máy lạ.

So sánh chi tiết Rsync và SCP

6. Ứng dụng rsync trong quản trị máy chủ: Backup tự động và migrate website

Bên cạnh việc nắm rõ các lệnh linux cơ bản để quản lý tiến trình và phân quyền, việc kết hợp rsync vào các kịch bản tự động hóa là kỹ năng bắt buộc của một DevOps Engineer.

Kịch bản tự động hóa sao lưu dữ liệu máy chủ hàng đêm

Áp dụng chiến lược cách backup dữ liệu vps định kỳ, bạn có thể tạo một bash script đơn giản mang tên /root/auto_backup.sh để tự động chuyển dữ liệu sang máy chủ backup chuyên dụng:

#!/bin/bash
BACKUP_DATE=$(date +%Y-%m-%d)
SOURCE_DIR="/var/www/mywebsite/public_html/"
REMOTE_SERVER="[email protected]"
DEST_DIR="/data/backups/$BACKUP_DATE/"

# Thuc thi dong bo du lieu qua SSH
rsync -avz -e 'ssh -p 22' --delete "$SOURCE_DIR" "$REMOTE_SERVER:$DEST_DIR" >> /var/log/rsync_backup.log 2>&1

Sau khi cấp quyền thực thi (chmod +x /root/auto_backup.sh), bạn tiến hành cấu hình bảng lập lịch tiến trình nền thông qua cron job là gì để script chạy tự động vào lúc 02:00 sáng mỗi ngày:

# Mo crontab bang lenh: crontab -e
0 2 * * * /bin/bash /root/auto_backup.sh >/dev/null 2>&1

Chuyển dữ liệu website dung lượng lớn giữa hai VPS không gián đoạn

Khi bạn nâng cấp hạ tầng hoặc áp dụng kỹ thuật cách chuyển website sang vps mới, việc tải nén tệp zip rồi chuyển qua FTP thường rất chậm và dễ bị lỗi timeout. Với rsync, bạn có thể thực hiện đồng bộ đợt một khi web cũ vẫn đang hoạt động. Đến thời điểm chuyển DNS, bạn chỉ cần chạy lại lệnh rsync một lần nữa, quá trình đồng bộ vi sai sẽ hoàn tất phần chênh lệch chỉ trong vài giây, giúp website chuyển đổi mà không có downtime.

Xử lý rớt mạng khi truyền tệp lớn: Đưa tiến trình rsync vào Screen

Nếu bạn phải đồng bộ một thư mục media nặng hàng trăm GB qua mạng, việc giữ cửa sổ terminal SSH mở liên tục trong nhiều giờ tiềm ẩn rủi ro mạng chập chờn làm hủy tiến trình. Giải pháp chuẩn là khởi chạy một phiên làm việc độc lập thông qua lệnh screen trong linux:

# 1. Khoi tao mot screen session moi mang ten 'migration'
screen -S migration

# 2. Chay lenh rsync voi tuy chon tiep tuc file do dang
rsync -avzP /var/data/ root@remote_server:/var/data/

# 3. Nhan Ctrl + A sau do nhan D de detach (thoat ra ngoai ma tien trinh van chay ngam)

7. 4 Lỗi thường gặp khi chạy lệnh rsync và cách xử lý

Trong quá trình vận hành thực tế, bạn có thể gặp phải một số thông báo lỗi phổ biến sau:

1. rsync: command not found

  • Nguyên nhân: Máy chủ từ xa (remote host) chưa được cài đặt gói rsync. Nhiều người thường lầm tưởng chỉ cần máy cục bộ có rsync là đủ.
  • Khắc phục: SSH vào máy chủ từ xa và chạy lệnh apt install rsync hoặc dnf install rsync.

2. rsync: failed to set permissions… Operation not permitted (code 23)

  • Nguyên nhân: Người dùng thực thi rsync không có quyền ghi đè quyền sở hữu (owner/group) tại thư mục đích, hoặc hệ thống tệp đích (như NTFS/FAT32) không hỗ trợ quyền phân quyền kiểu Linux.
  • Khắc phục: Chạy lệnh dưới quyền root/sudo, hoặc thay thế cờ -a bằng tổ hợp -rltD (bỏ qua cờ -p giữ permissions và -o -g giữ owner).

3. ssh: connect to host … port 22: Connection refused

  • Nguyên nhân: Máy chủ đích sử dụng cổng SSH khác mặc định hoặc tường lửa (UFW/Iptables) đang chặn IP kết nối đến port SSH.
  • Khắc phục: Kiểm tra lại chính xác port SSH của máy đích và bổ sung tham số -e 'ssh -p PORT' vào câu lệnh.

4. Lỗi cấu trúc thư mục lồng nhau do thiếu dấu gạch chéo

  • Triệu chứng: Bạn muốn đồng bộ nội dung vào /var/www/html/ nhưng kết quả lại thành /var/www/html/html/.
  • Khắc phục: Luôn thêm dấu gạch chéo / vào cuối đường dẫn thư mục nguồn (ví dụ: /var/www/html/) khi bạn chỉ muốn truyền tải nội dung bên trong.

Hỗ Trợ Kỹ Thuật

Khởi tạo nhanh chóng, sẵn sàng bàn giao

Trải nghiệm VPS Linux tốc độ cao tại Fast Byte

Dù bạn cần một máy chủ để chạy web chính thức hay một VPS phụ để lưu trữ dữ liệu rsync từ xa, Fast Byte cung cấp đầy đủ các bản phân phối Linux phổ biến (Ubuntu, Debian, AlmaLinux) với đường truyền mạng nội địa mạnh mẽ và chi phí tối ưu nhất.

Bắt đầu với VPS 50K/tháng

8. Câu hỏi thường gặp về rsync (FAQ)

1. Lệnh rsync khác gì so với lệnh cp thông thường trong Linux?

Lệnh cp luôn sao chép toàn bộ tệp tin từ đầu và chỉ hoạt động cục bộ trên một máy. Ngược lại, rsync có thể truyền dữ liệu qua mạng qua SSH, hỗ trợ thuật toán đồng bộ vi sai chỉ copy các khối dữ liệu thay đổi, giúp tiết kiệm thời gian và băng thông khi sao lưu định kỳ.

2. Dấu gạch chéo (/) ở cuối đường dẫn nguồn trong rsync có ý nghĩa gì?

Dấu gạch chéo cuối đường dẫn nguồn xác định phạm vi sao chép: /src/ (có dấu /) nghĩa là chỉ copy toàn bộ nội dung nằm bên trong thư mục src vào đích; còn /src (không có dấu /) sẽ copy chính thư mục src vào trong thư mục đích.

3. Cờ –delete trong rsync hoạt động như thế nào và có nguy hiểm không?

Cờ --delete yêu cầu rsync xóa các tệp ở phía đích nếu chúng không còn tồn tại ở nguồn, giúp tạo bản sao mirror 1:1. Tùy chọn này rất nguy hiểm nếu bạn chỉ định nhầm thư mục. Bạn luôn phải chạy thử lệnh cùng --dry-run trước để đảm bảo không xóa nhầm dữ liệu.

4. Làm thế nào để rsync tiếp tục tải file dở dang khi bị mất kết nối mạng?

Bạn sử dụng tham số -P (viết tắt của --partial --progress). Tùy chọn --partial giữ lại các khối tệp tin đã tải một phần thay vì xóa đi khi ngắt kết nối, cho phép lệnh rsync kế tiếp tự động nối tiếp phần dữ liệu còn lại.

5. Làm sao để chạy rsync qua cổng SSH khác mặc định (khác port 22)?

Bạn sử dụng tùy chọn -e để truyền tham số dòng lệnh cho chương trình remote shell. Ví dụ, để chỉ định cổng kết nối SSH là 2222, bạn thêm đoạn tham số -e 'ssh -p 2222' vào câu lệnh rsync.

Tổng kết

Làm chủ lệnh rsync trong Linux là bước đệm then chốt giúp bạn xây dựng hệ thống sao lưu dữ liệu vững chắc, tự động hóa quy trình triển khai ứng dụng và tối ưu hóa thời gian di chuyển dữ liệu máy chủ. Hãy luôn nhớ hai quy tắc an toàn cốt lõi: kiểm tra kỹ dấu gạch chéo cuối thư mục và luôn dùng --dry-run trước khi thực thi các lệnh đồng bộ quan trọng.

Cần một VPS Linux giá rẻ để thử nghiệm backup rsync?

Sở hữu ngay máy chủ ảo cấu hình mạnh mẽ, ổ cứng NVMe U.2 siêu tốc độ và toàn quyền root chỉ từ 50K/tháng.

Xem bảng giá VPS Fast Byte

Lưu ý kỹ thuật: Lệnh rsync can thiệp trực tiếp vào cấu trúc tệp tin và có thể ghi đè hoặc xóa dữ liệu vĩnh viễn (đặc biệt khi dùng tùy chọn –delete). Quản trị viên luôn được khuyến cáo chạy thử nghiệm với tùy chọn –dry-run trước khi thực thi lệnh chính thức trên môi trường production, đồng thời duy trì bản sao lưu độc lập để phòng ngừa rủi ro sai sót thao tác.

Chia sẻ: Facebook LinkedIn
Quay lại trang blog

Bài viết liên quan