跳到主內容

bash

備份所有的mysql資料庫

#!/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

同步備份

#!/bin/bash
rsync -avz --delete --progress --exclude='cache/' --exclude='*demo*' root@ip:/etc/nginx/sites-enabled/ /4TB/conoha1/nginx/