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>
79 lines
2.1 KiB
Bash
Executable File
79 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# CodiMD 備份腳本
|
|
|
|
set -e
|
|
|
|
# 備份目錄
|
|
BACKUP_DIR="./backups"
|
|
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
|
|
|
# 建立備份目錄
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
echo "💾 開始備份 CodiMD..."
|
|
echo "📅 備份時間: $(date)"
|
|
echo ""
|
|
|
|
# 1. 備份資料庫
|
|
echo "📦 備份 PostgreSQL 資料庫..."
|
|
docker-compose exec -T database pg_dump -U codimd codimd > "$BACKUP_DIR/database_$TIMESTAMP.sql"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
DB_SIZE=$(du -h "$BACKUP_DIR/database_$TIMESTAMP.sql" | cut -f1)
|
|
echo "✅ 資料庫備份完成 ($DB_SIZE)"
|
|
else
|
|
echo "❌ 資料庫備份失敗"
|
|
exit 1
|
|
fi
|
|
|
|
# 2. 備份上傳檔案
|
|
echo "📁 備份上傳檔案..."
|
|
UPLOAD_BACKUP="$BACKUP_DIR/uploads_$TIMESTAMP.tar.gz"
|
|
|
|
if [ -d "upload-data" ] && [ "$(ls -A upload-data)" ]; then
|
|
tar -czf "$UPLOAD_BACKUP" upload-data/
|
|
UPLOAD_SIZE=$(du -h "$UPLOAD_BACKUP" | cut -f1)
|
|
echo "✅ 上傳檔案備份完成 ($UPLOAD_SIZE)"
|
|
else
|
|
echo "⚠️ 沒有上傳檔案需要備份"
|
|
fi
|
|
|
|
# 3. 備份環境設定
|
|
echo "📝 備份環境設定..."
|
|
cp .env "$BACKUP_DIR/env_$TIMESTAMP.env"
|
|
echo "✅ 環境設定備份完成"
|
|
|
|
# 4. 建立備份資訊文件
|
|
cat > "$BACKUP_DIR/backup_$TIMESTAMP.txt" << EOF
|
|
CodiMD 備份資訊
|
|
================
|
|
備份時間: $(date)
|
|
備份類型: 完整備份
|
|
|
|
檔案清單:
|
|
- 資料庫: database_$TIMESTAMP.sql
|
|
- 上傳檔案: uploads_$TIMESTAMP.tar.gz
|
|
- 環境設定: env_$TIMESTAMP.env
|
|
|
|
還原方式:
|
|
1. 資料庫: cat database_$TIMESTAMP.sql | docker-compose exec -T database psql -U codimd codimd
|
|
2. 上傳檔案: tar -xzf uploads_$TIMESTAMP.tar.gz
|
|
3. 環境設定: cp env_$TIMESTAMP.env .env
|
|
EOF
|
|
|
|
echo ""
|
|
echo "✅ 備份完成!"
|
|
echo ""
|
|
echo "📂 備份位置: $BACKUP_DIR/"
|
|
ls -lh "$BACKUP_DIR" | grep "$TIMESTAMP"
|
|
echo ""
|
|
echo "💡 還原備份請查看: $BACKUP_DIR/backup_$TIMESTAMP.txt"
|
|
|
|
# 清理超過 30 天的舊備份
|
|
echo ""
|
|
echo "🧹 清理舊備份(超過 30 天)..."
|
|
find "$BACKUP_DIR" -name "database_*.sql" -mtime +30 -delete 2>/dev/null || true
|
|
find "$BACKUP_DIR" -name "uploads_*.tar.gz" -mtime +30 -delete 2>/dev/null || true
|
|
find "$BACKUP_DIR" -name "env_*.env" -mtime +30 -delete 2>/dev/null || true
|
|
echo "✅ 清理完成"
|