Network

Rsync Công Cụ Đồng Bộ Dữ Liệu Trên Linux

Rsync (Remote Sync) là một công cụ dùng để sao chép và đồng bộ file/thư mục được dùng rất phổ biến. Với sự trợ giúp của rsync, bạn có thể đồng bộ dữ liệu trên local hoặc giữa các server với nhau một cách dễ dàng.

Tính năng nổi bật của Rsync

  • Rsync hỗ trợ copy giữ nguyên thông số của files/folder như Symbolic links, Permissions, TimeStamp, Owner và Group.
  • Rsync nhanh hơn scp vì Rsync sử dụng giao thức remote-update, chỉ transfer những dữ liệu thay đổi mà thôi.
  • Rsync tiết kiệm băng thông do sử dụng phương pháp nén và giải nén khi transfer.
  • Rsync không yêu cầu quyền super-user

Hướng Dẫn Cài đặt Rsync

Trên Red Hat/CentOS

yum install rsync -y

Trên Debian/Ubuntu

apt-get install rsysnc -y

Cách Sử dụng Rsync

Cấu trúc cơ bản Rsync

rsync [options] <source> <destination>

Trong đó:

  • Source: dữ liệu nguồn
  • Destination: dữ liệu đích
  • Options: một số tùy chọn thêm

Các tham số cần biết khi dùng Rsync

  • -v: hiển thị trạng thái kết quả
  • -r: copy dữ liệu recursively, nhưng không đảm bảo thông số của file và thư mục
  • -a: cho phép copy dữ liệu recursively, đồng thời giữ nguyên được tất cả các thông số của thư mục và file
  • -z: nén dữ liệu khi transfer, tiết kiệm băng thông tuy nhiên tốn thêm một chút thời gian
  • -h: human-readable, output kết quả dễ đọc
  • --delete: xóa dữ liệu ở destination nếu source không tồn tại dữ liệu đó.
  • --exclude: loại trừ ra những dữ liệu không muốn truyền đi, nếu bạn cần loại ra nhiều file hoặc folder ở nhiều đường dẫn khác nhau thì mỗi cái bạn phải thêm --exclude tương ứng.

Lưu ý:

  • Bạn có thể kết hợp nhiều option vào một lệnh rsync để tối ưu quá trình đồng bộ file.
  • Rsync không tự động chạy nên thường được dùng kết hợp với crontab.
  • Khi lần đầu chạy rsync, toàn bộ dữ liệu nguồn sẽ được copy đến server đích, từ lần chạy sau trở đi chỉ những dữ liệu chưa được copy mới được transfer – đây là quá trình đồng bộ dữ liệu. Do đó, bạn có thể hiểu rsync thực hiện việc copy hoặc đồng bộ đều đúng. Trong bài viết này, Zhost sẽ sử dụng Copy cho ngắn ngọn.

Copy file và thư mục trên local

rsync -avzh backup.tar /tmp/backups/

Lệnh trên sẽ copy file backup.tar vào thư mục /tmp/backups/ . Nếu thư mục đích chưa có sẽ được tạo tự động.

Copy thư mục trên local

rsync -avzh /root/rpmpkgs /tmp/backups/

Lệnh trên sẽ copy thư mục /root/rpmpkgs đến thư mục  /tmp/backups/ và giữ nguyên thuộc tính của folder và các file đã copy.

Copy thư mục từ Local lên Remote Server

rsync -avzh rpmpkgs/ root@10.10.10.12:/home/

Lệnh trên copy thư mục rpmpkgs từ Server Local lên Remote Server có IP 10.10.10.12, lưu ở thư mục /home/

Copy thư mục từ Remote Server về Local

rsync -avzh root@10.10.10.12:/home/tarunika/rpmpkgs /tmp/myrpms

Lệnh trên sẽ copy dữ liệu ở thư mục /home/tarunika/rpmpkgs trên Remote Server 10.10.10.12 về máy Server Local lưu ở thư mục /tmp/myrpms

Copy file/folder từ Remote Server về Local Server qua SSH

Với Rsync, bạn có thể transfer qua giao thức SSH, qua đó dữ liệu được bảo mật an toàn hơn.

Để xác định giao thức sẽ sử dụng với rsync, bạn cần thêm tùy chọn -e cùng với tên giao thức, ở đây là ssh

rsync -avzhe ssh root@10.10.10.12:/root/access.log /home/hnitmedia/log/

Lệnh trên copy file /root/access.log trên Remote Server 10.10.10.12 về thư mục /home/zhost/log/ trên máy Local.

Copy file/folder từ Local lên Remote Server qua SSH

rsync -avzhe ssh /home/hnitmedia/data.tar root@10.10.10.12:/backups/

Nếu sử dụng port SSH custom, không phải port tiêu chuẩn 22, bạn cần chỉ rõ port muốn dùng trong câu lệnh. Ví dụ với port 2222 của hnitmedia câu lệnh sẽ như sau:

rsync -avzhe "ssh -p 2222" /home/hnitmedia/data.tar [email protected]:/backups/

Hiển thị tiến trình trong khi Copy dữ liệu

Để hiển thị tiến độ transfer dữ liệu, bạn có thể sử dụng option --progress

[root@hnitmedia]# rsync -avzhe ssh --progress /home/rpmpkgs root@10.10.10.12:/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

Tùy chọn –include và –exclude

Hai tùy chọn --include và --exclude cho phép chúng ta thêm/bớt file hoặc thư mục trong quá trình đồng bộ dữ liệu.

rsync -avze ssh --include 'R*' --exclude '*' root@10.10.10.12:/var/lib/rpm/ /root/rpm

Ở ví dụ trên, Rsync include toàn bộ những file hoặc thư mục có tên bắt đầu bởi ký tự ‘R’ và exclude toàn bộ những file hoặc thư mục còn lại.

Tùy chọn –delete

Tuỳ chọn --delete cho phép bạn xóa một file hoặc thư mục không có ở thư mục nguồn, mà lại xuất hiện ở thư mục đích trong quá trình copy.

rsync -avzhe ssh --progress  --delete /home/rpmpkgs root@10.10.10.12:/root/rpmpkgs

Xóa dữ liệu ở nguồn sau khi copy thành công

Để rsync tự động xóa dữ liệu sau khi đồng bộ lên server đích thành công, bạn có thể sử dụng option --remove-source-files

rsync -avzhe ssh --remove-source-files /home/rpmpkgs root@10.10.10.12:/root/rpmpkgs

Giới hạn băng thông khi chạy Rsync

Để giới hạn băng thông mạng khi chạy Rsync, bạn có thể sử dụng option --bwlimit đơn vị tính là KB/s.

rsync -avzhe ssh --bwlimit=1024 /home/rpmpkgs root@10.10.10.12:/root/rpmpkgs

Câu lệnh Rsync sẽ giới hạn băng thông truyền tải là 1024KB/s = 1MB/s.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button