Backup Tự Động Website VPS Lên Google Drive - Không Lo Mất Dữ Liệu, Miễn Phí 15GB

📅 05/2026 · ⏱ 14 phút đọc · 🏷 Bảo Mật

Bạn đã bao giờ mất toàn bộ website vì VPS lỗi, ổ cứng hỏng, hay lỡ tay xóa nhầm chưa? Nếu chưa từng, bạn thật may mắn — nhưng đừng đợi đến lúc đó mới nghĩ đến backup. Bài viết này sẽ giúp bạn thiết lập backup tự động hàng ngày lên Google Drive, hoàn toàn miễn phí với 15GB lưu trữ. Cài đặt 1 lần, yên tâm mãi mãi.

Tại Sao Phải Backup?

Dữ liệu là tài sản quý giá nhất trên VPS của bạn. Mất dữ liệu có thể đến từ:

💡 Quy tắc backup 3-2-1: Giữ ít nhất 3 bản sao dữ liệu, trên 2 loại thiết bị khác nhau, với 1 bản ở nơi khác (offsite). Google Drive chính là bản offsite hoàn hảo!

So Sánh Các Giải Pháp Backup

Giải PhápChi PhíDung LượngTự ĐộngOffsite
Backup ra thư mục khác trên VPSTheo VPS❌ Vẫn trên cùng ổ
Tải về máy cá nhânTheo máy❌ Thủ công
Dịch vụ backup trả phí10-50$/tháng50-500GB
→ Google Drive + Cron (bài này)15GB miễn phí

Yêu Cầu

Phần 1: Cài Đặt Rclone - Công Cụ Sync Với Google Drive

Rclone là công cụ dòng lệnh mạnh mẽ để đồng bộ file với 40+ cloud storage, bao gồm Google Drive. Cài đặt cực nhanh:

sudo apt update
sudo apt install -y rclone

Kiểm tra phiên bản:

rclone version

Phần 2: Kết Nối Rclone Với Google Drive

Bước 2.1: Tạo Google Cloud Project (5 phút)

  1. Truy cập Google Cloud Console
  2. Tạo project mới → đặt tên "VPS Backup"
  3. Vào APIs & Services → Enable APIs → tìm "Google Drive API" → Enable
  4. Vào APIs & Services → Credentials → Create Credentials → OAuth Client ID
  5. Chọn "Desktop App" → tạo → tải file JSON credentials về

Bước 2.2: Cấu Hình Rclone Trên VPS

Upload file JSON credentials lên VPS (dùng SCP hoặc copy-paste nội dung):

# Tạo file credentials trên VPS
nano ~/rclone-credentials.json
# Dán nội dung file JSON đã tải từ Google Cloud Console

Chạy wizard cấu hình:

rclone config

Làm theo hướng dẫn:

n) New remote
name> gdrive           ← Đặt tên remote là "gdrive"
Storage> drive          ← Chọn Google Drive
client_id>              ← Để trống (dùng OAuth mặc định của rclone)
client_secret>          ← Để trống
scope> 1                ← Full access
root_folder_id>         ← Để trống
service_account_file>   ← Để trống
Edit advanced config? n
Use auto config? n       ← QUAN TRỌNG: chọn "n" vì đang trên VPS không có browser

Lúc này rclone sẽ hiển thị 1 link. Mở link đó trên máy tính của bạn, đăng nhập Google, copy mã xác thực, và dán lại vào terminal VPS.

Xác nhận cấu hình thành công:

rclone lsd gdrive:          # Liệt kê thư mục trong Google Drive
rclone about gdrive:        # Xem dung lượng còn trống

Phần 3: Tạo Script Backup Toàn Diện

Script này sẽ backup cả file websitedatabase MySQL, nén lại, và upload lên Google Drive. Tự động xóa backup cũ hơn 7 ngày.

nano ~/backup.sh

Dán nội dung sau (sửa các biến cho phù hợp):

#!/bin/bash

# === CẤU HÌNH - SỬA THEO WEBSITE CỦA BẠN ===
SITE_NAME="mywebsite"                          # Tên website
WEB_ROOT="/var/www/html"                       # Thư mục chứa code
DB_NAME="wordpress_db"                         # Tên database
DB_USER="root"                                 # User database
DB_PASS="your_db_password"                     # Pass database
BACKUP_DIR="/root/backups"                     # Nơi lưu backup tạm
GDRIVE_FOLDER="gdrive:VPS-Backups"             # Thư mục trên Google Drive
RETENTION_DAYS=7                               # Giữ backup trong 7 ngày

# === BẮT ĐẦU BACKUP ===
DATE=$(date +%Y-%m-%d_%H-%M)
mkdir -p $BACKUP_DIR

echo "[$(date)] Bắt đầu backup $SITE_NAME..."

# 1. Backup database MySQL
echo "[$(date)] Backup database $DB_NAME..."
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > "$BACKUP_DIR/${SITE_NAME}_db_${DATE}.sql.gz"

# 2. Backup file website
echo "[$(date)] Backup file website..."
tar -czf "$BACKUP_DIR/${SITE_NAME}_files_${DATE}.tar.gz" -C $WEB_ROOT .

# 3. Tạo file info
echo "Backup date: $DATE" > "$BACKUP_DIR/${SITE_NAME}_info_${DATE}.txt"
echo "Site: $SITE_NAME" >> "$BACKUP_DIR/${SITE_NAME}_info_${DATE}.txt"
du -sh $WEB_ROOT >> "$BACKUP_DIR/${SITE_NAME}_info_${DATE}.txt"

# 4. Upload lên Google Drive
echo "[$(date)] Uploading to Google Drive..."
rclone copy "$BACKUP_DIR" "$GDRIVE_FOLDER" --include "${SITE_NAME}_*_${DATE}.*"

# 5. Xóa backup cũ hơn $RETENTION_DAYS ngày
echo "[$(date)] Cleaning old backups..."
find $BACKUP_DIR -name "${SITE_NAME}_*" -mtime +$RETENTION_DAYS -delete
rclone delete --min-age ${RETENTION_DAYS}d "$GDRIVE_FOLDER"

echo "[$(date)] Backup hoàn tất! ✅"
echo "---"
# Liệt kê backup mới nhất
rclone ls $GDRIVE_FOLDER | tail -5

Cấp quyền thực thi:

chmod +x ~/backup.sh

Test chạy thử:

./backup.sh

Phần 4: Tự Động Backup Hàng Ngày Với Cron Job

Thiết lập cron chạy backup lúc 3:00 sáng mỗi ngày (giờ thấp điểm):

crontab -e

Thêm dòng sau:

# Backup tự động lúc 3:00 AM hàng ngày
0 3 * * * /root/backup.sh >> /var/log/backup.log 2>&1

Kiểm tra cron đã được thêm:

crontab -l
🕐 Gợi ý thời gian backup: 3:00 AM là thời điểm ít người truy cập nhất, server rảnh, backup nhanh hơn. Nếu website có traffic quốc tế, chọn thời điểm thấp điểm của đối tượng chính.

Phần 5: Backup Nhiều Website Cùng Lúc

Nếu VPS của bạn chạy nhiều website, tạo script backup hàng loạt:

nano ~/backup-all.sh
#!/bin/bash

# Mảng các website cần backup
declare -A SITES
SITES["site1"]="/var/www/site1|db_site1|user1|pass1"
SITES["site2"]="/var/www/site2|db_site2|user2|pass2"
SITES["site3"]="/var/www/site3|db_site3|user3|pass3"

for SITE_NAME in "${!SITES[@]}"; do
    IFS='|' read -r WEB_ROOT DB_NAME DB_USER DB_PASS <<< "${SITES[$SITE_NAME]}"

    echo "=== Backup $SITE_NAME ==="
    mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > "/root/backups/${SITE_NAME}_db_$(date +%Y-%m-%d).sql.gz"
    tar -czf "/root/backups/${SITE_NAME}_files_$(date +%Y-%m-%d).tar.gz" -C $WEB_ROOT .
done

# Upload tất cả lên Google Drive
rclone copy /root/backups/ gdrive:VPS-Backups/ --include "*$(date +%Y-%m-%d)*"

echo "All backups done! ✅"

Phần 6: Backup Database Riêng (Không Cần Web Files)

Nếu bạn chỉ cần backup database (dùng cho app Node.js/Python không có file tĩnh):

#!/bin/bash
DB_NAME="myapp_db"
DB_USER="appuser"
DB_PASS="apppass"
DATE=$(date +%Y-%m-%d_%H-%M)

mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > "/root/backups/${DB_NAME}_${DATE}.sql.gz"
rclone copy "/root/backups/${DB_NAME}_${DATE}.sql.gz" gdrive:DB-Backups/

# Giữ 30 bản backup database
rclone delete --min-age 30d gdrive:DB-Backups/
echo "DB backup done!"

Phần 7: Kiểm Tra Và Phục Hồi Backup

Backup mà không test restore = không có backup!

Kiểm tra backup tồn tại trên Google Drive:

rclone ls gdrive:VPS-Backups/
rclone size gdrive:VPS-Backups/

Phục hồi database:

# Tải backup mới nhất về
rclone copy gdrive:VPS-Backups/ /tmp/restore/ --include "*db_*.sql.gz"
cd /tmp/restore/
gunzip *.sql.gz

# Restore vào database
mysql -u root -p new_database_name < *.sql

Phục hồi file website:

rclone copy gdrive:VPS-Backups/ /tmp/restore/ --include "*files_*.tar.gz"
cd /tmp/restore/
tar -xzf *.tar.gz -C /var/www/restored_site/

Mẹo Nâng Cao

🔔 Nhận Thông Báo Backup Qua Telegram

Thêm vào cuối script backup:

# Gửi thông báo Telegram
BOT_TOKEN="YOUR_BOT_TOKEN"
CHAT_ID="YOUR_CHAT_ID"
MESSAGE="✅ Backup $SITE_NAME hoàn tất: $(date)"
curl -s "https://api.telegram.org/bot$BOT_TOKEN/sendMessage?chat_id=$CHAT_ID&text=$MESSAGE"

🔐 Mã Hóa Backup Trước Khi Upload

Dùng rclone crypt để mã hóa file trước khi lên Google Drive:

rclone config
# Tạo remote mới loại "crypt", trỏ đến gdrive:
# Tất cả file trong crypt remote sẽ được mã hóa AES-256

📊 Giám Sát Dung Lượng Backup

# Thêm cron job kiểm tra dung lượng hàng tuần
0 9 * * 1 rclone about gdrive: | mail -s "Google Drive Storage" your@email.com

Các Lỗi Thường Gặp

❌ "Failed to create file system: didn't find section in config file"

Chưa config rclone đúng. Chạy lại rclone config.

❌ "mysqldump: command not found"

Chưa cài MySQL client: sudo apt install -y mysql-client

❌ "Access denied" khi mysqldump

Kiểm tra user/pass database. Nếu dùng MariaDB: mysqldump giống hệt MySQL.

❌ Google Drive hết dung lượng

Giảm RETENTION_DAYS hoặc xóa file cũ thủ công. 15GB đủ cho backup WordPress trung bình trong 7-14 ngày.

❌ Token Google hết hạn

Token rclone mặc định không hết hạn, nhưng nếu refresh token bị thu hồi: rclone config reconnect gdrive:

Kết Luận

Với 30 phút cài đặt, bạn có hệ thống backup tự động, miễn phí, an toàn cho VPS của mình. Mỗi sáng thức dậy, dữ liệu website đã được sao lưu lên Google Drive — bạn hoàn toàn yên tâm dù có chuyện gì xảy ra.

Kết hợp VPS TrumVPS 40K/tháng + Google Drive 15GB miễn phí = bộ đôi hoàn hảo cho mọi web developer Việt Nam.

Cần VPS ổn định để backup yên tâm?

VPS TrumVPS từ 40K/tháng - NVMe SSD - Uptime 99.9% - Hỗ trợ 24/7

Mã giảm giá: 42089QPI03TI (-9%)

🚀 THUÊ VPS NGAY