Cách sao lưu và đồng bộ dữ liệu VPS/Server bằng RSYNC thông qua SSH

Trong một số trường hợp các bạn muốn đồng bộ dữ liệu giữa các VPS/Server nhằm mục đích sao lưu dự phòng (backup), di chuyển dữ liệu qua mới, hoặc cho một số mục đích nào đó thì rsync sẽ giúp bạn thực hiện điều này rất thuận tiện và nhanh chóng thông qua .

Cách sao lưu và đồng bộ dữ liệu VPS/Server bằng RSYNC thông qua SSH - backup rsync ssh vps - Webmasters Tools

rsync

Trong bài này, .pep.vn sẽ hướng dẫn bạn đồng bộ dữ liệu từ thư mục “/home/websites/” tại VPS A (source) lên thư mục “/home/” tại VPS B (destination) có địa chỉ IP là 23.88.236.66

Tại VPS A

Bạn cài đặt rsync bằng lệnh YUM :

sudo yum install -y rsync

Sau đó bạn tại khoá xác thực SSH (SSH authentication keys) bằng lệnh sau :

ssh-keygen -t dsa
[[email protected] ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):/root/.ssh/id_dsa_vps_a

Khi tới bước “Enter file in which to save the key (/root/.ssh/id_dsa):” thì bạn nhập “/root/.ssh/id_dsa_vps_a” (nơi chứa thông tin của keys)

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa_vps_a.
Your public key has been saved in /root/.ssh/id_dsa_vps_a.pub.
The key fingerprint is:
08:e5:e1:b4:58:ff:33:75:c5:fe:73:3e:4d:36:48:25 [email protected]
The key's randomart image is:
+--[ DSA 1024]----+
|      =        ..|
|     B +     E o.|
|    o + .   . +. |
|     . . . . o  .|
|      . S + . . .|
|           o . o=|
|               +=|
|               .o|
|                .|
+-----------------+
[[email protected] ~]#

Khi tới bước “Enter passphrase (empty for no passphrase):” & “Enter same passphrase again:” thì bạn không cần nhập gì cả, chỉ việc nhấn phím “ENTER

Sau đó bạn copy key SSH vừa được tạo (/root/.ssh/id_dsa_vps_a.pub) lên VPS B bằng lệnh :

scp /root/.ssh/id_dsa_vps_a.pub [email protected]:/root/

Tại VPS B

Tiếp theo bạn đăng nhập SSH vào VPS B và thực hiện những lệnh sau :

mkdir -p /root/.ssh/
touch -f /root/.ssh/authorized_keys
cat /root/id_dsa_vps_a.pub >> /root/.ssh/authorized_keys
chmod 644 /root/.ssh/authorized_keys

Tại VPS A

Sau đó bạn đăng nhập SSH vào VPS A và thực hiện lệnh :

rsync -aurzW --delete --force -e "ssh -i /root/.ssh/id_dsa_vps_a" /home/websites [email protected]:/home

Đây là lệnh đồng bộ dữ liệu 1 chiều từ thư mục “/home/websites/” tại VPS A lên thư mục “/home/” tại VPS B theo nguyên tắc sau :

  • Nếu thư mục/tập tin nào có trên VPS A mà không có trên VPS B thì sẽ tự động tạo trên VPS B
  • Nếu thư mục/tập tin nào có trên VPS B mà không có trên VPS A thì sẽ tự động xoá trên VPS B

Tiếp theo, chúng ta sẽ cấu hình Crontab để tự động thực hiện đồng bộ mỗi phút trên VPS A :

echo "
* * * * * root rsync -aurzW --delete --force -e \"ssh -i /root/.ssh/id_dsa_vps_a\" /home/websites [email protected]:/home > /dev/null 2>&1" >> /etc/cron.d/minutesjobs
chmod 644 /etc/cron.d/minutesjobs

Vậy là xong, chúng ta đã cấu hình tự động đồng bộ dữ liệu từ VPS A lên VPS B mỗi phút với rsync + Crontab + SSH.