跳到主內容

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/

備份指定網頁目錄

#!/bin/bash

# 來源目錄及目標目錄路徑
SRC_DIR="/var/www/"
DEST_DIR="/root/gcp/www/"

# 目錄列表
DIR_LIST=("web1" "web2" "web3")

# 備份及壓縮目錄語法
for DIR_NAME in "${DIR_LIST[@]}"; do
  FILE_NAME="${DEST_DIR}${DIR_NAME}.tar.gz"
  tar zcf "$FILE_NAME" -C "$SRC_DIR" "$DIR_NAME"
  echo "備份目錄 $DIR_NAME 為 $FILE_NAME 完成"
done

echo "所有目錄備份完成"