95 lines
3.0 KiB
Bash
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"
|