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 – driveTiế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.
Giao diện sẽ xuất hiện như sau:
Nhấn nút Allow để đồng ý, sau đó bạn sẽ nhận được đoạn mã verification code như hình dưới:
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