#

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.

Đăng ký tên miền .COM giá siêu rẻ

BKHOST đang có chương trình khuyến mãi cực shock dành cho khách hàng đăng ký mới tên miền .COM:

  • Giá gốc 340k.
  • Giảm giá chỉ còn 265k/năm đầu.

Đừng để đối thủ lấy mất thương hiệu của bạn trên internet. Đăng ký ngay hôm nay:

tên miền .com giá rẻ

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

# rsync options source destination

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.

$ sudo apt-get install rsync [On Debian/Ubuntu & Mint]
$ pacman -S rsync [On Arch Linux]
$ emerge sys-apps/rsync [On Gentoo]
$ sudo dnf install rsync [On Fedora/CentOS/RHEL and Rocky Linux/AlmaLinux]
$ sudo zypper install rsync [On openSUSE]

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.

[root@tecmint]# rsync -zvh backup.tar.gz /tmp/backups/ created directory /tmp/
backups backup.tar.gz
sent 224.54K bytes received 70 bytes 449.21K bytes/sec total size is 224.40K speedup is 1.00

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:

[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/ sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 3.47M bytes received 96 bytes 2.32M bytes/sec
total size is 3.74M speedup is 1.08

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.

[root@tecmint:~]# rsync -avzh /root/rpmpkgs root@192.168.0.141:/root/
The authenticity of host '192.168.0.141 (192.168.0.141)' can't be established.
ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.141' (ED25519) to the list of known hosts.
root@192.168.0.141's password:
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 3.74M bytes received 96 bytes 439.88K bytes/sec
total size is 3.74M speedup is 1.00

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.

[root@tecmint:~]# rsync -avzh root@192.168.0.141:/root/rpmpkgs /tmp/myrpms
root@192.168.0.141's password:
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
sent 104 bytes received 3.49M bytes 997.68K bytes/sec
total size is 3.74M speedup is 1.07

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.

[root@tecmint:~]# rsync -avzhe ssh root@192.168.0.141:/root/anaconda-ks.cfg /tmp
root@192.168.0.141's password:
receiving incremental file list
anaconda-ks.cfg
sent 43 bytes received 1.10K bytes 325.43 bytes/sec
total size is 1.90K speedup is 1.67

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

[root@tecmint:~]# rsync -avzhe ssh backup.tar.gz root@192.168.0.141:/backups/
root@192.168.0.141's password:
sending incremental file list
created directory /backups
backup.tar.gz
sent 224.59K bytes received 66 bytes 64.19K bytes/sec
total size is 224.40K speedup is 1.00

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.

[root@tecmint:/]# rsync -avzhe ssh --progress /root/rpmpkgs root@192.168.0.141:/root/rpmpkgs
root@192.168.0.141's password:
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
1.47M 100% 31.80MB/s 0:00:00 (xfr#1, to-chk=3/5)
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
138.01K 100% 2.69MB/s 0:00:00 (xfr#2, to-chk=2/5)
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
2.01M 100% 18.45MB/s 0:00:00 (xfr#3, to-chk=1/5)
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
120.48K 100% 1.04MB/s 0:00:00 (xfr#4, to-chk=0/5)
sent 3.74M bytes received 96 bytes 1.50M bytes/sec
total size is 3.74M speedup is 1.00

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.

[root@tecmint:/]# rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.141:/var/lib/rpm/ /root/rpm
root@192.168.0.141's password:
receiving incremental file list
created directory /root/rpm
./
Requirename
sent 61 bytes received 273,074 bytes 60,696.67 bytes/sec
total size is 761,856 speedup is 2.79

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.

[root@tecmint:~]# cd /root/rpm/
[root@tecmint:~/rpm]# touch test.txt
[root@tecmint:~/rpm]# rsync -avz --delete root@192.168.0.151:/var/lib/rpm/ /root/rpm/
root@192.168.0.151's password:
receiving incremental file list
deleting test.txt
./
.dbenv.lock
.rpm.lock
Basenames
Conflictname
Dirnames
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Packages
Providename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.001
__db.002
__db.003
sent 445 bytes received 18,543,954 bytes 2,472,586.53 bytes/sec
total size is 71,151,616 speedup is 3.84

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.

[root@tecmint:~]# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ root@192.168.0.151:/root/tmprpm
root@192.168.0.151's password:
sending incremental file list
created directory /root/tmprpm
./
.dbenv.lock
.rpm.lock
Conflictname
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Recommendname
Requirename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.002
sent 129.52K bytes received 396 bytes 28.87K bytes/sec
total size is 71.15M speedup is 547.66

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

[root@tecmint:~]# rsync --remove-source-files -zvh backup.tar.gz root@192.168.0.151:/tmp/backups/
root@192.168.0.151's password:
backup.tar.gz
sent 795 bytes received 2.33K bytes 894.29 bytes/sec
total size is 267.30K speedup is 85.40
[root@tecmint:~]# ls -l backup.tar.gz

ls: cannot access 'backup.tar.gz': No such file or directory

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:

[root@tecmint:~]# rsync --dry-run --remove-source-files -zvh backup.tar.gz root@192.168.0.151:/tmp/backups/

root@192.168.0.151's password:
backup.tar.gz

sent 50 bytes received 19 bytes 19.71 bytes/sec
total size is 267.30K speedup is 3,873.97 (DRY RUN)

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.

[root@tecmint]# rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ root@192.168.0.151:/root/tmprpm/
root@192.168.0.151's password:
sending incremental file list
sent 324 bytes received 12 bytes 61.09 bytes/sec
total size is 38.08M speedup is 113347.05

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.
[root@tecmint]# rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes received 31 bytes 3.27M bytes/sec
total size is 16.18M speedup is 1.10

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.

Dịch vụ cho thuê chỗ đặt máy chủ (Colocation)

BKHOST cung cấp dịch vụ cho thuê chỗ đặt server (Colocation) đạt tiêu chuẩn Tier 3 quốc tế:

  • Kết nối ổn định.
  • Hệ thống điện dự phòng sẵn sàng.
  • Hệ thống làm mát 24/24.
  • Hệ thống an toàn cháy nổ.

Cam kết giá tốt nhất thị trường. Đăng ký ngay hôm nay:

colocation

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

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger