36 lines
872 B
Bash
Executable File
36 lines
872 B
Bash
Executable File
#!/bin/bash
|
|
# Immich Database Backup Script
|
|
|
|
BACKUP_DIR=~/immich/backups
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
BACKUP_FILE="$BACKUP_DIR/immich-db-$TIMESTAMP.sql.gz"
|
|
|
|
# Create backup directory if it doesn't exist
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
echo "Starting database backup: $(date)"
|
|
|
|
# Create backup
|
|
cd ~/immich
|
|
docker-compose exec -T postgres pg_dumpall -U postgres | gzip > "$BACKUP_FILE"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✓ Backup successful: $BACKUP_FILE"
|
|
|
|
# Get backup size
|
|
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
|
|
echo " Size: $SIZE"
|
|
|
|
# Keep only last 30 days of backups
|
|
find "$BACKUP_DIR" -name "immich-db-*.sql.gz" -mtime +30 -delete
|
|
|
|
# Count remaining backups
|
|
COUNT=$(ls -1 "$BACKUP_DIR"/immich-db-*.sql.gz 2>/dev/null | wc -l)
|
|
echo " Total backups: $COUNT"
|
|
else
|
|
echo "✗ Backup failed!"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Backup completed: $(date)"
|