以下 Shell 腳本示範如何利用 mysqldump 實現 MySQL 資料庫的定時自動備份,支援多資料庫、壓縮儲存與時間戳記命名。
#!/bin/bash
# 設定備份時間格式:年月日時分
BACKUP_TIME=$(date +%Y%m%d%H%M)
BACKUP_DIR="/sqlbak"
MYSQL_USER="root"
MYSQL_PASS="1234567890"
# 建立備份目錄
mkdir -p "${BACKUP_DIR}"
# 備份 products 資料庫
db="products"
echo "# 產品庫" > "${BACKUP_DIR}/${db}_${BACKUP_TIME}.sql"
mysqldump --add-drop-table -c --allow-keywords --force \
--user="${MYSQL_USER}" --password="${MYSQL_PASS}" "${db}" \
>> "${BACKUP_DIR}/${db}_${BACKUP_TIME}.sql"
# 備份 news 資料庫並壓縮
db="news"
echo "# 新聞庫" > "${BACKUP_DIR}/${db}_${BACKUP_TIME}.sql"
mysqldump --add-drop-table -c --allow-keywords --force \
--user="${MYSQL_USER}" --password="${MYSQL_PASS}" "${db}" \
| bzip2 -9 > "${BACKUP_DIR}/${db}_${BACKUP_TIME}.sql.bz2"
~/.my.cnf 而非腳本明文。cron 設定每日自動執行(如 0 2 * * * /path/backup.sh)。