Renommage generique : scripts Gitea - Docker avec DOCKER_APP_NAME
- Scripts renommes: gitea-backup.sh - docker-backup.sh, gitea-auto-update.sh - docker-auto-update.sh, gitea-scripts.conf - docker-scripts.conf - HOSTNAME dynamique via hostname, utilise dans BACKUP_DIR - DOCKER_APP_NAME comme variable maitresse derivant conteneurs, volumes, logs, chemins de backup - Configuration unifiee reutilisable pour toute app Docker - README, install_cron.sh, setup.sh, restore.sh mis a jour
This commit is contained in:
+39
-37
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# install_cron.sh — Installe les scripts Gitea dans la crontab
|
||||
# install_cron.sh — Installe les scripts Docker dans la crontab
|
||||
# =============================================================================
|
||||
# Usage :
|
||||
# bash install_cron.sh → Installation interactive
|
||||
@@ -9,30 +9,32 @@
|
||||
# bash install_cron.sh --status → Vérifie si les crons sont actifs
|
||||
# bash install_cron.sh --dry-run → Affiche ce qui serait installé
|
||||
#
|
||||
# Paramètres configurables : voir gitea-scripts.conf
|
||||
# Paramètres configurables : voir docker-scripts.conf
|
||||
# =============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# ─── Charger la configuration commune ─────────────────────────────────────────
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
CONFIG_FILE="${CONFIG_FILE:-$SCRIPT_DIR/gitea-scripts.conf}"
|
||||
CONFIG_FILE="${CONFIG_FILE:-$SCRIPT_DIR/docker-scripts.conf}"
|
||||
|
||||
if [[ -f "$CONFIG_FILE" ]]; then
|
||||
# shellcheck source=/dev/null
|
||||
source "$CONFIG_FILE"
|
||||
fi
|
||||
|
||||
DOCKER_APP_NAME="${DOCKER_APP_NAME:-gitea}"
|
||||
|
||||
# ─── Configuration locale ────────────────────────────────────────────────────
|
||||
SCRIPTS_DIR="${SCRIPTS_DIR:-$HOME/scripts}"
|
||||
CRON_BACKUP_SCHEDULE="${CRON_BACKUP_SCHEDULE:-0 2 * * *}"
|
||||
CRON_UPDATE_SCHEDULE="${CRON_UPDATE_SCHEDULE:-0 4 * * *}"
|
||||
BACKUP_SCRIPT="${BACKUP_SCRIPT:-gitea-backup.sh}"
|
||||
UPDATE_SCRIPT="${UPDATE_SCRIPT:-gitea-auto-update.sh}"
|
||||
BACKUP_SCRIPT="${BACKUP_SCRIPT:-docker-backup.sh}"
|
||||
UPDATE_SCRIPT="${UPDATE_SCRIPT:-docker-auto-update.sh}"
|
||||
LOG_DIR="${LOG_DIR:-/var/log}"
|
||||
BACKUP_LOG="${BACKUP_LOG:-$LOG_DIR/gitea-backup-cron.log}"
|
||||
UPDATE_LOG="${UPDATE_LOG:-$LOG_DIR/gitea-update-cron.log}"
|
||||
CRON_MARKER="${CRON_MARKER:-# >>> GITEA SCRIPTS (managed by install_cron.sh) <<<}"
|
||||
BACKUP_LOG="${BACKUP_LOG:-$LOG_DIR/${DOCKER_APP_NAME}-backup-cron.log}"
|
||||
UPDATE_LOG="${UPDATE_LOG:-$LOG_DIR/${DOCKER_APP_NAME}-update-cron.log}"
|
||||
CRON_MARKER="${CRON_MARKER:-# >>> ${DOCKER_APP_NAME^^} SCRIPTS (managed by install_cron.sh) <<<}"
|
||||
|
||||
# Détection de l'utilisateur
|
||||
CRON_USER="${CRON_USER:-$USER}"
|
||||
@@ -54,7 +56,7 @@ Options :
|
||||
--force Installation sans confirmation
|
||||
--dry-run Affiche ce qui serait installé sans rien faire
|
||||
--uninstall Retire les scripts du cron
|
||||
--status Vérifie l'état des crons Gitea
|
||||
--status Vérifie l'état des crons
|
||||
--help Ce message
|
||||
|
||||
Configuration (variables d'environnement) :
|
||||
@@ -85,8 +87,8 @@ check_prerequisites() {
|
||||
fi
|
||||
|
||||
# Vérifier aussi la présence du fichier de config (optionnel mais recommandé)
|
||||
if [[ ! -f "$SCRIPTS_DIR/gitea-scripts.conf" ]]; then
|
||||
warn "Fichier de configuration introuvable : $SCRIPTS_DIR/gitea-scripts.conf"
|
||||
if [[ ! -f "$SCRIPTS_DIR/docker-scripts.conf" ]]; then
|
||||
warn "Fichier de configuration introuvable : $SCRIPTS_DIR/docker-scripts.conf"
|
||||
info "Les scripts utiliseront leurs valeurs par défaut"
|
||||
fi
|
||||
|
||||
@@ -98,11 +100,11 @@ build_cron_block() {
|
||||
cat << CRON_BLOCK
|
||||
|
||||
$CRON_MARKER
|
||||
# Backup quotidien Gitea (DB + volumes)
|
||||
# Backup quotidien (DB + volumes)
|
||||
$CRON_BACKUP_SCHEDULE $SCRIPTS_DIR/$BACKUP_SCRIPT >> $BACKUP_LOG 2>&1
|
||||
# Vérification mise à jour Gitea Docker
|
||||
# Vérification mise à jour Docker
|
||||
$CRON_UPDATE_SCHEDULE $SCRIPTS_DIR/$UPDATE_SCRIPT >> $UPDATE_LOG 2>&1
|
||||
# >>> END GITEA SCRIPTS <<<
|
||||
# >>> END ${DOCKER_APP_NAME^^} SCRIPTS <<<
|
||||
CRON_BLOCK
|
||||
}
|
||||
|
||||
@@ -110,7 +112,7 @@ CRON_BLOCK
|
||||
show_status() {
|
||||
echo ""
|
||||
echo "════════════════════════════════════════════════════════"
|
||||
echo "📊 ÉTAT DES CRONS GITEA"
|
||||
echo "📊 ÉTAT DES CRONS"
|
||||
echo "════════════════════════════════════════════════════════"
|
||||
echo ""
|
||||
|
||||
@@ -119,12 +121,12 @@ show_status() {
|
||||
|
||||
# Vérifier présence du marqueur
|
||||
if echo "$current_cron" | grep -qF "$CRON_MARKER"; then
|
||||
ok "Bloc Gitea trouvé dans la crontab de $CRON_USER"
|
||||
ok "Bloc de scripts trouvé dans la crontab de $CRON_USER"
|
||||
echo ""
|
||||
|
||||
echo "Entrées actives :"
|
||||
# Extraire toutes les lignes entre les marqueurs
|
||||
echo "$current_cron" | sed -n "/$CRON_MARKER/,/>>> END GITEA SCRIPTS <<</p" | while read -r line; do
|
||||
echo "$current_cron" | sed -n "/$CRON_MARKER/,/>>> END ${DOCKER_APP_NAME^^} SCRIPTS <</p" | while read -r line; do
|
||||
# Ignorer les marqueurs et les commentaires
|
||||
[[ "$line" =~ ^[[:space:]]*# ]] && continue
|
||||
[[ -z "$line" ]] && continue
|
||||
@@ -135,7 +137,7 @@ show_status() {
|
||||
echo " 🕐 $schedule → $cmd"
|
||||
done
|
||||
else
|
||||
warn "Aucun cron Gitea installé"
|
||||
warn "Aucun cron installé"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
@@ -158,10 +160,10 @@ show_status() {
|
||||
fi
|
||||
|
||||
# Vérifier le fichier de config
|
||||
if [[ -f "$SCRIPTS_DIR/gitea-scripts.conf" ]]; then
|
||||
ok "Config : $SCRIPTS_DIR/gitea-scripts.conf"
|
||||
if [[ -f "$SCRIPTS_DIR/docker-scripts.conf" ]]; then
|
||||
ok "Config : $SCRIPTS_DIR/docker-scripts.conf"
|
||||
else
|
||||
warn "Config : $SCRIPTS_DIR/gitea-scripts.conf (absent)"
|
||||
warn "Config : $SCRIPTS_DIR/docker-scripts.conf (absent)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
@@ -195,7 +197,7 @@ show_status() {
|
||||
do_install() {
|
||||
echo ""
|
||||
echo "════════════════════════════════════════════════════════"
|
||||
echo "🔧 INSTALLATION DES CRONS GITEA"
|
||||
echo "🔧 INSTALLATION DES CRONS"
|
||||
echo "════════════════════════════════════════════════════════"
|
||||
echo ""
|
||||
info "Utilisateur : $CRON_USER"
|
||||
@@ -209,7 +211,7 @@ do_install() {
|
||||
echo ""
|
||||
err "Prérequis manquants. Placez les scripts dans $SCRIPTS_DIR/"
|
||||
echo ""
|
||||
echo " git clone https://git.dracodev.net/Outils/gitea-scripts.git $SCRIPTS_DIR"
|
||||
echo " git clone https://git.dracodev.net/Outils/docker-scripts.git $SCRIPTS_DIR"
|
||||
echo ""
|
||||
exit 1
|
||||
}
|
||||
@@ -222,13 +224,13 @@ do_install() {
|
||||
if [[ ! -d "$LOG_DIR" ]]; then
|
||||
mkdir -p "$LOG_DIR" 2>/dev/null || {
|
||||
warn "Impossible de créer $LOG_DIR — les logs iront dans \$HOME"
|
||||
BACKUP_LOG="$HOME/gitea-backup-cron.log"
|
||||
UPDATE_LOG="$HOME/gitea-update-cron.log"
|
||||
BACKUP_LOG="$HOME/${DOCKER_APP_NAME}-backup-cron.log"
|
||||
UPDATE_LOG="$HOME/${DOCKER_APP_NAME}-update-cron.log"
|
||||
}
|
||||
elif [[ ! -w "$LOG_DIR" ]]; then
|
||||
warn "Pas de droit d'écriture sur $LOG_DIR — les logs iront dans \$HOME"
|
||||
BACKUP_LOG="$HOME/gitea-backup-cron.log"
|
||||
UPDATE_LOG="$HOME/gitea-update-cron.log"
|
||||
BACKUP_LOG="$HOME/${DOCKER_APP_NAME}-backup-cron.log"
|
||||
UPDATE_LOG="$HOME/${DOCKER_APP_NAME}-update-cron.log"
|
||||
fi
|
||||
|
||||
# Lire la crontab actuelle
|
||||
@@ -237,7 +239,7 @@ do_install() {
|
||||
|
||||
# Vérifier si déjà installé
|
||||
if echo "$current_cron" | grep -qF "$CRON_MARKER"; then
|
||||
warn "Les crons Gitea sont déjà installés"
|
||||
warn "Les crons sont déjà installés"
|
||||
info "Utilisez --uninstall pour les retirer d'abord, ou --force pour réinstaller"
|
||||
show_status
|
||||
exit 0
|
||||
@@ -260,8 +262,8 @@ do_install() {
|
||||
echo "📋 RÉSUMÉ"
|
||||
echo "────────────────────────────────────────────────────────"
|
||||
echo ""
|
||||
echo " 🕐 $CRON_BACKUP_SCHEDULE → Backup Gitea"
|
||||
echo " 🕐 $CRON_UPDATE_SCHEDULE → Vérification màj Gitea"
|
||||
echo " 🕐 $CRON_BACKUP_SCHEDULE → Backup"
|
||||
echo " 🕐 $CRON_UPDATE_SCHEDULE → Vérification màj"
|
||||
echo ""
|
||||
echo " 📊 Logs :"
|
||||
echo " Backup : $BACKUP_LOG"
|
||||
@@ -303,7 +305,7 @@ do_dry_run() {
|
||||
do_uninstall() {
|
||||
echo ""
|
||||
echo "════════════════════════════════════════════════════════"
|
||||
echo "🗑️ DÉSINSTALLATION DES CRONS GITEA"
|
||||
echo "🗑️ DÉSINSTALLATION DES CRONS"
|
||||
echo "════════════════════════════════════════════════════════"
|
||||
echo ""
|
||||
|
||||
@@ -311,13 +313,13 @@ do_uninstall() {
|
||||
current_cron=$(crontab -l 2>/dev/null || echo "")
|
||||
|
||||
if ! echo "$current_cron" | grep -qF "$CRON_MARKER"; then
|
||||
warn "Aucun cron Gitea trouvé — rien à désinstaller"
|
||||
warn "Aucun cron trouvé — rien à désinstaller"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Retirer le bloc entre les marqueurs
|
||||
local new_cron
|
||||
new_cron=$(echo "$current_cron" | sed "/$CRON_MARKER/,/>>> END GITEA SCRIPTS <<</d")
|
||||
new_cron=$(echo "$current_cron" | sed "/$CRON_MARKER/,/>>> END ${DOCKER_APP_NAME^^} SCRIPTS <</d")
|
||||
|
||||
# Supprimer les lignes vides en trop
|
||||
new_cron=$(echo "$new_cron" | sed '/^$/N;/^\n$/d')
|
||||
@@ -325,10 +327,10 @@ do_uninstall() {
|
||||
if [[ -z "${new_cron// }" ]]; then
|
||||
# Crontab complètement vide après suppression
|
||||
crontab -r 2>/dev/null || true
|
||||
ok "Crontab vidée et crons Gitea retirés"
|
||||
ok "Crontab vidée et crons retirés"
|
||||
else
|
||||
echo "$new_cron" | crontab -
|
||||
ok "Crons Gitea retirés de la crontab de $CRON_USER"
|
||||
ok "Crons retirés de la crontab de $CRON_USER"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
@@ -375,8 +377,8 @@ if [[ "$FORCE" != "true" ]]; then
|
||||
echo ""
|
||||
echo "Ce script va ajouter les entrées suivantes à la crontab de $CRON_USER :"
|
||||
echo ""
|
||||
echo " $CRON_BACKUP_SCHEDULE → Backup Gitea"
|
||||
echo " $CRON_UPDATE_SCHEDULE → Vérification màj Gitea"
|
||||
echo " $CRON_BACKUP_SCHEDULE → Backup"
|
||||
echo " $CRON_UPDATE_SCHEDULE → Vérification màj"
|
||||
echo ""
|
||||
read -p "Continuer ? [O/n] " -r REPLY
|
||||
if [[ ! "$REPLY" =~ ^[OoYy]?$ ]]; then
|
||||
|
||||
Reference in New Issue
Block a user