Header Ads Widget

Đồng bộ dữ liệu giữa 2 VPS sử dụng Rsync

Đồng bộ dữ liệu giữa 2 Server sử dụng lệnh tự động điền pass hoặc qua key xác thực

Cú pháp Rsync 

rsync [options] source [destination]
Đồng bộ dữ liệu bỏ qua những file đã có và xóa những file thừa ở đích
rsync -avz --update --ignore-existing --delete --recursive --delete -e  <nguồn> <đích>
Hoặc
rsync -avhe ssh --progress /foo/* user@remote-host:/tmp/
Đồng bộ từ Local lên Remote
rsync -avz /abc/* root@110.108.0.101:/home/
Hoặc đồng bộ từ REMOTE về LOCAL
rsync -avzh root@110.108.0.100:/home/abc/* /xyz

Hoặc từ Server A sang Server B

rsync -avz --delete -e 'ssh -p 65333' /data/server_a/ inetcom@14.123.45.67:/data/server_b 

Lệnh trên sẽ xóa những file ở đích nếu nguồn không có


VD: Copy từ Server khác tới local
rsync -arvz -e 'ssh -p 65333' --update --ignore-existing --progress --delete test@123.45.6.7:/data/test.php /home/ubuntu/

Ghi chú:

  • -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--ignore-existing-files: Bỏ qua nếu file đã tồn tại
  • --progress: Hiển thị ra màn hình quá trình đồng bộ
  • --update: Chỉ đồng bộ các file có sự thay đổi
  • --remove-source-files: Tự động xóa các file nguồn nếu đồng bộ xong
  • --delete: Xóa các dữ liệu từ đích nếu nguồn bị xóa

Tự điền password sử dụng "sshpass"

Cài đặt thư viện sshpass
Ubuntu/Debian
sudo apt-get install sshpass

Redhat/CentOS
sudo yum install sshpass

Và chạy lệnh bên dưới để đồng bộ:

rsync -avz -e 'sshpass -p "PASSWORD" ssh -p 1234 -o StrictHostKeyChecking=no' root@192.168.1.50:/var/www/html/lienvu.com/images/test.js /data/backup/ 

Sử dụng Key Private & Public

Server chính: 192.168.1.50 
Server phụ: 192.168.1.51

Đồng bộ hóa dữ liệu một cách tự động thư mục /var/www/html/lienvu.com/images từ server .51 sang server .50

1. Cài đặt rsync

Thực hiện trên cả server chính lẫn server phụ
yum install rsync

2. Tạo tài khoản thực hiện rsync

Thực hiện trên server phụ bằng quyền root
rsync -avz -e ssh root@192.168.1.50:/var/www/html/lienvu.com/images /var/www/html/lienvu.com/

Hoặc có port 1234

rsync -avz -e "ssh -p 1234" root@192.168.1.50:/var/www/html/lienvu.com/images /var/www/html/lienvu.com/ 

Lệnh trên yêu cầu bạn nhập mật khẩu của tài khoản root. 
Sau khi thực hiện thành công, bạn vào thư mục /var/www/html/lienvu.com thuộc server phụ thì sẽ thấy thư mục images đã được copy sang.

3. Tạo key xác thực không cần nhập mật khẩu khi thực hiện rsync

Truy cập vào thư mục root trên Server .51
cd /root/.ssh
Chạy lệnh để tạo key
ssh-keygen -t rsa
Khi yêu cầu nhập passphrase, bạn không cần điền gì cả chỉ cần nhấn Enter

Tiếp theo ta chép public key sang server .50
scp /root/.ssh/id_rsa.pub root@192.168.1.50:/root

4. Cấu hình để dịch vụ SSH chấp nhận kiểu chứng thực bằng key

Thực hiện trên server .50 bằng quyền root
vi /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

5. Cấu hình server .50

Thực hiện bằng quyền root

mkdir .ssh
chmod 700 .ssh
mv id_rsa.pub .ssh/
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
cat id_rsa.pub >> authorized_keys

6. Thử nghiệm rsync bằng key 

Thực hiện trên server .51 bằng quyền root
rsync -avz --delete -e "ssh -i /root/rsync/mirror-rsync-key" root@192.168.1.50:/var/www/html/lienvu.com/images /var/www/html/lienvu.com

Nếu thành công thì tiến trình đồng bộ dữ liệu sẽ được thực thi mà không yêu cần bạn nhập mật khẩu

Nhận xét