Thumbnail
Category: Lập trình

Setup backup database tự động và upload lên google drive

Date: July 31, 2025
1 views

1. Setup backup database

1.1 Tạo file backup.sh

Tạo folder backup của riêng bạn. Structure folder của tôi như sau:

/var/www/dth/backup/mysql/backup.sh


Nội dung file backup.sh

#!/bin/bash

# Biến thời gian
DATE=$(date +"%Y%m%d")

# Thư mục gốc backup
BASE_DIR="/var/www/dth/backup/mysql"

# Thư mục backup theo ngày
BACKUP_DIR="$BASE_DIR/$DATE"
mkdir -p $BACKUP_DIR

# Thông tin kết nối
DB_USER=""
DB_PASS=""

# Danh sách các database cần backup
DATABASES=("database1" "database2" "database3") # ← Thay bằng tên thật

# Vòng lặp qua từng database
for DB_NAME in "${DATABASES[@]}"
do
  echo "Backing up $DB_NAME..."
  mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/${DB_NAME}_bk_$DATE.sql
done

# Thư mục đích trên Google Drive (đã tạo trước)
GDRIVE_FOLDER="FolderInGoogleDrive"

# Upload toàn bộ thư mục backup lên Google Drive
rclone copy $BACKUP_DIR gdrive:$GDRIVE_FOLDER/$DATE

# In ra kết quả
echo "✅ Backup và upload lên Google Drive thành công lúc $(date)"


Thay các thông tin của bạn vào:

  • BASE_DIR
  • DB_USER
  • DB_PASS
  • DATABASES (lưu ý cách nhau bằng dấu cách)
  • GDRIVE_FOLDER


1.2 Setup connect to google drive

Ở Server:

Cài đặt rclone:

curl https://rclone.org/install.sh | sudo bash

Cấu hình rclone:

rclone config

Sau đó làm theo hướng dẫn:

  • Chọn n để tạo cấu hình mới
  • Name: ví dụ đặt là gdrive
  • Storage: chọn google drive

Nó sẽ dạng như thế này:

Type of storage to configure.
Choose a number from below, or type in your own value.
...
22 / Google Drive

=> Bạn nhập số tương ứng là được

  • client_id> => nhấn enter
  • client_secret> => nhấn enter
  • Chọn loại tài khoản: Full access (gõ số như bước chọn storage)
  • Service Account File => nhấn enter
  • Use auto config? (y/n) => chọn n (do sử dụng VPS không có giao diện)
❗ Lưu ý: Nếu server của bạn không có giao diện (headless VPS), bạn có thể chọn "n" và dùng link xác thực thủ công.



Ở máy tính của bạn:

Vào trang:

👉 https://rclone.org/downloads/

Tải bản .zip dành cho Windows 64-bit

Giải nén thư mục (ví dụ: rclone-v1.65.2-windows-amd64)

Mở Command Prompt (CMD) hoặc PowerShell, chuyển tới thư mục đó:

.\rclone.exe authorize "drive"


Sau đó xác thực trên trình duyệt.

Khi thành công sẽ có dạng như này

PS C:\HaoDT\dl\rclone-v1.70.3-windows-amd64\rclone-v1.70.3-windows-amd64> .\rclone.exe authorize "drive"
2025/07/31 11:07:26 NOTICE: Config file "C:\\Users\\beleh\\AppData\\Roaming\\rclone\\rclone.conf" not found - using defaults
2025/07/31 11:07:26 NOTICE: Make sure your Redirect URL is set to "http://127.0.0.1:53682/" in your custom config.
2025/07/31 11:07:26 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=QA1wfImhUeOtyWyAXiYCPw
2025/07/31 11:07:26 NOTICE: Log in and authorize rclone for access
2025/07/31 11:07:26 NOTICE: Waiting for code...
2025/07/31 11:07:45 NOTICE: Got code
Paste the following into your remote machine --->
{"access_token":"bjbidfodsfiosdufisdjfsdnbxcjb","token_type":"Bearer","refresh_token":"1//0gPoc0YCl6Xt7CgYIARAAGBASNwF-L9IrXYz5umzbD1ly6EE695b_o_xd5lmenuTM5__TJfeXfFnzp8S9s0pbek1fUHKTrb-tngo","expiry":"2025-07-31T12:07:44.6236463+07:00","expires_in":3599}
<---End paste
PS C:\HaoDT\dl\rclone-v1.70.3-windows-amd64\rclone-v1.70.3-windows-amd64>

Copy đoạn json ở trên lại.


Quay lại server lúc nãy, dán đoạn json vào config_token>

  • Configure this as a Shared Drive (Team Drive)? => n
  • Keep this "gdrive" remote? => y

Hiện như bên dưới là ok nha

Current remotes:

Name         Type
====         ====
gdrive        drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>   

1.3 Test thử

vào thư mục của bạn và chạy file backup.sh

cd /var/www/dth/backup/mysql/
./backup.sh


1.4 Tạo crontab backup hàng tuần

crontab -e
0 2 * * 0 /var/www/dth/backup/mysql/backup.sh

Giải thích: Lệnh này sẽ chạy vào lúc 2:00 sáng mỗi Chủ Nhật, tức mỗi 7 ngày một lần.


=> Vậy là xong rồi, đơn giản phải không các bạn


Copyright © 2025 All Right Reserved