feat: ship blog platform admin and deploy stack
This commit is contained in:
31
deploy/scripts/backup/backup-media.sh
Normal file
31
deploy/scripts/backup/backup-media.sh
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
BACKUP_DIR="${BACKUP_DIR:-./backups/media}"
|
||||
RETENTION_DAYS="${RETENTION_DAYS:-14}"
|
||||
TIMESTAMP="$(date -u +%Y%m%dT%H%M%SZ)"
|
||||
mkdir -p "${BACKUP_DIR}"
|
||||
|
||||
if [[ -n "${MEDIA_S3_SOURCE:-}" ]]; then
|
||||
TARGET_DIR="${BACKUP_DIR}/media-${TIMESTAMP}"
|
||||
mkdir -p "${TARGET_DIR}"
|
||||
aws s3 sync "${MEDIA_S3_SOURCE}" "${TARGET_DIR}" ${AWS_EXTRA_ARGS:-}
|
||||
ln -sfn "$(basename "${TARGET_DIR}")" "${BACKUP_DIR}/latest"
|
||||
find "${BACKUP_DIR}" -maxdepth 1 -mindepth 1 -type d -name 'media-*' -mtime +"${RETENTION_DAYS}" -exec rm -rf {} +
|
||||
echo "Media backup synced from ${MEDIA_S3_SOURCE} to ${TARGET_DIR}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
SOURCE_DIR="${MEDIA_SOURCE_DIR:-./uploads}"
|
||||
FILE_PATH="${BACKUP_DIR}/media-${TIMESTAMP}.tar.gz"
|
||||
|
||||
if [[ ! -d "${SOURCE_DIR}" ]]; then
|
||||
echo "Set MEDIA_SOURCE_DIR or MEDIA_S3_SOURCE before running this script" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tar -czf "${FILE_PATH}" -C "${SOURCE_DIR}" .
|
||||
ln -sfn "$(basename "${FILE_PATH}")" "${BACKUP_DIR}/latest.tar.gz"
|
||||
find "${BACKUP_DIR}" -type f -name 'media-*.tar.gz' -mtime +"${RETENTION_DAYS}" -delete
|
||||
|
||||
echo "Media backup written to ${FILE_PATH}"
|
||||
Reference in New Issue
Block a user