Nội dung bài viết
#

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

Nội dung bài viết

    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

    {{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.

    {{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.

    {{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:

    {{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.

    {{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.

    {{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.

    {{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

    {{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.

    {{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.

    {{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.

    {{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.

    {{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ộ.

    {{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:

    {{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.

    {{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.

    {{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.

    Thuê Cloud VPS Cao Cấp tại BKHOST

    Giảm giá cực sâu, chất lượng hàng đầu. Đăng ký ngay hôm nay:

    thuê máy chủ ảo vps

    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
    Chat ngay qua Zalo
    Chat ngay qua Messenger
    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 !