Mục lục [Ẩn]
- Một số ưu điểm và tính năng của lệnh Rsync
- Cú pháp cơ bản của lệnh Rsync
- Cài đặt lệnh Rsync trong hệ thống Linux
- 1. Sao chép và đồng bộ hóa tệp/thư 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ủ
- 3. Lệnh Rsync qua SSH
- 4. Hiển thị tiến trình trong khi truyền dữ liệu bằng lệnh Rsync
- 5. Sử dụng tùy chọn -include và -exclude
- 6. Sử dụng tùy chọn -delete
- 7. Đặt kích thước tối đa của tệp được truyền đi
- 8. Tự động xóa tệp nguồn sau khi chuyển thành công
- 9. Thực hiện Dry Run với lệnh Rsync
- 10. Rsync đặt giới hạn băng thông và truyền tệp
- Kết luận
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.
Bài viết này sẽ giải thích 10 cách sử dụng cơ bản và nâng cao của lệnh Rsync để truyền tệp của bạn từ xa và cục bộ trong các máy chạy Linux. Bạn không cần phải là người dùng root để tiến hành lệnh Rsync.
Một số ưu điểm và tính năng của lệnh Rsync
Nó sao chép và đồng bộ hóa các tập tin đến hoặc từ một hệ thống từ xa một cách hiệu quả.
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 (Sao chép 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 bộ tệp. 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 tiếp theo, nó chỉ sao chép các khối và byte đã thay đổi đến đí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 khi 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 : verbose
-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.
-h : con người có thể đọc được, số đầu ra ở định dạng con người có thể đọc được.
[Bạn cũng có thể thích: Cách đồng bộ hóa tệp/thư mục bằng Rsync với cổng SSH không chuẩn ]
Cài đặt lệnh Rsync trong hệ thống Linux
Chúng tôi có thể cài đặt gói rsync với sự trợ giúp của lệnh sau trong bản phân phối Linux của bạn.
$ Sudo apt-get install rsync [Trên Debian/Ubuntu & Mint]
$ pacman -S rsync [Trên Arch Linux]
$sys-apps/rsync [Trên Gentoo]
floatge$ sudo dnf install rsync [Trên Fedora/CentOS/RHEL và Rocky Linux/AlmaLinux]
$ sudo zypper install rsync [Trên openSUSE ]
1. Sao chép và đồng bộ hóa tệp/thư mục cục bộ
Sao chép/đồng bộ hóa một tệp tại máy tính cục bộ
Lệnh sau sẽ đồng bộ một tệp tin trên máy cục bộ từ vị trí này sang vị trí khác. Ở đây 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 thư mục /tmp/backups/.
[root @ tecmint] # rsync -zvh backup.tar.gz/tmp/backups/
created directory/ tmp/backup
backup.tar.gz
đã gửi 224,54K byte nhận được 70 byte 449,21 nghìn byte/giây
tổng kích thước là 224,40K tốc độ tăng là 1,00
Trong ví dụ trên, bạn có thể thấy rằng nếu điểm nhận chưa tồn tại, Rsync sẽ tự động tạo một thư mục cho nó.
Sao chép, đồng bộ danh 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. Ở đâ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 bên trong thư mục /tmp/backups/.
[root @ tecmint] # rsync -avzh/root/rpmpkgs/tmp/backup/
gửi danh sách tệp tăng dần
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
đã gửi 3,47M byte nhận được 96 byte 2,32M byte/giây
tổng kích thước là 3,74M tốc độ là 1,08
2. Sao chép/đồng bộ hóa tệp và thư mục đến hoặc từ máy chủ
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áy chủ cục bộ 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ột 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/
Tính xác thực của máy chủ '192.168.0.141 (192.168.0.141)'.
Dấu vân tay chính ED25519 là SHA256: bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
Khóa này không được biết bởi bất kỳ tên nào khác
Bạn có chắc chắn muốn tiếp tục kết nối (có/không/[vân tay]) không? có
Cảnh báo: Đã thêm vĩnh viễn '192.168.0.141' (ED25519) vào danh sách các máy chủ đã biết.
Mật khẩu của root@192.168.0.141:
gửi danh sách tệp tăng dần
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
đã gửi 3,74M byte nhận được 96 byte 439,88K byte/giây
tổng kích thước là 3,74M tốc độ là 1,00
Sao chép/đồng bộ hóa danh mục từ xa đến máy cục bộ
Lệnh này sẽ giúp bạn đồng bộ thư mục từ xa với thư mục cục bộ. Ở đây trong ví dụ nà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
Mật khẩu của root@192.168.0.141:
nhận danh sách tệp gia tăng
đã tạo thư mục /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
đã gửi 104 byte nhận được 3,49M byte 997,68K byte/giây
tổng kích thước là 3,74M tốc độ là 1,07
3. Lệnh Rsync qua SSH
Với Rsync, chúng ta có thể sử dụng SSH (Secure Shell) để truyền dữ liệu, sử dụng giao thức SSH trong khi truyền dữ liệu của chúng tôi, bạn có thể được đảm bảo rằng dữ liệu của bạn đang được truyền trong một kết nối an toàn với mã hóa để không ai có thể đọc dữ liệu của bạn trong khi nó đang được truyền qua dây trên Internet.
Ngoài ra, khi chúng tôi sử dụng Rsync, chúng tôi cần cung cấp người dùng/mật khẩu gốc để thực hiện tác vụ cụ thể đó, vì vậy việc sử dụng SSH tùy chọn 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 đảm bảo an toàn.
Sao chép tệp từ máy chủ từ xa sang máy chủ cục bộ có SSH
Để chỉ định giao thức với Rsync, bạn cần cung cấp tùy chọn “-e” cùng tên giao thức bạn muốn sử dụng. Ở đây trong ví dụ này, chúng tôi sẽ sử dụng “SSH” với tùy chọn “-e” và thực hiện truyền dữ liệu.
[root @ tecmint:~] # rsync-avzhe ssh root@192.168.0.141: /root/anaconda-ks.cfg/tmp
Mật khẩu của root@192.168.0.141:
nhận danh sách tệp tăng dần
anaconda-ks.cfg
đã gửi 43 byte đã nhận 1,10K byte 325,43 byte/giây
tổng kích thước là 1,90K tốc độ là 1,67
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/
Mật khẩu của root@192.168.0.141:
gửi danh sách tệp gia tăng
đã tạo thư mục/sao lưu
backup.tar.gz
đã gửi 224,59K byte nhận được 66 byte 64,19K byte/giây
tổng kích thước là 224.40K tốc độ tăng là 1,00
4. Hiển thị tiến trình trong khi truyền dữ liệu bằng lệnh 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.
Mật khẩu của [root@tecmint:/] # rsync -avzhe ssh --progress/root/rpmpkgs root@192.168.0.141: /root/rpmpkgs
root@192.168.0.141:
gửi danh sách tệp tăng dần
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)
đã gửi 3,74M byte đã nhận 96 byte 1,50M byte/giây
tổng kích thước là 3,74M tốc độ là 1,00
5. Sử dụng tùy chọn -include và -exclude
Hai tùy chọn này cho phép bao gồm và loại trừ các tệp bằng cách chỉ định các tham số. Với tùy chọn này giúp chúng tôi chỉ định các tệp hoặc thư mục mà bạn 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à bạn không muốn chuyển.
Ở đây trong ví dụ nà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 --bao gồm mật khẩu của 'R *' --exclude '*' root@192.168.0.141: /var/lib/rpm/ /root/rpm
root@192.168.0.141 :
nhận danh sách tệp gia tăng
được tạo thư mục / root / rpm
./
Tên yêu cầu
đã gửi 61 byte nhận được 273.074 byte 60.696,67 byte/giây
tổng kích thước là 761.856 tốc độ tăng là 2,79
6. Sử dụng tùy chọn -delete
Nếu tệp hoặc thư mục không tồn tại tại nguồn, nhưng đã tồn tại ở đích, bạn có thể muốn xóa tệp/thư mục hiện có đó tại đích trong khi đồng bộ hóa.
Chúng ta 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.
Nguồn và đích được đồng bộ hóa. Bây giờ, hãy tạo một tệp test.txt mới tại đích.
[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 mật khẩu:
nhận danh sách tập tin incremental
xóa test.txt
./
.dbenv.lock
.rpm.lock
Basenames
Conflictname
Dirnames
Enhancename
Filetriggername
Nhóm
Installtid
Tên
Obsoletename
Trọn gói
Providename
Sha1header Sigmd5 Tên gợi
ý
Tên
bổ sung
Transfiletriggername Tên
kích hoạt
__db.001
__db.002
__db.003
đã gửi 445 byte nhận được 18,543,954 byte 2,472,586,53 byte/giây
Tổng kích thước là 71,151,616 tốc độ là 3,84
Mục tiêu có tệp mới được gọi là test.txt, khi đồng bộ hóa với nguồn với tùy chọn –delete, nó đã loại bỏ tệp test.txt.
7. Đặt kích thước tối đa của tệp được truyền đi
Bạn có thể chỉ định kích thước tối đa của tệp sẽ được truyền hoặc đồng bộ hóa. Bạn có thể làm điều đó với 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:~] Mật khẩu của # rsync -avzhe ssh --max-size = '200k'/var/lib/rpm/ root@192.168.0.151: /root/tmprpm
root@192.168.0.151:
gửi tệp tăng dần danh sách
đã tạo thư mục /root/tmprpm
./
.dbenv.lock
.rpm.lock
Conflictname
Tên nâng cao
Filetriggername
Group
Installtid
Name
Obsoletename
Recommendname
Requestname
Sha1header
Sigmd5
Gợi ý Tên
bổ sung
Transfiletriggername
Triggername
__db.002
gửi 129,52K byte nhận được 396 byte 28,87K byte/giây
tổng kích thước là Tốc độ 71,15M là 547,66
8. Tự động xóa 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ữ lại bản sao lưu cục bộ đó trong máy chủ web của bạn.
Vì vậy, bạn sẽ đợi quá trình chuyển hoàn tất và sau đó xóa tệp sao lưu cục bộ đó theo cách thủ công sao? Dĩ nhiên là không. Việc xóa tự động này có thể được thực hiện bằng cách sử dụng tùy chọn '–remove-source-files'.
[root@ tecmint:~]# rsync --remove-source-files -zvh backup.tar.gz root@192.168.0.151: /tmp/backups/
Mật khẩu của root@192.168.0.151:
backup.tar.gz
đã gửi 795 byte nhận được 2,33K byte 894,29 byte/giây
tổng kích thước là 267,30K tốc độ là 85,40
[root@ tecmint:~] # ls -l backup.tar.gz
ls: không thể truy cập 'backup.tar.gz': Không có tệp hoặc thư mục nào như vậy
9. Thực hiện Dry Run với lệnh Rsync
Nếu bạn là người mới sử dụng Rsync và không biết chính xác lệnh của bạn sẽ làm gì. Rsync thực sự có thể làm rối tung mọi thứ trong thư mục đích của bạn và sau đó hoàn tác có thể là một công việc không mấy thú vị.
Việc sử dụng tùy chọn này sẽ không thực hiện bất kỳ thay đổi nào đối với tệp và hiển thị đầu ra của lệnh, nếu đầu ra hiển thị chính xác như bạn muốn thì bạn có thể xóa tùy chọn '–dry-run' khỏi lệnh của mình và chạy trên thiết bị đầu cuối.
[root@ tecmint:~]# rsync --dry-run --remove-source-files -zvh backup.tar.gz root@192.168.0.151: /tmp/backups/
Mật khẩu của root@192.168.0.151:
backup.tar.gz
gửi 50 byte nhận được 19 byte 19,71 byte/giây
tổng kích thước là 267,30K tốc độ là 3,873,97 (DRY RUN)
10. Rsync đặt giới hạn băng thông và truyền tệp
Bạn có thể đặt 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 bằng sự trợ giúp của tùy chọn ”–bwlimit”. Tùy chọn này giúp chúng tôi giới hạn I/O. băng thông
[root@tecmint] Mật khẩu của # rsync --bwlimit = 100 -avzhe ssh/var/lib/rpm/ root@192.168.0.151: /root/tmprpm/
root@192.168.0.151:
gửi danh sách tệp gia tăng
đã nhận được 324 byte 12 byte 61,09 byte/giây
tổng kích thước là 38,08M tốc độ là 113347,05
Ngoài ra, theo mặc định Rsync chỉ đồng bộ hóa các khối và byte đã thay đổi, nếu bạn muốn đồng bộ toàn bộ tệp một cách rõ ràng thì bạn sử dụng tùy chọn -W với nó.
[root@tecmint]# rsync -zvhW backup.tar/tmp/backups/backup.tar
backup.tar
đã gửi 14,71M byte nhận được 31 byte 3,27M byte/giây
tổng kích thước là 16,18M tốc độ là 1,10
Kết luận
Trên đây là toàn bộ kiến thức về lệnh Rsync tính đến thời điểm hiện tại, bạn có thể xem trang của các bên khác để có thêm cái nhìn rộng hơn. Hãy kết nối với Tecmint để có nhiều hướng dẫn thú vị và hấp dẫn hơn trong thời gian sắp tới. Hãy để lại ý kiến và đề xuất của bạn dưới phần bình luận nhé.
+ Fanpage: https://www.facebook.com/nhanhoacom
+ Chỉ đường: https://g.page/nhanhoacom
+ Chương trình khuyến mãi mới nhất: https://nhanhoa.com/khuyen-mai.html
————————————————————
CÔNG TY TNHH PHẦN MỀM NHÂN HÒA
Hotline: 1900 6680
Trụ sở chính: Tầng 4 - Tòa nhà 97-99 Láng Hạ, Đống Đa, Hà Nội
Tel: (024) 7308 6680 – Email: sales@nhanhoa.com
Chi nhánh TP. Hồ Chí Minh: 270 Cao Thắng (nối dài), Phường 12, Quận 10, Tp.HCM
Tel: (028) 7308 6680 – Email: hcmsales@nhanhoa.com
Chi nhánh Vinh - Nghệ An: Tầng 2 Tòa nhà Sài Gòn Sky, ngõ 26 Nguyễn Thái Học, phường Đội Cung, TP. Vinh, Nghệ An
Tel: 0915221384 – Email: contact@nhanhoa.com