#!/bin/bash # Configuration PROJECT_DIR="$(pwd)" TIMESTAMP=$(date +"%Y%m%d_%H%M%S") BACKUP_DIR="${PROJECT_DIR}/backups" BACKUP_FILE="${BACKUP_DIR}/kv_tiktok_backup_${TIMESTAMP}.zip" # Create backup directory if it doesn't exist if [ ! -d "$BACKUP_DIR" ]; then echo "Creating backup directory: $BACKUP_DIR" mkdir -p "$BACKUP_DIR" fi echo "Starting backup of ${PROJECT_DIR}..." echo "Target file: ${BACKUP_FILE}" # Zip the project contents, excluding heavy/generated folders # Using -r for recursive, -q for quiet (optional), -x to exclude patterns zip -r "$BACKUP_FILE" . \ -x "*.git*" \ -x "*.venv*" \ -x "*node_modules*" \ -x "*__pycache__*" \ -x "*.DS_Store" \ -x "*backend/downloads*" \ -x "*backend/cache*" \ -x "*backend/session*" \ -x "*frontend/dist*" \ -x "*backups*" \ -x "*.log" if [ $? -eq 0 ]; then echo "✅ Backup created successfully!" echo "📂 Location: ${BACKUP_FILE}" # Show file size if [[ "$OSTYPE" == "darwin"* ]]; then SIZE=$(stat -f%z "$BACKUP_FILE") else SIZE=$(stat -c%s "$BACKUP_FILE") fi # Convert to MB SIZE_MB=$(echo "scale=2; $SIZE / 1024 / 1024" | bc) echo "📦 Size: ${SIZE_MB} MB" else echo "❌ Backup failed!" exit 1 fi