Hướng dẫn sử dụng Rsync đồng bộ dữ liệu trên Linux

Nếu như đã dùng scp để sao chép dữ liệu trên linux các bạn cũng nhận thấy rằng scp có nhiều hạn chế, bản thân nó chỉ có nhiệm vụ copy file được chỉ định thôi. Hôm nay mình sẽ giới thiệu RSYNC (Remote Sync) một công cụ mạnh mẽ để copy file và đồng bộ dữ liệu giữa linux với linux.

1. Các tính năng nổi bật của rsync

  • Sao chép cả symbolic link, user, group, permission giúp bảo toàn dữ liệu.
  • rsync nhanh hơn SCP, nó dùng thuật toán thông minh chỉ sao lưu những dữ liệu thay đổi.
  • rsync nén dữ liệu trên server trước khi gửi đi.
  • Tự xóa dữ liệu nếu dữ liệu đó không tồn tại trên source giúp đồng bộ dữ liệu giữa hai máy chủ linux từ xa.
  • rsync kết hợp SSH bảo mật dữ liệu truyền trên internet.

Hướng dẫn sử dụng rsync

2. Cài đặt rsync

Bên trên là một số tính năng quan trọng của rsync, để bắt đầu chúng ta phải cài rsync cho máy chủ của mình trước, nếu chưa có chạy lệnh.

Red Hat/CentOS 

yum install rsync

Debian/Ubuntu

apt-get install rsysnc

3. Cách sử dụng rsync

Cú pháp chung của rsync

#rsync option source destination

Trong đó:

Source: thư mục chứa dữ liệu gốc muốn đồng bộ, nơi truyền dữ liệu.

destination: nơi sẽ chứa dữ liệu đồng bộ đến, nơi nhận dữ liệu.

option: các tham số để tùy biến rsync khi đồng bộ dữ liệu.

  • -a: option này sẽ bảo toàn user, group, permission,symbolic link của dữ liệu
  • -v: show trạng thái truyền tải file ra màn hình để bạn theo dõi.
  • -h: kết hợp với -v để định dạng dữ liệu show ra dễ nhìn hơn.
  • -z: nén dữ liệu trước khi truyền đi giúp tăng tốc quá trình đồng bộ file.
  • -e: sử dụng giao thức SSH để mã hóa dữ liệu.
  • -P: Option này dùng khi đường truyền không ổn định, nó sẽ gửi tiếp các file chưa được gửi đi khi có kết nối trở lại.
  • --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.

Để hiểu rõ hơn ở ví dụ bên dưới mình sẽ thực hiện backup website giữa hai VPS qua môi trường internet để các bạn dễ hình dung.

4. Đồng bộ dữ liệu từ Remote VPS về Local VPS

Ở đây Remote VPS  là source sẽ đống bộ sang Local VPS là destination.

[root@srv1 /]# rsync -azvhPe ssh --delete --exclude 'wp-content/cache/' /var/www/www.thuysys.com/public_html root@45.32.250.248:/var/www/www.thuysys.com/backup/

Ý nghĩa các option mình đã giải thích bên trên các bạn đọc và tham chiếu để rõ hơn, mình diễn giải câu lệnh trên như sau:

  • Với lệnh trên thì dữ liệu sẽ được bảo toàn các thông tin user, permission (-a), được nén trước khi truyền đi (-z)
  • Tiếp theo là (-vh) show quá trình truyền file lên màn hình với định dạng dễ nhìn hơn.
  • VPS đích (nhận dữ liệu) root@45.32.250.248, có địa chỉ IP 45.32.250.248 và user để login vào VPS này là root.
  • Rsync sẽ kết hợp với ssh (-e) để mã hóa dữ liệu truyền đến VPS 45.32.250.248 cho an toàn.
  • Dữ liệu có source là /var/www/thuysys.com/public_html có destination là /var/www/thuysys.com/backup/.
  • Sẽ xóa dữ liệu ở destination /var/www/www.thuysys.com/backup/ nếu như dữ liệu đó không còn tồn tại trong source /var/www/thuysys.com/public_html, tham số (–delete)
  • Trong quá trình đồng bộ sẽ bỏ qua toàn bộ dữ liệu trong folder wp-content/cache, tham số (–exclude).
  • Chú ý cái đường dẫn này, /var/www/thuysys.com/public_html nghĩa là copy nguyên cả folder public_html  đặt vào folder backup trên destination, nếu là /var/www/thuysys.com/public_html/ khác nhau ở dấu “/” thì chỉ copy file, folder còn không copy folder public_html.
  • Cuối cùng là (-P) để đảm bảo dữ liệu sẽ được gửi lại nếu mạng có bị gián đoạn.

Muốn sử dụng rsync đồng bộ dữ liệu theo chiều ngược lại từ Destination về Source bạn chỉ việc đảo lại source và destination và thêm bớt các option cho phù hợp mục đích là được.

Chú ý, ví dụ trên chúng ta đã thực hiện rsync kết hợp với SSH mã hóa dữ liệu truyền đi. Nếu như VPS của bạn sử dụng SSH Key bạn cần tạo SSH Key không dùng passphrase để không phải phải nhập password mỗi khi chạy lệnh.

 

Tham khảo: cách tạo SSH Key.

Trên đây là các option cần thiết nhất để đồng bộ dữ liệu giữa 2 máy chủ với nhau. Rsync còn một số options nữa cũng có thể dùng trong một số trường hợp nhất định như:

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

Rsync có thể backup đồng bộ được rất nhiều thứ như database, webserver, file config cấu hình … Bài kế tiếp mình sẽ hướng dẫn các bạn backup website bằng rsync và tạo cronjob để tự động quá trình đồng bộ dữ liệu trên server.

9 Comments

  1. huyannet March 31, 2017 Reply
  2. Thái sơn February 18, 2017 Reply
    • admin February 18, 2017 Reply
  3. Vũ Thành Đạt April 25, 2016 Reply
    • admin April 25, 2016 Reply
    • admin April 25, 2016 Reply
      • Vũ Thành Đạt April 26, 2016 Reply
        • admin April 26, 2016 Reply
  4. Vũ Thành Đạt April 25, 2016 Reply

Leave a Reply