88 lines
2.5 KiB
Bash
88 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
# Script Bash - castopod_update.sh
|
|
# Auteur : Cédric Abonnel
|
|
|
|
# Description : Script de mise à jour Castopod
|
|
|
|
# Version 23.12.14
|
|
|
|
# Definitions
|
|
rep_save="save_castopod"
|
|
sources_save=("castopod/public/media" "castopod/.env")
|
|
php_bin="/usr/bin/php8.1"
|
|
castopod_root="castopod"
|
|
|
|
|
|
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
|
|
|
|
# LEGACY 23.12.14 : Suppression de l'archive TAR si elle existe. Elle n'est plus gérée.
|
|
archive_file="save_castopod.tar"
|
|
|
|
if [ -f "$archive_file" ]; then
|
|
echo "L'archive $archive_file n'est plus gérée par le script. Seul le dossier 'save_castopod' est pris en compte."
|
|
rm -v "$archive_file"
|
|
fi
|
|
|
|
|
|
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 ceux présents dans sources_save
|
|
## Construire la commande find à partir du tableau sources_save
|
|
find_command="find \"$castopod_root/\" "
|
|
for source in "${sources_save[@]}"; do
|
|
if [ -d "$source" ]; then
|
|
### Si c'est un dossier, exclure tous les fichiers et sous-dossiers sous ce dossier
|
|
find_command+=" -type d -path \"$source\" -prune -o "
|
|
elif [ -f "$source" ]; then
|
|
### Si c'est un fichier, exclure ce fichier spécifique
|
|
find_command+=" -not -name \"$(basename "$source")\" -o "
|
|
fi
|
|
done
|
|
find_command+=" -delete"
|
|
|
|
## Exécuter la commande find
|
|
eval "$find_command"
|
|
|
|
|
|
# Extraire le fichier ZIP de mise à jour présent dans le dossier courant
|
|
echo "Mise à jour en cours de déploiement ... "
|
|
unzip -o -q castopod*.zip && echo " ... terminée."
|
|
|
|
|
|
# Désactiver l'archive en renommant les fichiers ZIP en ajoutant ".old" à leur nom
|
|
echo "Désactivation de l'archive de mise à jour."
|
|
for file in castopod*.zip; do
|
|
mv "$file" "${file}.old"
|
|
done
|
|
|
|
|
|
# Mettre à jour le schéma de la base de données
|
|
"$php_bin" castopod/spark castopod:database-update
|
|
|
|
|
|
else
|
|
echo "Aucune archive ZIP commençant par 'castopod' trouvée. Pas de mise à jour."
|
|
fi
|
|
|
|
echo " -- "
|
|
|