- Tổng đài 24/7: 1800 646 881
- Đăng nhập
- 3
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 (Đồ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.
{{EJS0}}
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}}
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}}
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.
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}}
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}}
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}}
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.
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}}
{{EJS7}}
Để 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}}
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}}
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.
Để 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}}
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}}
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}}
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}}
Đó 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: