Bài đọc liên quan.
+ Các mẫu lệnh SCP trên Linux
Rsynx command.
Như đã đăng ở bài trước về nhóm lệnh
SCP trong các intro Linux, hôm nay tôi xin giới thiệu về một công cụ tương tự là Rsync cải thiện được những nhược điểm của
SCP, giúp cho người quản trị
Linux dễ dàng trong việc sao chép, đồng bộ tập tin giữa các máy chủ
Linux trong mạng cục bộ cũng như qua Internet.
Một vài ưu điểm và tính năng của Rsync.
- Có tác dụng tích cự trong chép và đồng bộ hóa tập tin giữa các máy chủ Linux.
- Hỗ trợ sao chép tập tin qua những liên kết, thiết bị, trong cùng một máy, nhóm.
- Tốc độ có thể tối ưu hơn SCP vì sử dụng giao thức cập nhật từ xa( remote-update protocol) cho phép việc truyền dữ liệu giữa những tâp tin khác nhau. Thức nhất, đó là nó cho phép chép toàn bộ nội dung tập tin có trong thư mục hiện hành từ máy nguồn đến máy đích, và sau đó nó chỉ chép lại sự thay đổi của khối tập in và số bytes đến đích là xong.
- Rsync ít chiếm băng thông 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 từ hai phía.
Cú pháp cơ bản của Rsync.
# rsync options source destination
Một vài tham chiếu được dùng trong Rsync
- -v : verbose
- -r : copies data recursively (but don’t preserve timestamps and permission while transferring data
- -a : archive mode, archive mode allows copying
files recursively and it also preserves symbolic links, file
permissions, user & group ownerships and timestamps
- -z : compress file data
- -h : human-readable, output numbers in a human-readable format
Cài đặt rsync trong Linux.
Chúng ta có thể cài gói rsync theo dòng lệnh sau:
# yum install rsync (On Red Hat based systems)
# apt-get install rsync (On Debian based systems)
1. Sao chép hay đồng bộ hóa trong cùng một máy chủ.
Những lệnh sau sẽ cho phép đồng bộ (sync) một tập tin (file) trên cùng một máy từ thư mục này đến thư mục khác. Dưới đây là một ví dụ về chép tập tin backup.tar đến thư mục /tmp/backups.
root@tecmint]# rsync -zvh backup.tar /tmp/backups/
created directory /tmp/backups
backup.tar
sent 14.71M bytes received 31 bytes 3.27M bytes/sec
total size is 16.18M speedup is 1.10
Nhìn vào ví dụ trên, có thể thấy rằng ở thư mục hiện tại không tồn tại thư mục backups từ trước và rsync đã tự động tạo thêm thư mục trong khi chép dữ liệu.
Tiếp theo là chép từ thư mục này sang thu mục khác.
[root@tecmint]# rsync -avzh /root/rpmpkgs /tmp/backups/
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm
rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
rpmpkgs/nagios-3.5.0.tar.gz
rpmpkgs/nagios-plugins-1.4.16.tar.gz
sent 4.99M bytes received 92 bytes 3.33M bytes/sec
total size is 4.99M speedup is 1.00
2. Chép tập tin và thư mục giữa các máy chủ Linux.
Dưới đây là đoạn lệnh chép dữ liệu đến một máy chủ từ xa (uploading).
[root@tecmint]$ rsync -avz rpmpkgs/ root@192.168.0.101:/home/
root@192.168.0.101's password:
sending incremental file list
./
httpd-2.2.3-82.el5.centos.i386.rpm
mod_ssl-2.2.3-82.el5.centos.i386.rpm
nagios-3.5.0.tar.gz
nagios-plugins-1.4.16.tar.gz
sent 4993369 bytes received 91 bytes 399476.80 bytes/sec
total size is 4991313 speedup is 1.00
Tiếp theo là đoạn lệnh chép từ một máy khác (downloading).
[root@tecmint]# rsync -avzh root@192.168.0.100:/home/tarunika/rpmpkgs /tmp/myrpms
root@192.168.0.100's password:
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm
rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
rpmpkgs/nagios-3.5.0.tar.gz
rpmpkgs/nagios-plugins-1.4.16.tar.gz
sent 91 bytes received 4.99M bytes 322.16K bytes/sec
total size is 4.99M speedup is 1.00
3. Rsync qua một phiên SSH
Lấy một tập tin về (downloading)
với tham số '-e' để thực hiện truyền dữ liệu.
[root@tecmint]# rsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/
root@192.168.0.100's password:
receiving incremental file list
install.log
sent 30 bytes received 8.12K bytes 1.48K bytes/sec
total size is 30.74K speedup is 3.77
Chép một tập tin từ máy hiện tại đến máy từ xa với ssh
[root@tecmint]# rsync -avzhe ssh backup.tar root@192.168.0.100:/backups/
root@192.168.0.100's password:
sending incremental file list
backup.tar
sent 14.71M bytes received 31 bytes 1.28M bytes/sec
total size is 16.18M speedup is 1.10
4. Hiển thị quá trình truyền dữ liệu.Để hiện thị quá trình thực hiện truyền dữ liệu từ máy này đến máy khác, hãy thêm tham số '--progress' trong dòng lệnh.
[root@tecmint]# rsync -avzhe ssh --progress /home/rpmpkgs root@192.168.0.100:/root/rpmpkgs
root@192.168.0.100's password:
sending incremental file list
created directory /root/rpmpkgs
rpmpkgs/
rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm
1.02M 100% 2.72MB/s 0:00:00 (xfer#1, to-check=3/5)
rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm
99.04K 100% 241.19kB/s 0:00:00 (xfer#2, to-check=2/5)
rpmpkgs/nagios-3.5.0.tar.gz
1.79M 100% 1.56MB/s 0:00:01 (xfer#3, to-check=1/5)
rpmpkgs/nagios-plugins-1.4.16.tar.gz
2.09M 100% 1.47MB/s 0:00:01 (xfer#4, to-check=0/5)
sent 4.99M bytes received 92 bytes 475.56K bytes/sec
total size is 4.99M speedup is 1.00
5. Sử dụng tham số '-include' và '-exclude'
Việc này cho phép chỉ định được loại tập tin và thư mục cần truyền tải cũng như loại trừ những tập tin không mong muốn sao chép hay đồng bộ. Đây là dòng lệnh mẫu.
[root@tecmint]# rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.101:/var/lib/rpm/ /root/rpm
root@192.168.0.101's password:
receiving incremental file list
created directory /root/rpm
./
Requirename
Requireversion
sent 67 bytes received 167289 bytes 7438.04 bytes/sec
total size is 434176 speedup is 2.59
6. Sử dụng tham số '-delete'.
Nếu một tập tin không tồn tại ở nguồn, nhưng đã có sẵn ở đích thì cần phải xóa nó trước khi đồng bộ hóa. Sử dụng tham số '-delete' để xóa những tập tin không có trong nguồn chép. Nguồn và đích là đồng bộ với nhau tao thành một tập tin mới ở đích.
[root@tecmint]# touch test.txt
[root@tecmint]# rsync -avz --delete root@192.168.0.100:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting test.txt
./
sent 26 bytes received 390 bytes 48.94 bytes/sec
total size is 453
Đích có 1 tập tin mới là test.txt, khi đồng bộ với tham số 'delete' nó xóa bỏ tập tin test.txt.
7. Định kích cỡ gói tập tin trong chuyển dữ liệu.
Với tham số '-max size' thì có thể giới hạn những tập tin có trong định nghĩa được chép, chẳng hạn, kích cỡ định nghĩa là 200K, thì dòng lệnh chỉ chép những tập tin bằng hoặc nhỏ hơn 200k mà thôi.
[root@tecmint]# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ root@192.168.0.100:/root/tmprpm
root@192.168.0.100's password:
sending incremental file list
created directory /root/tmprpm
./
Conflictname
Group
Installtid
Name
Provideversion
Pubkeys
Requireversion
Sha1header
Sigmd5
Triggername
__db.001
sent 189.79K bytes received 224 bytes 13.10K bytes/sec
total size is 38.08M speedup is 200.43
8. Tự động xóa tập tin nguồn sau khi hoàn tất
Tham số '-remove-source-files' cho phép xóa tập tin sau khi đã hoàn tất việc chép tập tin điều này hữu ích trong việc backup máy chủ mà không muốn giữ lại dữ liệu ở máy chủ nguồn.
[root@tecmint]# rsync --remove-source-files -zvh backup.tar /tmp/backups/
backup.tar
sent 14.71M bytes received 31 bytes 4.20M bytes/sec
total size is 16.18M speedup is 1.10
[root@tecmint]# ll backup.tar
ls: backup.tar: No such file or directory
9. Thực hiện Dry Run với Rsync
Sử dụng tham số này không làm thay đổi nào mà nó chỉ thực hiện lệnh và hiển thị ra nhưng lệnh mong muốn mà mình sẽ làm như một kiểm tra, điều này hữu ích cho những người mới hoặc đối với những tập tin quan trong cũng có thể là thực hiện chép dữ liệu rồi xóa tập tin nguồn, giúp hạn chế tối đa rủi rõ trong khi thưc hiện rsync.
root@tecmint]# rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/
backup.tar
sent 35 bytes received 15 bytes 100.00 bytes/sec
total size is 16.18M speedup is 323584.00 (DRY RUN)
10. Thiết lập băng thông và tập tin.
Việc truyền dữ liệu cần hạn chế băng thông để không gây ảnh hưởng đến nghẽn thì dùng tham số
'-bwlimit', điều này giúp hạn chế I/O trong băng thông
[root@tecmint]# rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ root@192.168.0.100:/root/tmprpm/
root@192.168.0.100'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 như mặc định thì rsync đồng bộ những khối thay đổi trong tập tin và số bytes mà thôi, nên nếu muốn đồng bộ toàn bộ toàn bộ tập tin thì dùng thêm tham số '-W' theo dòng lệnh.
[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
Trên đây là nhưng dòng lệnh tiêu biểu thông dụng của Rsync tuy nhiên nếu cần tìm hiểu chi tiết hơn thì chỉ cần gõ lệnh rsync --help trong linux để hiển thị tất cả đối số trong lệnh rsync.
Nếu có gì cần đề xuất hay bình luận, mọi người vui long comment phía dưới!