[Bash] Script sauvegarde archives install...

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
lost
Messages : 1511
Inscription : 12 nov. 2016, 11:01

[Bash] Script sauvegarde archives install...

Message par lost »

Hello,

Petit script pour simplifier les sauvegardes locales des archives d'installation, tous OS/Architectures supportés par domoticz, stable ou béta courante.

C'est plus forcément aussi utile qu'avant la 2024.2 dont le script d'upgrade stable fait désormais une sauvegarde (jusque là, seul le script bêta le faisait), mais il reste à mon sens des cas ou on peut vouloir réinstaller exactement la même version que celle qui tournait jusque là et qui peut avoir disparue poussée dehors par une stable/béta suivante. Je pense par exemple à un changement de matériel qui ferait changer d'architecture, ou un processus de sauvegarde ciblant uniquement l'essentiel, scripts et BDD, non l'arborescence complète domoticz...

Pour ceux que ça intéresse, sauver ce qui suit dans un fichier sous le nom get_dz_installs.sh par exemple et le rendre exécutable (chmod +x get_dz_installs.sh):

Code : Tout sélectionner

#!/bin/bash
# Scripts that'll download all Domoticz install files for current stable or beta release.

# Editable settings, if base download URL or supported OS/ARCH change someday...
# Base URL can be checked in domoticz/update[beta|release].sh scripts. 
DZ_DNLD_URL='https://www.domoticz.com/download.php?'
SYSTEMS='linux windows'
MACHINES='aarch64 armv7l x86_64 x86'

error()
{
 echo $1
 exit 1
}

usage()
{
  echo "Usage : $0 [b|s] ; Download all Domoticz beta/stable install archives..."
  exit 0
}

# Non foolproof args check:
[ $# -ne 1 ] && usage

case $1 in
  b | B) channel='beta';;
  s | S) channel='stable';;
  *)
    echo "Try better next time !"
    usage;;
esac

# Create install archives save directory:
today=$(date +"%y%m%d")
dirTd=$channel'_'$today
mkdir $dirTd || error "Could not make directory : $dirTd"
echo "Getting files for $channel/$today -> $dirTd/ ..."

# Download channel archives for all machine/system combinations:
for machine in $MACHINES
do
  for system in $SYSTEMS
  do
    dz_url="${DZ_DNLD_URL}channel=${channel}&type=release&system=${system}&machine=${machine}"
    #echo "Download ${system}/${machine} from ${dz_url}..."
    wget -4 -q -O $dirTd/domoticz_${channel}_${system}_${machine}.tgz --no-check-certificate ${dz_url}
    [ $? -ne 0 ] && echo "No $channel file for ${system}/${machine}..." || echo "Done, ${channel} for ${system}/${machine} !"
  done
done

# Remove zero-sized files that may result from non supported machine/system combinations...
find $dirTd -maxdepth 1 -size 0c -delete
 
echo "That's All Folks!!!"
exit 0
Ensuite, "./get_dz_installs.sh b" ou "./get_dz_installs.sh s" pour sauvegarder respectivement bêta ou stable courante dans un répertoire daté, ce qui donne par exemple pour une stable:

Code : Tout sélectionner

tree stable_240116/
stable_240116/
├── domoticz_stable_linux_aarch64.tgz
├── domoticz_stable_linux_armv7l.tgz
├── domoticz_stable_linux_x86_64.tgz
└── domoticz_stable_windows_x86.tgz
Pour l'installation, il faut par contre extraire manuellement l'archive adaptée à OS+Machine et gérer sa sauvegarde préalable éventuelle (si encore possible!). S'inspirer au besoin du contenu scripts updaterelease/updatebeta existants.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: [Bash] Script sauvegarde archives install...

Message par Keros »

Merci de ce partage Lost.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
Répondre