37 lines
1.2 KiB
Bash
37 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
umask 002
|
|
|
|
# Determinar raíz del proyecto (dos niveles arriba de este script)
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ROOT_DIR="${SCRIPT_DIR%/tools}"
|
|
BACKUPS_DIR="${ROOT_DIR}/backups"
|
|
mkdir -p "$BACKUPS_DIR" || { echo "ERROR: No se pudo crear $BACKUPS_DIR"; exit 1; }
|
|
chmod 775 "$BACKUPS_DIR" >/dev/null 2>&1 || true
|
|
|
|
if [ ! -w "$BACKUPS_DIR" ]; then
|
|
echo "ERROR: Sin permisos de escritura en $BACKUPS_DIR. Ajustá ownership/permisos para el usuario del servidor web."
|
|
exit 1
|
|
fi
|
|
|
|
TS="$(date +%Y%m%d_%H%M%S)"
|
|
OUT_ZIP="${BACKUPS_DIR}/backup_${TS}.zip"
|
|
|
|
# Verificar que 'zip' esté disponible; si no, intentar tar.gz
|
|
if command -v zip >/dev/null 2>&1; then
|
|
cd "$ROOT_DIR"
|
|
# Excluir directorios comunes que no queremos incluir
|
|
zip -r "$OUT_ZIP" . \
|
|
-x "*/.git/*" \
|
|
-x "backups/*" \
|
|
-x "*/node_modules/*" \
|
|
-x "*/vendor/*" \
|
|
-x "*.zip"
|
|
echo "OK: ZIP generado en $OUT_ZIP"
|
|
else
|
|
OUT_TGZ="${BACKUPS_DIR}/backup_${TS}.tar.gz"
|
|
cd "$ROOT_DIR"
|
|
tar --exclude="./.git" --exclude="./backups" --exclude="./node_modules" --exclude="./vendor" -czf "$OUT_TGZ" .
|
|
echo "OK: TAR.GZ generado en $OUT_TGZ (zip no disponible)"
|
|
fi
|