Page 1 sur 1

[Bash] Script sauvegarde archives install...

Publié : 17 janv. 2024, 08:35
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.

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

Publié : 17 janv. 2024, 12:46
par Keros
Merci de ce partage Lost.