4NK_env/scripts/backup_all.sh
LeCoffre Deployment 43a05a2742 clean
2025-09-25 12:19:35 +00:00

95 lines
3.0 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TS="$(date +%Y%m%d_%H%M%S)"
BK_DIR="$ROOT_DIR/backups/$TS"
mkdir -p "$BK_DIR"
# 1) Backup configurations actives Nginx
mkdir -p "$BK_DIR/nginx_conf"
if [[ -d "$ROOT_DIR/lecoffre_node/conf/nginx" ]]; then
cp -a "$ROOT_DIR/lecoffre_node/conf/nginx"/*.conf "$BK_DIR/nginx_conf/" 2>/dev/null || true
# Inclure éventuels assets utiles
if [[ -d "$ROOT_DIR/lecoffre_node/conf/nginx/assets" ]]; then
mkdir -p "$BK_DIR/nginx_conf/assets" && cp -a "$ROOT_DIR/lecoffre_node/conf/nginx/assets"/* "$BK_DIR/nginx_conf/assets/" 2>/dev/null || true
fi
fi
# 2) Backup .env.master centralisé
if [[ -f "$ROOT_DIR/.env.master" ]]; then
cp -a "$ROOT_DIR/.env.master" "$BK_DIR/.env.master"
fi
# 3) Ports ouverts et services associés
{
echo "# ss -tulpn"
(ss -tulpn || netstat -tulpn) 2>/dev/null || true
echo
echo "# docker compose ps (lecoffre_node)"
(cd "$ROOT_DIR/lecoffre_node" && docker compose ps) || true
echo
echo "# docker ps --format"
docker ps --format '{{.ID}} {{.Names}} {{.Ports}}' || true
} > "$BK_DIR/ports_and_services.txt"
# 4) Redirections Nginx et applicatives (synthèse)
NGINX_MAIN="$ROOT_DIR/lecoffre_node/conf/nginx/dev4.4nkweb.com-https.conf"
if [[ -f "$NGINX_MAIN" ]]; then
{
echo "# Nginx proxy_pass and locations"
awk '/location /{loc=$0} /proxy_pass/{print loc"\n "$0"\n"}' "$NGINX_MAIN" || true
echo
echo "# Explicit redirects (return 301/302)"
grep -nE '\breturn\s+30[12]\b' "$NGINX_MAIN" || true
} > "$BK_DIR/nginx_redirects_summary.txt"
fi
# 5) Liste des services lancés via lecoffre_node/docker-compose.yml
{
echo "# docker compose ls (context lecoffre_node)"
(cd "$ROOT_DIR/lecoffre_node" && docker compose ls) || true
echo
echo "# docker compose ps --services (running)"
(cd "$ROOT_DIR/lecoffre_node" && docker compose ps --services --filter status=running) || true
} > "$BK_DIR/compose_services.txt"
# 6) Sauvegarde du dossier data
if [[ -d "$ROOT_DIR/data" ]]; then
mkdir -p "$BK_DIR/data"
cp -a "$ROOT_DIR/data"/* "$BK_DIR/data/" 2>/dev/null || true
fi
# 7) Ne garder que 2 historiques
cd "$ROOT_DIR/backups"
ls -1dt 20* 2>/dev/null | tail -n +3 | xargs -r rm -rf
# 8) Vérifier ignores
ensure_ignore() {
local file="$1"; shift
local pattern
[[ -f "$file" ]] || return 0
for pattern in "$@"; do
if ! grep -qxF "$pattern" "$file" 2>/dev/null; then
echo "$pattern" >> "$file"
fi
done
}
ensure_ignore "$ROOT_DIR/.gitignore" \
"/home/debian/4NK_env/logs/" \
"/home/debian/4NK_env/backups/" \
"logs/" "backups/"
ensure_ignore "$ROOT_DIR/.cursorignore" \
"/home/debian/4NK_env/logs/" \
"/home/debian/4NK_env/backups/" \
"logs/" "backups/"
ensure_ignore "$ROOT_DIR/.dockerignore" \
"/home/debian/4NK_env/logs/" \
"/home/debian/4NK_env/backups/" \
"logs/" "backups/"
echo "$BK_DIR" > "$ROOT_DIR/backups/LAST_BACKUP"
ln -sfn "$BK_DIR" "$ROOT_DIR/backups/latest"
echo "[OK] Backup written in $BK_DIR"