48 lines
1.2 KiB
Bash
Executable File
48 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -Eeuo pipefail
|
|
|
|
dhv2_project="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
dhv2_requested="${1:-}"
|
|
|
|
if [ -z "$dhv2_requested" ]; then
|
|
echo "Uso: bash scripts/verify-backup.sh /var/www/dh-backup/dhv2-..." >&2
|
|
exit 1
|
|
fi
|
|
|
|
dhv2_backup="$(realpath -e "$dhv2_requested")"
|
|
case "$dhv2_backup" in
|
|
/var/www/dh-backup/dhv2-*) ;;
|
|
*) echo "Ruta de backup no permitida: $dhv2_backup" >&2; exit 1 ;;
|
|
esac
|
|
|
|
for dhv2_file in source.tar.gz database.dump .env MANIFEST.txt SHA256SUMS; do
|
|
test -s "$dhv2_backup/$dhv2_file" || { echo "Falta $dhv2_file" >&2; exit 1; }
|
|
done
|
|
|
|
test "$(stat -c '%a' "$dhv2_backup/.env")" = "600" || {
|
|
echo "El backup de .env no tiene permisos 600" >&2
|
|
exit 1
|
|
}
|
|
|
|
(
|
|
cd "$dhv2_backup"
|
|
sha256sum -c SHA256SUMS
|
|
)
|
|
|
|
dhv2_archive_listing="$(tar -tzf "$dhv2_backup/source.tar.gz")"
|
|
if grep -Eq '(^|/)\.env$|(^|/)(node_modules|dist)/' <<< "$dhv2_archive_listing"; then
|
|
echo "El archivo de fuentes contiene elementos excluidos" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f "$dhv2_backup/asset-media.tar.gz" ]; then
|
|
tar -tzf "$dhv2_backup/asset-media.tar.gz" >/dev/null
|
|
fi
|
|
|
|
cd "$dhv2_project"
|
|
docker compose exec -T db pg_restore --list < "$dhv2_backup/database.dump" >/dev/null
|
|
|
|
echo "Backup verificable y legible: OK"
|
|
echo "$dhv2_backup"
|