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.
Kịch bản tự động backup như sau:
- Sao lưu toàn bộ database MySQL, mỗi database một file .gz
- Sao lưu toàn bộ code trong thư mục
/home/domain.com/public_html/
- Sao lưu toàn bộ cấu hình Nginx trong thư mục
/etc/nginx/conf.d/
- Tổng hợp tất cả dữ liệu vào 1 folder
- Upload file backup lên Google Drive vào lúc 2h00 sáng
- Tự động xóa file backup trên VPS sau khi upload xong, xóa file backup trên Cloud nếu quá 2 tuần
1. 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/rclone-current-linux-amd64.zip unzip rclone-current-linux-amd64.zip \cp rclone-v*-linux-amd64/rclone /usr/sbin/ rm -rf rclone-*
2. Tạo kết nối với Google Drive
Kết nối SSH với VPS rồi chạy lệnh:
rclone config
Nhận được thông báo: No remotes found - make a new one
, nhập n
rồi nhấn Enter
Ở 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ố 13
, 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.
Nhấn nút Allow để đồng ý, sau đó sẽ xuất hiện đoạn mã, bạn hãy Coppy đoạn mã đó
Quay trở lại cửa sổ SSH, rồi paste code này vào dòng Enter verification code>
rồi nhấn Enter.
Xuất hiện thông báo Configure this as a team drive?
hãy Chọn n
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.
3. Script backup toàn bộ VPS và upload lên Google Drive
Tạo file backup.sh
ở thư mục /root/
nano /root/backup.sh
– Copy toàn bộ nội dung script bên dưới rồi paste vào (áp dụng với HocVPS Script 2.0 trở lên)
# HocVPS Script Plugin - Backup Server and Upload to Cloud #!/bin/bash SERVER_NAME=BACKUP_VPS_KHACHHANG_ANBIWEB 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/wp-content/plugins -q -x /home/$domain/public_html/wp-content/cache/**\* #Exclude cache zip -r $BACKUP_DIR/$domain.zip /home/$domain/public_html/wp-content/themes -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 cleanup "remote:" #Cleanup Trash echo "Finished"; echo ''; duration=$SECONDS echo "Total $size, $(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."
Chú ý: Đoạn code trên sẽ backup database, thư mục Plugins, Themes
– 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 Google Drive xem có thư mục BACKUP_VPS_KHACHHANG_Công ty Zubi là oki rồi nhé.
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.