49 lines
1.3 KiB
Bash
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
|