Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c22146b098 | ||
|
|
edd622a9d7 | ||
|
|
93a4dfedb4 |
49
backup.sh
49
backup.sh
@@ -7,7 +7,10 @@ cd "$(dirname "$0")"
|
||||
source .env
|
||||
|
||||
BACKUP_DIR="./backups"
|
||||
DATABASES=("sirh_prod" "inventory_prod" "lesstime_prod")
|
||||
DATABASES=("sirh_prod" "inventory_prod" "lesstime_prod" "starseed_prod")
|
||||
INVENTORY_DOCS_DIR="/var/www/inventory/storage"
|
||||
SIRH_DOCS_DIR="/var/www/sirh/uploads"
|
||||
LESSTIME_DOCS_DIR="/var/www/lesstime/uploads"
|
||||
DATE=$(date +%Y-%m-%d_%H%M%S)
|
||||
LOG_FILE="${BACKUP_DIR}/backup.log"
|
||||
WEBHOOK_URL="${DISCORD_WEBHOOK_URL:-}"
|
||||
@@ -30,7 +33,7 @@ discord() {
|
||||
|
||||
fail() {
|
||||
log "ERROR: $1"
|
||||
discord 16711680 "Backup PostgreSQL - ECHEC" "$1"
|
||||
discord 16711680 "Backup - ECHEC" "$1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -39,10 +42,15 @@ command -v docker &>/dev/null || fail "docker n'est pas installe"
|
||||
|
||||
# Supprimer les anciens backups (on ne garde que le dernier)
|
||||
rm -f "${BACKUP_DIR}"/*.sql
|
||||
# Garder les 3 derniers zips de documents, supprimer les plus anciens
|
||||
for PREFIX in inventory_docs sirh_docs lesstime_docs; do
|
||||
ls -t "${BACKUP_DIR}"/${PREFIX}-*.zip 2>/dev/null | tail -n +4 | xargs -r rm -f || true
|
||||
done
|
||||
|
||||
log "Debut backup PostgreSQL"
|
||||
|
||||
DETAILS=""
|
||||
DB_DETAILS=""
|
||||
DOC_DETAILS=""
|
||||
ERRORS=0
|
||||
|
||||
for DB in "${DATABASES[@]}"; do
|
||||
@@ -50,17 +58,44 @@ for DB in "${DATABASES[@]}"; do
|
||||
if docker compose exec -T postgres pg_dump -U admin "$DB" > "${BACKUP_DIR}/${DB}-${DATE}.sql" 2>/dev/null; then
|
||||
SIZE=$(du -h "${BACKUP_DIR}/${DB}-${DATE}.sql" | cut -f1)
|
||||
log "${DB} sauvegarde (${SIZE})"
|
||||
DETAILS="${DETAILS}\\n- **${DB}** : ${SIZE}"
|
||||
DB_DETAILS="${DB_DETAILS}\\n- **${DB}** : ${SIZE}"
|
||||
else
|
||||
log "ERREUR sur ${DB}"
|
||||
DETAILS="${DETAILS}\\n- **${DB}** : ERREUR"
|
||||
DB_DETAILS="${DB_DETAILS}\\n- **${DB}** : ERREUR"
|
||||
((ERRORS++))
|
||||
fi
|
||||
done
|
||||
|
||||
# Backup des documents (Inventory, SIRH, LessTime)
|
||||
declare -A DOC_DIRS=(
|
||||
["inventory_docs"]="$INVENTORY_DOCS_DIR"
|
||||
["sirh_docs"]="$SIRH_DOCS_DIR"
|
||||
["lesstime_docs"]="$LESSTIME_DOCS_DIR"
|
||||
)
|
||||
|
||||
for NAME in "${!DOC_DIRS[@]}"; do
|
||||
DIR="${DOC_DIRS[$NAME]}"
|
||||
if [[ -d "$DIR" ]]; then
|
||||
log "Zipping ${NAME}..."
|
||||
ZIP_FILE="${BACKUP_DIR}/${NAME}-${DATE}.zip"
|
||||
if zip -rq "$ZIP_FILE" "$DIR" 2>/dev/null; then
|
||||
SIZE=$(du -h "$ZIP_FILE" | cut -f1)
|
||||
log "${NAME} sauvegarde (${SIZE})"
|
||||
DOC_DETAILS="${DOC_DETAILS}\\n- **${NAME}** : ${SIZE}"
|
||||
else
|
||||
log "ERREUR sur ${NAME}"
|
||||
DOC_DETAILS="${DOC_DETAILS}\\n- **${NAME}** : ERREUR"
|
||||
((ERRORS++))
|
||||
fi
|
||||
else
|
||||
log "WARN: Dossier ${NAME} introuvable ($DIR)"
|
||||
DOC_DETAILS="${DOC_DETAILS}\\n- **${NAME}** : dossier introuvable"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $ERRORS -gt 0 ]]; then
|
||||
fail "Backup termine avec ${ERRORS} erreur(s) :${DETAILS}"
|
||||
fail "Backup termine avec ${ERRORS} erreur(s) :\\n\\n**BDD :**${DB_DETAILS}\\n\\n**Documents :**${DOC_DETAILS}"
|
||||
fi
|
||||
|
||||
log "Backup termine avec succes"
|
||||
discord 65280 "Backup PostgreSQL - OK" "Backup **${DATE}** termine\\n${DETAILS}"
|
||||
discord 65280 "Backup - OK" "Backup **${DATE}**\\n\\n**BDD :**${DB_DETAILS}\\n\\n**Documents (3 derniers conserves) :**${DOC_DETAILS}"
|
||||
|
||||
@@ -8,3 +8,14 @@ services:
|
||||
volumes:
|
||||
- ./data:/var/lib/postgresql/data
|
||||
restart: unless-stopped
|
||||
|
||||
adminer:
|
||||
image: adminer:latest
|
||||
container_name: adminer
|
||||
ports:
|
||||
- "8083:8080"
|
||||
environment:
|
||||
ADMINER_DEFAULT_SERVER: postgres
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- postgres
|
||||
|
||||
Reference in New Issue
Block a user