/ hcms-directus_backup.sh
hcms-directus_backup.sh
 1  #!/bin/bash
 2  
 3  DATE=$(date +%Y-%m-%d)
 4  BACKUP_DIR="/backup/$DATE"
 5  
 6  mkdir -p "$BACKUP_DIR"
 7  echo "postgres:5432:${POSTGRES_DB}:${POSTGRES_USER}:${POSTGRES_PASSWORD}" > ~/.pgpass
 8  chmod 600 ~/.pgpass
 9  
10  echo "Starting backup: $DATE"
11  
12  echo "Postgres db..."
13  pg_dump -h postgres -w -Z6 -f "$BACKUP_DIR"/postgres.sql.gz -U "$POSTGRES_USER" "$POSTGRES_DB" 
14  rm -f ~/.pgpass
15  
16  echo "MinIO mirror..."
17  mc alias set minio http://minio:9000 "$MINIO_ROOT_USER" "$MINIO_ROOT_PASSWORD"
18  mc mirror minio/"$MINIO_BUCKET" "$BACKUP_DIR"/minio
19  
20  echo "Directus uploads..."
21  [ -n "$(ls -A '/data/uploads/')" ] && tar czvf "$BACKUP_DIR"/uploads.tar.gz /data/uploads
22  
23  echo "Rotating backups..."
24  ls -1dt /backup/* | tail -n +8 | xargs rm -rvf || true
25  
26  echo "Backup done."