kv-tiktok/backup_project.sh

49 lines
1.3 KiB
Bash

#!/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