Backup Tự Động Website VPS Lên Google Drive - Không Lo Mất Dữ Liệu, Miễn Phí 15GB
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ừ:
- 🖥️ Lỗi ổ cứng: Ổ SSD cũng có tuổi thọ, hỏng bất cứ lúc nào
- 🧑💻 Lỗi con người:
rm -rfnhầm thư mục, drop database sai tên - 🦠 Bị hack/mã độc: Ransomware mã hóa toàn bộ file
- ⚡ Sự cố nhà cung cấp: Data center cháy nổ, mất điện kéo dài
- 🔄 Update lỗi: Plugin/theme update làm hỏng site
So Sánh Các Giải Pháp Backup
| Giải Pháp | Chi Phí | Dung Lượng | Tự Động | Offsite |
|---|---|---|---|---|
| Backup ra thư mục khác trên VPS | 0đ | Theo VPS | ✅ | ❌ Vẫn trên cùng ổ |
| Tải về máy cá nhân | 0đ | Theo máy | ❌ Thủ công | ✅ |
| Dịch vụ backup trả phí | 10-50$/tháng | 50-500GB | ✅ | ✅ |
| → Google Drive + Cron (bài này) | 0đ | 15GB miễn phí | ✅ | ✅ |
Yêu Cầu
- VPS TrumVPS (Ubuntu 22.04/24.04)
- Tài khoản Google (15GB miễn phí)
- Website đang chạy (WordPress, PHP thuần, Node.js...)
- Quyền root hoặc sudo trên VPS
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)
- Truy cập Google Cloud Console
- Tạo project mới → đặt tên "VPS Backup"
- Vào APIs & Services → Enable APIs → tìm "Google Drive API" → Enable
- Vào APIs & Services → Credentials → Create Credentials → OAuth Client ID
- 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 website và database 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
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