Cách tự động backup website trên cyberpanel lên Google Drive

5/5 - (1 bình chọn)

Công ty Zubi hướng dẫn cho khách hàng khi thuê hosting hoặc thiết kế web tại hệ thống Công ty Zubi Cách tự động backup website trên cyberpanel lên Google Drive sử dụng Rclone.

Rclone là một công cụ đồng bộ hóa dữ liệu tương tự Rsync nhưng lại được tập trung phát triển chức năng kết nối với các dịch vụ lưu trữ đám mây.

Ưu điểm của việc sử dụng dịch vụ lưu trữ đám mây đó là tốc độ cao (do có server được đặt trên khắp thế giới), an toàn dữ liệu (không lo ngại các vấn đề phần cứng, network) và nhất là hầu hết đều Free. Mình đặc biệt thích những thứ Free!

I. Hướng dẫn cài đặt Rclone

– Cài đặt với phiên bản v1.42 hệ điều hành Linux 64bit
cd /root/
wget https://downloads.rclone.org/v1.42/rclone-v1.42-linux-amd64.zip
unzip rclone-v*.zip
\cp rclone-v*-linux-amd64/rclone /usr/sbin/
rm -rf rclone-*
– Cài đặt với phiên bản v1.42 hệ điều hành Linux 32bit
cd /root/
wget https://downloads.rclone.org/v1.42/rclone-v1.42-linux-386.zip
unzip rclone-v*.zip
\cp rclone-v*-linux-386/rclone /usr/sbin/
rm -rf rclone-*
Kết nối SSH với VPS rồi chạy lệnh:
rclone config
Bạn sẽ nhận được thông báo: No remotes found - make a new one, nhập n rồi nhấn Enter để tạo kết nối mới.
Ở dòng name bạn nhập remote để đặt tên cho kết nối, bạn có thể chọn tên nào cũng được.
Một danh sách các dịch vụ cloud xuất hiện, hãy chọn số 11, Google Drive rồi nhấn Enter.
Ở 2 dòng tiếp theo Client ID và Client Secret bạn hãy để trống nhấn Enter.
Mục Scope that rclone should use when requesting access from drive chọn 1 – drive
Tiếp theo, để trống với ID of the root folder và Service Account Credentials JSON file path
Khi được hỏi Use auto config? hãy nhập n rồi nhấn Enter. Ngay lập tức, Rclone sẽ đưa ra một đường link, bạn có thể click thẳng vào đó hoặc copy rồi paste vào trình duyệt.

 

Tao ket noi Google Drive 2
Giao diện sẽ xuất hiện như sau:
Cap quyen cho Rclone truy cap Google Drive
Nhấn nút Allow để đồng ý, sau đó bạn sẽ nhận được đoạn mã verification code như hình dưới:
Ma verification code
Quay trở lại cửa sổ SSH, copy rồi paste code này vào dòng Enter verification code> rồi nhấn Enter.
Chọn n tức no đối với Configure this as a team drive?
Rclone cần xác nhận thông tin một lần nữa, bạn nhấn y để đồng ý rồi nhấn q để thoát khỏi giao diện cấu hình kết nối.
Vậy là xong, giờ bạn có thể test với lệnh liệt kê thư mục trong kết nối remote:
# rclone lsd remote:
– Bước Tiếp theo, Web5c lưu ý cho bạn là rất quan trọng nhé
nano /root/backup.sh
– Copy toàn bộ nội dung script bên dưới rồi paste vào
# Công ty Zubi Plugin - Tu dong backup website CyberPanel toi Google Drive

#!/bin/bash

SERVER_NAME=WEB5C_BACKUP_WEB_CYBERPANEL

TIMESTAMP=$(date +"%F")
BACKUP_DIR="/root/backup/$TIMESTAMP"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
SECONDS=0

mkdir -p "$BACKUP_DIR/mysql"

echo "Starting Backup Database";
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)"`

for db in $databases; do
 $MYSQLDUMP --force --opt $db | gzip > "$BACKUP_DIR/mysql/$db.gz"
done
echo "Finished";
echo '';

echo "Starting Backup Website";
# Loop through /home directory
for D in /home/*; do
 if [ -d "${D}" ]; then #If a directory
  domain=${D##*/} # Domain name
  echo "- "$domain;
  zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/ -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache
 fi
done
echo "Finished";
echo '';

size=$(du -sh $BACKUP_DIR | awk '{ print $1}')

echo "Starting Uploading Backup";
/usr/sbin/rclone move $BACKUP_DIR "remote:$SERVER_NAME/$TIMESTAMP" >> /var/log/rclone.log 2>&1
# Clean up
rm -rf $BACKUP_DIR
/usr/sbin/rclone -q --min-age 2w delete "remote:$SERVER_NAME" #Remove all backups older than 2 week
/usr/sbin/rclone -q --min-age 2w rmdirs "remote:$SERVER_NAME" #Remove all empty folders older than 2 week
/usr/sbin/rclone cleanup "remote:" #Cleanup Trash
echo "Finished";
echo '';

duration=$SECONDS
echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
– Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát.
– Phân quyền cho script
chmod +x /root/backup.sh
– Vậy là xong rồi đó, giờ bạn có thể test lại bằng cách chạy lệnh:
/root/backup.sh
Thử kiểm tra trên Cloud xem có thư mục mới với dữ liệu backup chưa nhé, hoặc test với lệnh:
rclone lsl remote:HOCVPS_BACKUP
Nếu không có vấn đề gì sẽ thấy kết quả trả về có một thư mục là ngày hiện tại, bên trong có chứa file nén website (.zip), cấu hình Nginx (.conf) và database (.gz).

4. Tạo cronjob tự động backup hàng ngày

Giờ mình sẽ cho script tự động chạy lúc 2h00 sáng.
EDITOR=nano crontab -e
Dán nội dung sau vào cửa sổ Terminal
0 2 * * * /root/backup.sh > /dev/null 2>&1
Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát
Vậy là xong, cứ 2h sáng hàng ngày script sẽ tự động chạy, backup toàn bộ dữ liệu của VPS rồi upload lên Cloud. Đồng thời, dữ liệu backup trên VPS sẽ được xóa luôn sau khi upload xong.

Chú ý: Sau khi hoàn thành các bước trên, hãy truy cậ lại vào Google Drive xem đã có thư mục WEB5C_BACKUP_WEB_CYBERPANEL

5/5 - (1 bình chọn)