#!/bin/bash # Obtenir la date et l'heure actuelles current_date=$(date +%Y%m%d_%H%M%S) # Definitions archive_save="save_castopod.tar" rep_save="save_castopod" sources_save=("castopod/public/media" "castopod/.env") # Vérifier la présence d'une archive TAR if [ -e "$archive_save" ]; then echo "Démarrer l'extraction de l'archive TAR" pv "$archive_save" | tar xf - rm "$archive_save" echo "Extraction terminée." else echo "Aucune archive TAR '$archive_save' trouvée. Pas de sauvegarde précédente trouvée." fi echo " -- " # Synchroniser les fichiers sources avec le dossier de sauvegarde mkdir -vp "$rep_save/" echo " -- " echo "Sauvegarde des fichiers medias" # Parcourir le tableau des sources de sauvegarde for source in "${sources_save[@]}"; do # Afficher la source de sauvegarde echo "Source de sauvegarde : $source" rsync -a "$source" "$rep_save/" done echo " -- " # Vérifier la présence de l'archive ZIP if [[ -n $(ls castopod*.zip 2>/dev/null) ]]; then # Supprimer tous les fichiers et dossiers, sauf .env et public/media find castopod/ -not -name '.env' -not -path 'castopod/public/media/*' -delete # Extraire le fichier ZIP présent dans le dossier courant unzip -o -q castopod*.zip # Désactiver l'archive en renommant les fichiers ZIP en ajoutant ".old" à leur nom for file in castopod*.zip; do mv "$file" "${file}.old" done # Mettre à jour le schéma de la base de données /usr/bin/php8.1 castopod/spark castopod:database-update else echo "Aucune archive ZIP commençant par 'castopod' trouvée. Pas de mise à jour." fi echo " -- " # Créer une nouvelle archive compressée à partir du répertoire de sauvegarde et supprimer le répertoire if [ -e "$rep_save/" ]; then echo "Création de l'archive en cours '$archive_save'" # Créer l'archive avec tar et afficher la progression tar -cf - ./"$rep_save"/ -P | pv -s $(du -sb ./"$rep_save"/ | awk '{print $1}') > "$archive_save" echo "Création de l'archive terminée." echo " -- " # Supprimer le répertoire avec une barre de progression echo "Suppression du répertoire en cours '$rep_save/'" rm -vrf "$rep_save/" | pv -l -s $(du -a "$rep_save/" 2>/dev/null | wc -l) > /dev/null echo "Suppression du répertoire terminée." else echo "Le répertoire '$rep_save/' n'existe pas. Interruption de l'opération." fi echo " -- "