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 "所有目錄備份完成"