bash
#!/bin/bash
BACKUP_DIR="/root/backup/db"
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p $BACKUP_DIR
fi
# 刪除目錄中的 .gz 檔案
rm -f $BACKUP_DIR/*.gz
DATABASES=$(mysql -u root -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql)")
for DB in $DATABASES; do
BACKUP_FILE="$BACKUP_DIR/${DB}_backup_$(date +'%Y%m%d').sql"
MYSQLDUMP_CMD="mysqldump -u root $DB > $BACKUP_FILE"
echo "開始備份資料庫 $DB..."
eval $MYSQLDUMP_CMD
if [ $? -eq 0 ]; then
echo "資料庫 $DB 備份成功: $BACKUP_FILE"
gzip $BACKUP_FILE
echo "資料庫已壓縮: $BACKUP_FILE.gz"
# 顯示檔案大小,單位 MB
FILE_SIZE=$(du -m "$BACKUP_FILE.gz" | cut -f1)
echo "壓縮後檔案大小: $FILE_SIZE MB"
else
echo "資料庫 $DB 備份失敗"
fi
done
備份所有的mysql資料庫