Nội dung bài viết
#

Rsync là gì? 10 ví dụ sử dụng lệnh rsync trong Linux

Trong bài viết dưới đây, BKHOST sẽ cùng bạn tìm hiểu Rsync là gì? và 10 cách sử dụng lệnh rsync từ cơ bản đến nâng cao, giúp truyền tệp từ xa và cục bộ trong các máy chạy Linux mà không cần phải là người dùng root để chạy lệnh rsync. Ok, hãy cùng bắt đầu ngay thôi nào.

Rsync là gì?

Rsync la gi
Rsync là gì

Rsync (Đồng bộ hóa từ xa) là lệnh được sử dụng phổ biến nhất để sao chép và đồng bộ hóa các tệp và thư mục từ xa cũng như cục bộ trong các hệ thống Linux/Unix.

Với sự trợ giúp của lệnh rsync, bạn có thể sao chép và đồng bộ hóa dữ liệu của mình từ xa và cục bộ trên các thư mục, đĩa và mạng, thực hiện sao lưu dữ liệu và nhân bản giữa hai máy Linux.

Một số ưu điểm và tính năng của lệnh rsync

  • Nó giúp sao chép và đồng bộ hóa hiệu quả các tập tin đến hoặc từ một hệ thống từ xa.
  • Hỗ trợ sao chép liên kết, thiết bị, chủ sở hữu, nhóm và quyền.
  • Nó nhanh hơn scp (Bản sao an toàn) vì rsync sử dụng giao thức cập nhật từ xa cho phép chỉ chuyển sự khác biệt giữa hai tập hợp tệp. Lần đầu tiên, nó sao chép toàn bộ nội dung của một tệp hoặc một thư mục từ nguồn đến đích nhưng từ lần sau, nó chỉ sao chép các khối và byte đã thay đổi tới đích.
  • Rsync tiêu thụ ít băng thông hơn vì nó sử dụng phương pháp nén và giải nén trong quá trình gửi và nhận dữ liệu ở cả hai đầu.

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS0}}
{{EJS0}}
{{EJS0}}

Một số tùy chọn phổ biến được sử dụng với lệnh rsync

  • -v: chi tiết
  • -r: sao chép dữ liệu một cách đệ quy (nhưng không bảo toàn dấu thời gian và quyền trong khi truyền dữ liệu.)
  • -a: chế độ lưu trữ, cho phép sao chép các tệp một cách đệ quy và nó cũng lưu giữ các liên kết tượng trưng, quyền đối với tệp, quyền sở hữu của người dùng và nhóm và dấu thời gian.
  • -z: nén dữ liệu tập tin.
  • -h: hỗ trợ đầu ra ở định dạng mà con người có thể đọc được

Cài đặt Rsync trong hệ thống Linux

cai dat Rsync trong he thong linux

Nhờ vào sự hỗ trợ bằng lệnh sau đây của Linux mà bạn có thể cài đặt được gói rsync vào hệ thống của mình.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS1}}
{{EJS1}}
{{EJS1}}

1. Sao chép / đồng bộ hóa tệp và thư mục cục bộ

Sao chep dong bo hoa tep va thu muc cuc bo

Sao chép / đồng bộ hóa tệp trên máy tính cục bộ

Lệnh sau sẽ đồng bộ một tệp trên máy cục bộ từ vị trí này sang vị trí khác.

Trong ví dụ này, tên tệp backup.tar cần được sao chép hoặc đồng bộ hóa với /tmp/backups/folder.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS2}}
{{EJS2}}
{{EJS2}}
sao chep, dong bo hoa tep tren may tinh cuc bo
Di chuyển tệp nội bộ

Trong ví dụ trên, bạn có thể thấy rằng nếu điểm đến chưa tồn tại, rsync sẽ tự động tạo một thư mục cho điểm đến.

Sao chép / đồng bộ hóa một thư mục trên máy tính cục bộ

Lệnh sau sẽ chuyển hoặc đồng bộ tất cả các tệp từ một thư mục sang một thư mục khác trong cùng một máy.

Trong ví dụ này, /root/rpmpkgs chứa một số tệp gói rpm và bạn muốn thư mục đó được sao chép vào bên trong thư mục /tmp/backups/. Cấu trúc như sau:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS3}}
{{EJS3}}
{{EJS3}}
sao chep, dong bo hoa mot thu muc tren may tinh cuc bo
Di chuyển hư mục cục bộ

2. Sao chép / đồng bộ hóa tệp và thư mục đến hoặc từ máy chủ

Sao chep dong bo hoa tep va thu muc den hoa tu may chu

Sao chép thư mục từ máy chủ cục bộ sang máy chủ từ xa

Lệnh này sẽ đồng bộ hóa một thư mục từ một máy cục bộ sang một máy từ xa.

Ví dụ: có một thư mục trong máy tính cục bộ của bạn “rpmpkgs” chứa một số gói RPM và bạn muốn nội dung của thư mục cục bộ đó gửi đến máy chủ từ xa, bạn có thể sử dụng lệnh sau.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS4}}
{{EJS4}}
{{EJS4}}
sao chep thu muc tu may chu cuc bo sang may chu tu xa
Di chuyển đến máy chủ từ xa

Sao chép / đồng bộ hóa một thư mục từ xa với một máy cục bộ

Lệnh này sẽ giúp bạn đồng bộ hóa một thư mục từ xa với một thư mục cục bộ.

Ở ví dụ sau đây, một thư mục /root/rpmpkgs nằm trên một máy chủ từ xa đang được sao chép vào máy tính cục bộ của bạn trong /tmp/myrpms.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS5}}
{{EJS5}}
{{EJS5}}
sao chep, di chuyen thu muc tu xa den thu muc may tinh cuc bo
Di chuyển thư mục từ xa đến thư mục cục bộ

3. Rsync qua SSH

Bạn còn có thể sử dụng giao thức SSH (Secure Shell) để truyền dữ liệu trong rsync. Bằng việc sử dụng SSH, dữ liệu truyền đi của bạn sẽ luôn đảm bảo an toàn trong quá trình truyền thông qua internet, bởi các dữ liệu sẽ được mã hóa tuyệt đối để không ai có thể đọc được dữ liệu của bạn.

Ngoài ra, khi muốn sử dụng rsync, bạn cần cung cấp mật khẩu user/root để thực hiện tác vụ cụ thể đó, vì vậy việc sử dụng tùy chọn SSH sẽ gửi thông tin đăng nhập của bạn theo cách được mã hóa để mật khẩu của bạn sẽ an toàn.

Sao chép tệp từ máy chủ từ xa sang máy chủ cục bộ bằng SSH

Bạn có thể chủ động chọn giao thức để liên kết với rsync bằng cách sử dụng tùy chọn -e theo sau đó là tên giao thức mà bạn muốn sử dụng.

Sau đây là ví dụ cách sử dụng “ssh” với tùy chọn “-e” để thực hiện truyền dữ liệu.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS6}}
{{EJS6}}
{{EJS6}}
sao chep tep tu xa sang tep cuc bo
Sao chép tệp từ xa sang tệp cục bộ

Sao chép tệp từ máy chủ cục bộ sang máy chủ từ xa bằng SSH

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS7}}
{{EJS7}}
{{EJS7}}
Sao chep tep tu may chu cuc bo sang may chu tu xa bang SSH
Sao chép tệp từ máy cục bộ sang từ xa

4. Hiển thị tiến độ trong khi truyền dữ liệu với rsync

Để hiển thị tiến trình trong khi chuyển dữ liệu từ máy này sang máy khác, chúng ta có thể sử dụng tùy chọn ‘–progress’. Nó hiển thị các tệp và thời gian còn lại để hoàn tất quá trình chuyển.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS8}}
{{EJS8}}
{{EJS8}}
hien thi tien do trong qua trinh truyen tep
Hiển thị tiến độ trong quá trình truyền tệp

5. Sử dụng các tùy chọn –include và –exclude

Hai tùy chọn này hỗ trợ người dùng thực hiện bao gồm hoặc loại trừ các tệp bằng cách chỉ định các thông số cụ thể. Tùy chọn này giúp người dùng chỉ định các tệp hoặc thư mục mà họ muốn đưa vào đồng bộ hóa của mình và loại trừ các tệp và thư mục mà họ không muốn chuyển.

Tại ví dụ sau đây, lệnh rsync sẽ chỉ bao gồm các tệp và thư mục bắt đầu bằng ‘R’ và loại trừ tất cả các tệp và thư mục khác.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS9}}
{{EJS9}}
{{EJS9}}
su dung cac tuy chon –include va –exclude
Rsync bao gồm và loại trừ tệp

6. Sử dụng –delete Option

Nếu một tệp hoặc thư mục không tồn tại ở nguồn, nhưng đã tồn tại ở đích, bạn có thể xóa tệp / thư mục hiện có đó tại đích trong khi đồng bộ hóa.

Bạn có thể sử dụng tùy chọn ‘– delete‘ để xóa các tệp không có trong thư mục nguồn.

Hãy tạo một tệp mới, trong ví dụ này là tệp test.txt tại địch sau khi tệp ở nguồn và đích đã được đồng bộ hóa.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS10}}
{{EJS10}}
{{EJS10}}

Target có tệp mới là test.txt, khi đồng bộ hóa với nguồn bằng tùy chọn ‘–delete‘, thì tệp test.txt ở thư mục đích đã được xóa đi.

Su dung –delete Option
Sử dụng tùy chọn Delete

7. Đặt kích thước tối đa của tệp sẽ được truyền

Để truyền hoặc đồng bộ hóa những tệp có kích thước tối đa theo mong muốn của bạn, hãy sử dụng tùy chọn “– max size”.

Ở đây trong ví dụ này, kích thước tệp tối đa là 200k, vì vậy lệnh này sẽ chỉ chuyển những tệp bằng hoặc nhỏ hơn 200k.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS11}}
{{EJS11}}
{{EJS11}}
dat kich thuoc toi da cua tep se duoc truyen
Truyền dữ liệu với kích thước tối đa được chỉ định

8. Tự động xóa các tệp nguồn sau khi chuyển thành công

Bây giờ, giả sử bạn có máy chủ web chính và máy chủ sao lưu dữ liệu, bạn đã tạo bản sao lưu hàng ngày và đồng bộ hóa nó với máy chủ sao lưu của mình, bây giờ bạn không muốn giữ bản sao lưu cục bộ đó trong máy chủ web của mình.

Nếu như trước đó, bạn chờ cho quá trình đồng bộ hóa diễn ra hoàn tất sau đó xóa từng tệp đã được sao lưu đó trên máy chủ web của mình bằng cách thủ công. Thì giờ đây rsync hỗ trợ bạn tùy chọn xóa tự động là ‘–remove-source-files‘ để hỗ trợ xóa các tệp sau khi đã đồng bộ.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS12}}
{{EJS12}}
{{EJS12}}
tu dong xoa cac tep nguon sau khi chuyen thanh cong
Xóa tự động các thư mục sau khi đồng bộ hóa

9. Dry Run với rsync

Việc sử dụng rsync đối với người dùng mới cũng không phải là dễ dàng, nó có thể khiến bạn trở nên nhọc nhằn vì không biết chính xác ý nghĩa của câu lệnh. Tình trạng này dễ dẫn đến việc các thư mục đích của bạn sẽ bị rối ren, và chắc hẳn không ai muốn làm công việc hoàn tác sau đó.

Do đó, khi chạy bất kỳ lệnh nào bạn có thể thêm tùy chọn ‘–dry-run‘ này, nó sẽ không làm thay đổi bất kỳ tệp nào, bạn có thể kiểm tra tính chính xác của câu lệnh bằng kết quả trả về. Nếu câu lệnh đã cho đầu ra như ý bạn muốn, bạn có thể xóa ‘–dry-run‘ khỏi lệnh của mình và chạy lần cuối.

Cú pháp như sau:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS13}}
{{EJS13}}
{{EJS13}}
tuy chon dryrun voi rsync
Tùy chọn Dryrun với rsync

10. Rsync đặt giới hạn băng thông và chuyển tệp

Ngoài ra nó còn hỗ trợ thiết lập giới hạn băng thông trong khi truyền dữ liệu từ máy này sang máy khác với sự trợ giúp của tùy chọn ‘–bwlimit‘. Tùy chọn này giúp người dùng giới hạn lượng băng thông Input/Output.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS14}}
{{EJS14}}
{{EJS14}}

Theo mặc định thì rsync chỉ đồng bộ hóa các khối hoặc các byte đã được thay đổi, trong trường hợp bạn muố thay đổi toàn bộ tệp một cách rõ ràng, thì tùy chọn “-W” sẽ là lựa chọn hoàn hảo cho bạn.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{EJS15}}
{{EJS15}}
{{EJS15}}

Tổng kết về Rsync

Đó là tất cả những gì mà Rsync có thể mang đến cho bạn, giờ đây bạn có thể chuyển hoặc đồng bộ hóa dữ liệu theo nhiều hình thức khác nhau một cách linh hoạt và chủ động hơn.

Nếu bạn còn gì thắc mắc về lệnh rsync hay các câu lệnh khác trong Linux, hãy để lại bình luận ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Mua tên miền .COM tại BKHOST

BKHOST cam kết giá tốt. Kiểm tra tên miền .COM đẹp và đăng kí ngay hôm nay!

đăng kí tên miền com

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận
Trượt lên đầu trang
Miễn phí cước gọi
Bạn đã hài lòng với trải nghiệm trên Bkhost.vn?
Cảm ơn lượt bình chọn của bạn, Chúc bạn 1 ngày tốt lành !
Close menu