Rsync (Remote Sync) là một công cụ mạnh mẽ để sao lưu và đồng bộ dữ liệu trên Linux. Bản thân nó là một phiên bản cải tiến của SCP.

Trong bài viết này sẽ hướng dẫn bạn sử dụng rsync để truyền tải dữ liệu remote và local trên hệ điều hành Linux. Bạn không cần chạy với quyền root.

Đặc điểm nổi bật Rsync

  • Hỗ trợ chép links, devices, owner, groupspermissions, giúp bảo toàn dữ liệu.
  • rsync nhanh hơn SCP, dùng thuật toán thông minh để sao lưu chỉ dữ liệu thay đổi.
  • Tiêu tốn ít băng thông vì sử dụng cơ chế nén khi truyền và nhận dữ liệu.
  • Tự xóa dữ liệu nếu dữ liệu đó không tồn tại trên source.
  • Kết hợp SSH bảo mật dữ liệu đường truyền trên internet.

Cài đặt Rsync

Chạy lệnh sau để cài rsync cho máy chủ

Red Hat/CentOS

yum install -y rsync

Debian/Ubuntu

apt-get install -y rsync

Sử dụng Rsync

Cú pháp cơ bản rsync:

rsync [option] source destination

Tham số tùy chọn option:

  • -a: bảo toàn user, group, permission,symbolic link của dữ liệu.
  • -r: sao chép theo cách đệ quy (không bảo toàn dữ liệu như -a)
  • -v: verbose hiển thị trạng thái truyền tải file ra màn hình.
  • -h: kết hợp với -v cho ra định dạng dễ nhìn.
  • -z: nén dữ liệu trước khi truyền.
  • -e: sử dụng giao thức SSH mã hóa dữ liệu.
  • -P: gửi tiếp các file chưa được gửi khi có lại kết nối (dùng trong trường hợp mạng không ổn định)
  • –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, thêm –exclude cho các file hoặc folder muốn loại trừ ở nhiều đường dẫn khác nhau.  
  • –remove-source-files: xóa dữ liệu source sau khi đồng bộ thành công.
  • –max-size: giới hạn dung lượng file được đồng bộ.

Đồng bộ dữ liệu từ Local lên Remote

Bạn có một folder data quan trọng muốn đồng bộ lên Remote server có IP x.x.x.x, sử dụng rsync với các option được giải thích ở trên

[root@vps]# rsync -azvhPe ssh --delete --exclude 'tmp/' /home/data1 root@x.x.x.x:/home/data2/  

Diễn giải câu lệnh

  • Dữ liệu được bảo toàn các thông tin user, permission (-a), được nén trước khi truyền đi (-z)
  • -vh show quá trình truyền file lên màn hình.
  • -P để đảm bảo dữ liệu sẽ được gửi lại nếu mạng bị gián đoạn.
  • Kết hợp với -e ssh mã hóa đường truyền.
  • Dữ liệu có source là file /home/data1 gửi đến destination trong folder /home/data2/. Nếu có dấu “/” ở folder data1/ thì chỉ truyền dữ liệu bên trong, không truyền bản thân folder data1.
  • Tham số –delete xóa dữ liệu ở destination /home/data2/ nếu như dữ liệu đó không còn tồn tại trong source.
  • Không đồng bộ dữ liệu file tmp/ với tham số –exclude.

Muốn truyền ngược lại, từ Remote về Local, ta đổi vị trí từ destination về source và thêm bớt option cho phù hợp.

[root@vps]# rsync -azvh root@x.x.x.x:/home/data2 /home/data1/

Một vài lưu ý nhỏ

  • Tùy vào dung lượng dữ liệu, quá trình sẽ tốn một khoảng thời gian.
  • Kết hợp rsync với SSH đòi hỏi password của máy nhận hoặc SSH key nếu không muốn nhập password.
  • Nếu giá trị port SSH không phải mặc định, có thể ghi cú pháp sau với port mới -e “ssh -p [new_port]”
  • Muốn đồng bộ file ẩn có định dạng .hiddenfile, sử dụng cú pháp .[^.]* hoặc .??*

Ví dụ:

[root@vps]# rsync -azvhP ~/.[^.]* /mnt/test 
//copy các file ẩn từ folder home vào folder /mnt/test

Rsync đồng bộ được nhiều dữ liệu như database, webserver, file cấu hình… Việc sử dụng nó sẽ mang lại nhiều tiện lợi trong công việc quản trị, đặc biệt là chuyển dữ liệu giữa các host.

Chúc các bạn thành công!

 

Tagged:

Leave a Reply

Your email address will not be published. Required fields are marked *