Hướng dẫn copy dữ liệu với lệnh rsync thông qua kết nối SSH

I. Rsync

Rsync (remote sync) là công cụ đồng bộ file, thư mục của Linux. Nó sử dụng thuật toán khi copy dữ liệu sao cho dữ liệu phải copy là nhỏ nhất (chỉ copy những gì thay đổi giữa nguồn và gốc), khi đồng bộ nó giữ nguyên mọi thuộc tính của file, thư mục (từ chủ sở hữu, quyền truy cập file …). Mặc định, trên hầu hết các phiên bản hệ điều hành Linux đều cung cấp sẳn công cụ này.

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

II. Cài đặt và sử dụng Rsync

  1. Cài đặt Rsync:
    SSH vào server linux và tiến hành cài đặt bằng lệnh sau.
    • Trên RedHat/CentOS
      # yum install rsync -y
      # systemctl start rsyncd
      # systemctl enable rsyncd
    • Trên Debian/Ubuntu
      #apt-get install rsync -y

  2. Sử dụng RSYNC để copy dữ liệu thông qua kết nối SSH
    • Mô hình:
      • Source Host: Máy chủ gửi dữ liệu
      • Destination Host: Máy chủ nhận dữ liệu
    • Cú pháp chung:
      rsync -option source_file username@destination_host:/destination_folder
    • Chú thích:
      • rsync: Lệnh rsync thực hiện
      • -option: Các tùy chọn phụ
      • source_file: File/Thư mục cần copy
      • username@destination_host: tên user và IP/hostname (Ví dụ root@45.252.252.252)
      • /destination_folder: Thư mục đích cần copy đến.
    • Một số tùy chọn quan trọng trong rsync:
      • -v: hiển thị trạng thái kết quả
      • -r: copy toàn bộ dữ liệu, nhưng không giữ thông tin quyền, sở hữu của file và thư mục.
      • -a: copy toàn bộ dữ liệu, đồng thời giữ nguyên được tất cả các thông tin về quyền, sở hữu, liên kết,.. 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: hiển thị kết quả đồng bộ dữ liệu một cách dễ đọc
      • -e ‘ssh -p PORT’: Tùy chọn khi sử dụng port ssh riêng (Ví dụ máy Đích port SSH là 22 bạn sẽ sử dụng là -e ‘ssh -p 2222’)
      • –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.
    • Ví dụ thực tế:

      Ở ví dụ này, chúng ta sẽ tiến hành chép dữ liệu wordpress từ thư mục /home/doamins/vannhieu.com ở server 103.27.238.62  đến thư mục /home/domains/vannhieu123.com trên server 103.27.238.61, các bước thực hiện như sau:

      • Đảm bảo rsync đã được cài đặt trên cả 2 server.
      • SSh vào server 103.27.238.62 và thực hiên lệnh:
        rsync -P -avz /home/domains/vannhieu.com/*  103.27.238.61:/home/domains/vannhieu123.com/
        Trong đó:
        • sync: lệnh đồng bộ
        • -avzh: Các option đi kèm (Bạn có thể xem chú thích các option ở trên)
        • /home/domains/vannhieu.com/* : Thư mục Nguồn, đồng bộ toàn bộ các file và thư mục trong thư mục vannhieu.com (Dấu * có nghĩa là tất cả)
        • 103.27.238.61: Máy Đích, máy mà đồng bộ file đến
        • /home/domains/vannhieu123.com/: Thư mục máy đích, các file sẽ được lưu tại đây.
      • Nhập thông tin password của server để bắt đầu copy dữ liệu
      • Sau khi copy dữ liệu xong

Như vậy, Long Vân đã hoàn thành hướng dẫn Quý khách cách copy dữ liệu với lệnh RSYNC thông qua kết nối SSH. Chúc Quý khách thành công!