Rsync là công cụ đồng bộ hóa dữ liệu mạnh mẽ trên các hệ điều hành Linux và Unix, giúp bạn sao chép, quản lý tệp hiệu quả, đặc biệt là khi làm việc với nhiều máy chủ và lượng dữ liệu lớn. Với khả năng chỉ sao chép những thay đổi thay vì toàn bộ tệp, Rsync tiết kiệm thời gian và băng thông đáng kể. Bài viết này sẽ hướng dẫn chi tiết và tỉ mỉ các trường hợp sử dụng Rsync, từ đồng bộ hóa nội bộ, qua mạng, đến tự động hóa với cronjob, giúp bạn làm chủ công cụ này một cách hiệu quả nhất.

1. Cài đặt Rsync

1.1. Kiểm tra cài đặt Rsync

Trước tiên, hãy kiểm tra xem hệ thống của bạn đã có Rsync hay chưa. Chạy lệnh sau để kiểm tra:

rsync --version

1.2. Cài đặt Rsync trên hệ điều hành Linux

Nếu Rsync chưa được cài đặt, bạn có thể cài đặt bằng lệnh sau trên các hệ điều hành phổ biến:

Ubuntu/Debian:

sudo apt-get install rsync

CentOS/Fedora/RHEL:

sudo yum install rsync

Arch Linux:

sudo pacman -S rsync

2. Cấu trúc cơ bản của Rsync

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

rsync [tùy chọn] nguồn đích
  • nguồn: Thư mục hoặc tệp nguồn.
  • đích: Thư mục hoặc tệp đích.
  • [tùy chọn]: Các tùy chọn giúp kiểm soát hành vi của Rsync, ví dụ như sao chép đệ quy, giữ nguyên quyền truy cập, hoặc xóa tệp ở đích nếu không còn tồn tại ở nguồn.

3. Các trường hợp sử dụng Rsync

3.1. Đồng bộ hóa hai thư mục nội bộ

Khi bạn muốn đồng bộ hóa hai thư mục trên cùng một hệ thống, Rsync là công cụ lý tưởng.

3.1.1. Sao chép toàn bộ thư mục
rsync -av /home/user/source/ /home/user/destination/
  • -a: Đồng bộ toàn bộ thư mục cùng với quyền truy cập và tệp ẩn.
  • -v: Hiển thị thông tin chi tiết quá trình đồng bộ.
3.1.2. Đồng bộ hóa chỉ các tệp đã thay đổi
rsync -av --update /home/user/source/ /home/user/destination/
  • –update: Chỉ sao chép các tệp mới hơn hoặc không tồn tại trong thư mục đích.

3.2. Đồng bộ hóa giữa máy chủ từ xa và máy cục bộ

Rsync hỗ trợ sao chép dữ liệu từ một máy chủ từ xa về máy cục bộ hoặc ngược lại.

3.2.1. Đồng bộ hóa từ máy chủ từ xa về máy cục bộ
rsync -av user@remote_host:/path/to/source/ /local/destination/
3.2.2. Đồng bộ hóa từ máy cục bộ lên máy chủ từ xa
rsync -av /local/source/ user@remote_host:/path/to/destination/

Bạn có thể thêm tùy chọn -e để chỉ định giao thức như SSH:

rsync -av -e ssh /local/source/ user@remote_host:/path/to/destination/

3.3. Xóa các tệp không còn tồn tại ở thư mục nguồn

Khi bạn muốn đồng bộ và đảm bảo rằng các tệp không còn tồn tại ở thư mục nguồn cũng sẽ bị xóa ở thư mục đích, hãy sử dụng tùy chọn –delete.

3.3.1. Xóa tệp trong thư mục đích
rsync -av --delete /home/user/source/ /home/user/destination/

Điều này sẽ xóa các tệp ở thư mục đích nếu chúng không tồn tại ở thư mục nguồn.


3.4. Đồng bộ hóa qua mạng với giới hạn băng thông

Nếu bạn đang sao chép qua mạng và muốn giới hạn băng thông sử dụng, bạn có thể sử dụng tùy chọn –bwlimit.

3.4.1. Giới hạn băng thông sử dụng
rsync -av --bwlimit=1000 /home/user/source/ user@remote_host:/path/to/destination/

Lệnh trên sẽ giới hạn băng thông sử dụng là 1000KB/s.


3.5. Sao chép các tệp lớn với tính năng tiếp tục

Rsync hỗ trợ sao chép các tệp lớn, và trong trường hợp kết nối bị gián đoạn, Rsync có thể tiếp tục từ điểm dừng với tùy chọn –partial.

3.5.1. Sao chép tiếp tục các tệp lớn
rsync -av --partial user@remote_host:/path/to/largefile /local/destination/

4. Sao chép và nén dữ liệu trong quá trình đồng bộ

Rsync cho phép nén dữ liệu khi truyền tải qua mạng với tùy chọn -z. Điều này rất hữu ích khi truyền dữ liệu qua mạng chậm hoặc có băng thông hạn chế.

4.1. Nén dữ liệu khi đồng bộ

rsync -avz /local/source/ user@remote_host:/path/to/destination/
  • -z: Nén dữ liệu trong quá trình truyền tải để giảm dung lượng.

5. Đồng bộ hóa với quyền sở hữu và quyền truy cập tệp

Nếu bạn muốn giữ nguyên quyền sở hữu và quyền truy cập tệp khi đồng bộ hóa, Rsync cung cấp các tùy chọn -p-o.

5.1. Giữ nguyên quyền truy cập tệp

rsync -avp /local/source/ /local/destination/

5.2. Giữ nguyên quyền sở hữu tệp

rsync -avo /local/source/ /local/destination/

6. Đồng bộ hóa với kích thước tệp lớn và nhiều tệp nhỏ

6.1. Sử dụng --inplace khi đồng bộ hóa tệp lớn

Tùy chọn này sẽ giúp Rsync ghi đè trực tiếp lên tệp đích thay vì tạo một bản sao tạm thời, rất hiệu quả với các tệp lớn:

rsync -av --inplace /local/source/ /local/destination/

6.2. Đồng bộ hóa với nhiều tệp nhỏ

Khi đồng bộ hóa nhiều tệp nhỏ, sử dụng tùy chọn –whole-file để không chia tệp thành các khối dữ liệu, giúp tăng tốc độ đồng bộ hóa.

rsync -av --whole-file /local/source/ /local/destination/

7. Đồng bộ hóa bằng cronjob

Để tự động hóa quá trình đồng bộ hóa, bạn có thể tích hợp Rsync vào cronjob để thực hiện theo lịch trình.

7.1. Tạo cronjob chạy Rsync mỗi ngày

Mở tệp cronjob bằng lệnh:

crontab -e

Thêm dòng sau để đồng bộ hóa mỗi ngày vào lúc 2 giờ sáng:

0 2 * * * rsync -av /local/source/ /local/destination/

8. Kiểm tra trước khi thực hiện đồng bộ

Nếu bạn muốn kiểm tra trước những gì sẽ thay đổi mà không thực hiện, sử dụng tùy chọn –dry-run.

8.1. Kiểm tra trước khi đồng bộ

rsync -av --dry-run /local/source/ /local/destination/

Điều này sẽ hiển thị các tệp sẽ được sao chép, xóa, hoặc thay đổi mà không thực sự thực hiện.


Kết luận

Rsync là công cụ mạnh mẽ và linh hoạt cho việc đồng bộ hóa dữ liệu trên các hệ thống Linux và Unix. Từ việc đồng bộ nội bộ đến sao chép dữ liệu giữa các máy chủ từ xa, Rsync cung cấp nhiều tùy chọn để phù hợp với mọi nhu cầu. Bằng cách nắm vững các trường hợp sử dụng và tùy chọn trong Rsync, bạn có thể tối ưu hóa quy trình quản lý và sao lưu dữ liệu của mình một cách hiệu quả.