feat: add comprehensive management scripts for CodiMD

Add 9 management scripts to simplify CodiMD operations:
- start.sh: Start services with automatic .env setup
- stop.sh: Stop all services gracefully
- restart.sh: Restart all services
- logs.sh: View real-time logs for any service
- status.sh: Check service status and resource usage
- backup.sh: Backup database, uploads, and environment
- restore.sh: Restore from backups with interactive selection
- update.sh: Update Docker images with automatic backup
- cleanup.sh: Clean unused Docker resources

Add SCRIPTS.md with comprehensive usage documentation and examples.

Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>
This commit is contained in:
2026-03-17 17:41:10 +08:00
parent cbe76b1f96
commit 9ea9eb4b61
10 changed files with 548 additions and 0 deletions

80
restore.sh Executable file
View File

@@ -0,0 +1,80 @@
#!/bin/bash
# CodiMD 還原腳本
set -e
BACKUP_DIR="./backups"
echo "🔄 CodiMD 還原腳本"
echo ""
# 列出可用的備份
if [ ! -d "$BACKUP_DIR" ] || [ -z "$(ls -A $BACKUP_DIR/*.sql 2>/dev/null)" ]; then
echo "❌ 找不到備份檔案"
exit 1
fi
echo "📂 可用的備份:"
ls -lht "$BACKUP_DIR"/*.sql 2>/dev/null | head -10
echo ""
# 詢問要還原的備份
read -p "請輸入要還原的備份檔案名稱 (例如: database_20260317_120000.sql): " BACKUP_FILE
if [ ! -f "$BACKUP_DIR/$BACKUP_FILE" ]; then
echo "❌ 找不到檔案: $BACKUP_DIR/$BACKUP_FILE"
exit 1
fi
# 提取時間戳記
TIMESTAMP=$(echo "$BACKUP_FILE" | sed 's/database_\(.*\).sql/\1/')
echo ""
echo "⚠️ 警告:還原資料庫會覆蓋現有資料!"
read -p "確定要還原嗎?(yes/no): " CONFIRM
if [ "$CONFIRM" != "yes" ]; then
echo "❌ 取消還原"
exit 0
fi
echo ""
echo "🔄 開始還原..."
# 1. 還原資料庫
echo "📦 還原資料庫..."
docker-compose exec -T database psql -U codimd codimd < "$BACKUP_DIR/$BACKUP_FILE"
if [ $? -eq 0 ]; then
echo "✅ 資料庫還原完成"
else
echo "❌ 資料庫還原失敗"
exit 1
fi
# 2. 詢問是否還原上傳檔案
UPLOAD_FILE="$BACKUP_DIR/uploads_$TIMESTAMP.tar.gz"
if [ -f "$UPLOAD_FILE" ]; then
read -p "是否還原上傳檔案?(yes/no): " RESTORE_UPLOAD
if [ "$RESTORE_UPLOAD" = "yes" ]; then
echo "📁 還原上傳檔案..."
rm -rf upload-data/*
tar -xzf "$UPLOAD_FILE"
echo "✅ 上傳檔案還原完成"
fi
fi
# 3. 詢問是否還原環境設定
ENV_FILE="$BACKUP_DIR/env_$TIMESTAMP.env"
if [ -f "$ENV_FILE" ]; then
read -p "是否還原環境設定?(yes/no): " RESTORE_ENV
if [ "$RESTORE_ENV" = "yes" ]; then
echo "📝 還原環境設定..."
cp "$ENV_FILE" .env
echo "✅ 環境設定還原完成"
echo "⚠️ 請執行 ./restart.sh 以套用新設定"
fi
fi
echo ""
echo "✅ 還原完成!"