#126 Le 16/06/2025, à 17:35
- iznobe
Re : script d’automatisation sauvegardes
@Watael , on dirait de la prose ton code Chapeau tiré ! , c ' est exactement ce que j ' imaginais .
juste , un oubli certainement dans le " case " 16 , une ligne rsync en trop non ?
ou bien c' est pour faire une double sauvegarde ??
Après c' est rsync + SSH , il n' empêche que ca devrait fonctionner
Ca serait plus simple sans SSH et avec un montage dans le fstab.
on peut "factoriser" davantage
Ca me semble largement optimisé deja
Dernière modification par iznobe (Le 16/06/2025, à 18:13)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#127 Le 16/06/2025, à 17:51
- steph810
Re : script d’automatisation sauvegardes
oui,
Moi c'est un truc certe rapide, mais jouer avec les expression réguliere c'est bien dans l'urgence. ont voit c'est son truc :} ,Moi j'aime bien formaliser comme ca si je doit y revenir + tard j'arrive a suivre.
Après hors compétence ont dira.
Puis c'est sûr qu'a jouer si bien opti un script qui prendrais 30 secondes a s'executer fini a 5 secondes tous depend des transfert ensuite
Làdedans, lui manque just une fonction de .log pour debug au cas ou.
Oui, j'aime les fonctions
Dernière modification par steph810 (Le 16/06/2025, à 17:52)
Hors ligne
#128 Le 16/06/2025, à 18:12
- iznobe
Re : script d’automatisation sauvegardes
Par contre , si erreur de connexion a l ' ordi en SSH , comment cela se passe t-il avec ce code ?
car je n' ai pas vu de contrôle pour ca .
peut etre qu ' un
if [[ -d $src ]]; then
rsync --progress -a -v --delete-after -e ssh $user@$ip:"$src" "$dst" --backup --backup-dir="$bkp"
....
ne serait pas du luxe ?
ha ben oui , mais non , ca ne matchera jamais ...
sauf si montage dans fstab et commande rsync sans ssh . ( ou montage prealable dans le script .)
Dernière modification par iznobe (Le 16/06/2025, à 18:15)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#129 Le 16/06/2025, à 18:21
- Watael
Re : script d’automatisation sauvegardes
si j'ai bien compris :
if ! nc -z -w3 "$ip" "${portSSH:-22}"; then >&2 echo "ERR: $ip inaccessible sur ${portSSH:-22}"; exit 1; fi
à mettre au début du script : `pas la peine d'aller plus loin si le serveur n'est pas joignable.
Dernière modification par Watael (Le 16/06/2025, à 18:22)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#130 Le 16/06/2025, à 18:28
- iznobe
Re : script d’automatisation sauvegardes
oui , mais " $ip " est definie ( ou declarée ) dans le " case/esac " .
donc il faudrait mettre la ligne juste avant la commande rsync plutot non ? ou juste apres le case/esac en tout cas .
Dernière modification par iznobe (Le 16/06/2025, à 18:32)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#131 Le 16/06/2025, à 19:04
- eric63
Re : script d’automatisation sauvegardes
sans rien changer aux scripts
un reboot de l’ordi m’a remis les choses en place pour la reconnaissance du montage du portable qui me demande à l’ouverture de ma session le mdp du portable ce que je n‘arrivais pas à faire avec les essais précédents mais sans reboot
ok pour les ;
ok pour une commande une ligne
ok pour les $LINENO
ok pour Musiques (et la sauvegarde s’est faite conformément)
pourquoi y a-t-il deux fois if test "$ctrlID" = "$PartitionUID" (une fois implicite (dans le else du if test "$ctrlID" != "$PartitionUID"), et une fois explicite) ?
alors, que rien n'a été modifié; il y a seulement eu des affichages.
parce que avec kdialog --xxxx il y a obligatoirement un retour «OK» ou «Annuler» et on doit valider cette réponse. de plus ce controle ne se comporte pas de la même façon suivant que le disque est allumé avant l’ouverture de la session ou après
et je sais pas l’écrire autrement pour la boucle while do (j’avais utilisé dans un premier temps until [[ "$ctrlID" = "$PartitionUID" ]] do mais until est nouveau pour moi et je connais «mieux» while)
un while do suffit ??
"attendre avant de fermer la fenêtre" mais la fenêtre bloque le déroulement du script, et la boucle conditionnelle n'est pas réalisée.
lorsque le disque est monté la condition est remplie et on peut fermer la fenêtre , d’ailleurs si on ferme la fenêtre sans attendre le montage du disque celui ci est effectif à la reconnaissance du montage dans les 2 cas il faut appuyer sur le ok de la fenêtre
(cette dernière fenêtre n’est peut être pas utile après tout mais comme je me suis cassé les dents pas mal de temps à trouver la bonne façon de faire; mais heuuu )
j’ai pas fini tes factorisations en #124
Dernière modification par eric63 (Le 16/06/2025, à 19:22)
Kubuntu 25.04 wayland Plasma 6.3.4 KDE Qt 6.12.0 noyau 6.14.0-15 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR
Hors ligne
#132 Le 16/06/2025, à 19:07
- Watael
Re : script d’automatisation sauvegardes
oui , mais " $ip " est definie ( ou declarée ) dans le " case/esac " .
donc il faudrait mettre la ligne juste avant la commande rsync plutot non ? ou juste apres le case/esac en tout cas .
on peut faire une liste des ip tester et boucler dessus pour poursuivre le script, et redéfinir l'ip pour le rsync dans le case/esac.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#133 Le 16/06/2025, à 19:17
- geole
Re : script d’automatisation sauvegardes
si $resultats est obligatoirement un nombre (ou est vide) :
if test -z "$resultats" then echo est vide else if (( resultats == 1 )) then echo 1 elif (( resultats == 2 )) then #... fi fi
je me demande si un case/esac ne serait visuellement pas plus léger...
et, si $resultats est une liste de nombres, il ne serait pas inutile d'en faire une liste
readarray -t resultats < <(kdialog ...)
puis itérer sur la liste :
for item in "${resultats[@]} do if test -z "$item" then...
résultats est obligatoirement une liste de puissance de 2 (1 2 4 8 16 .....) avec des trous. Initialement, je croyais qu'il n'y aurait que quatre cas.D'où un test simple. On est maintenant à cinq cas et si un jour cela passe à six..... Donc il faut modifier pour passer à la lecture d'une liste.
.
Dernière modification par geole (Le 16/06/2025, à 19:19)
Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248
Hors ligne
#134 Le 16/06/2025, à 19:23
- iznobe
Re : script d’automatisation sauvegardes
iznobe a écrit :oui , mais " $ip " est definie ( ou declarée ) dans le " case/esac " .
donc il faudrait mettre la ligne juste avant la commande rsync plutot non ? ou juste apres le case/esac en tout cas .on peut faire une liste des ip tester et boucler dessus pour poursuivre le script, et redéfinir l'ip pour le rsync dans le case/esac.
Ba non , en faisant cela , si un des ordis n' est pas accessible alors , toutes les sauvegardes seront indisponibles . pas bon .
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#135 Le 16/06/2025, à 19:37
- eric63
Re : script d’automatisation sauvegardes
résultats est obligatoirement une liste de puissance de 2 (1 2 4 8 16 .....) avec des trous.
j’avais dans l’idée au départ de faire une addition des résultats pour avoir un total de 33 possibilités si on compte le 0 et que cela pourrait servir a dispatcher les sauvegardes
mais c’est inutile
Kubuntu 25.04 wayland Plasma 6.3.4 KDE Qt 6.12.0 noyau 6.14.0-15 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR
Hors ligne
#136 Le 16/06/2025, à 20:19
- Watael
Re : script d’automatisation sauvegardes
une liste de puissance de 2 (1 2 4 8 16
je ne suis pas bon en maths, mais quand même :
1² = 1
2² = 4
4² = 16
Ba non , en faisant cela , si un des ordis n' est pas accessible alors , toutes les sauvegardes seront indisponibles . pas bon .
mouais. il y a toujours moyen de "mémoriser" l'état du serveur pour chaque sauvegarde, et de ne pas la faire au cas où.
declare -Ai ipHS
ips=( 1.2.3.4 1.2.3.5 )
for ip in ${ips[@]}
do
nc -z -w3 $ip 22 || ipHS[$ip]=1
done
#...
case $i in
1) ip=...
test -n "${ipHS[$ip]}" && continue
2) ...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#137 Le 16/06/2025, à 20:46
- iznobe
Re : script d’automatisation sauvegardes
ba , oui , mais bon , ca devient limite là ...
Alors que , si c' est monté dans le fstab , il y a juste à faire un :
if [[ -d $src ]]; then rsync ...
.
et à supprimer ssh de la commande rsync . bien bien plus simple à mon goût
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#138 Le 16/06/2025, à 21:18
- eric63
Re : script d’automatisation sauvegardes
je ne suis pas bon en maths, mais quand même :
1² = 1
2² = 4
4² = 16
oui mais en binaire ça change tout
Kubuntu 25.04 wayland Plasma 6.3.4 KDE Qt 6.12.0 noyau 6.14.0-15 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR
Hors ligne
#139 Le 16/06/2025, à 21:30
- iznobe
Re : script d’automatisation sauvegardes
laliste des puissance de 2 , ca ne serait pas plutôt : 0,2,4,8,16,32 soit :
2⁰ ,2¹,2²,2³,2⁴,2⁵, etc .... Mais bon là n' est pas le sujet
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#140 Le 16/06/2025, à 21:33
- Watael
Re : script d’automatisation sauvegardes
une liste de puissance de 2
et pas liste de puissance 2 !
je l'ai dit "pas bon en maths" !
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#141 Le 16/06/2025, à 21:38
- iznobe
Re : script d’automatisation sauvegardes
sinon , y a le https://fr.wikipedia.org/wiki/Puissance_4 , c' est moins difficile que les maths
on s ' en fait une ?
Dernière modification par iznobe (Le 16/06/2025, à 21:50)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#142 Hier à 08:20
- eric63
Re : script d’automatisation sauvegardes
@ Watael
1)
echo Photos
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/MultimediasCommuns/Photos
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Photos/$date/
;;
c’est quoi la subtilité des ;; en fin de bloc
??? cosmétique ? différenciation ? pratique?
et en #125 pourquoi ferais tu le contraire ?? qu’est ce que ça apporte en plus ? je cherche à comprendre ton optimisation
Dernière modification par eric63 (Hier à 08:42)
Kubuntu 25.04 wayland Plasma 6.3.4 KDE Qt 6.12.0 noyau 6.14.0-15 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR
Hors ligne
#143 Hier à 09:03
- iznobe
Re : script d’automatisation sauvegardes
c’est quoi la subtilité des ;; en fin de bloc
??? cosmétique ? différenciation ? pratique?
c' est ce cette maniere que s ' ecrit syntaxiquement un "case/esac" en bash .
et en #125 pourquoi ferais tu le contraire ??
notamment, "attendre avant de fermer la fenêtre" mais la fenêtre bloque le déroulement du script, et la boucle conditionnelle n'est pas réalisée.
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#144 Hier à 09:32
- eric63
Re : script d’automatisation sauvegardes
ok pour les ;; c’est du style et de la norme, important donc
et ok pour le #125 : il ne restera plus rien de l’architecture du script d’origine mise à part les variables et les commandes
j’ai essayé le script avec #125 mais ça ne reconnaît pas le disque
je lance la commande manuellement dans konsole après que ma session soit ouverte le disque est allumé
#!/bin/bash
####6b) Créer le service d'exécution de la sauvegarde
###script de base geole modifié par iznobe et Watael de remplacement (plus simple) merci à eux
###voir https://forum.kubuntu-fr.org/viewtopic.php?id=2091380&p=5
### modifier les 2 premières variables du script
###Paramètres
MountPoint="/media/$USER/JEUX8T"
PartitionUID="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa"
ctrlID=$(findmnt -n --output UUID $MountPoint) ### controle si le disque monté
date=$(date +%F_%Hh%M)
###controle validité disque solution#125 Watael
until findmnt -n "$MountPoint"
do
echo $LINENO
>&2 echo "$MountPoint non trouvé.ALLUMER LE DISQUE EXTERNE"
read -p 'poursuivre la recherche ? [Yn] '
[[ $REPLY == n* ]] && { >&2 echo "abandon .ALLUMER LE DISQUE EXTERNE"; exit;}
done
ctrlID=$(findmnt -n --output UUID "$MountPoint")
echo $LINENO
if test "$CtrlID" != "$PartitionUID"
then
echo $LINENO
echo "ctrlID" $ctrlID
echo "partition "$PartitionUID
>&2 echo "$LINENO montage incorrect"
kdialog --error "Montage du disque incorrect "
exit 1
else
###controle validité disque ancienne version
#if [[ "$ctrlID" != "$PartitionUID" ]]
#then
# echo échec
# kdialog --error "Aucun disque reconnu ou disque éteint \n ALLUMER LE DISQUE EXTERNE \n AVANT de sélectionner «OK»"
# kdialog --error "attendre que le disque soit monté avant de fermer cette fenêtre \n la sauvegarde pourra être faite "
# # conditions de détection disque non monté (ctrlID vide)
# until [[ "$ctrlID" != "$PartitionUID" ]]
# do
# sleep 1
# #si le montage est reconnu mettre ctrlID à la bonne valeur
# ctrlID=$(findmnt -n --output UUID $MountPoint)
# sleep 1
# $LINENO
# echo "ctrlID" $ctrlID
# echo "partition"$PartitionUID
# sleep 1
# done
#else
echo réussite
echo "ctrlID" $ctrlID
echo "partition"$PartitionUID
kdialog --error "$LINENO le disque est monté \n la sauvegarde peut être faite maintenant "
### choix des sauvegardes
…
ça me donne
kubu@kubu-System-Product-Name:~$ /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
/media/kubu/JEUX8T /dev/sdc1 ext4 rw,nosuid,nodev,relatime,errors=remount-ro
23
26
ctrlID 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
partition 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
29 montage incorrect
kubu@kubu-System-Product-Name:~$
si je reboot l’ordi avec le disque resté allumé les 2 scripts sont lancés automatiquement
et j’ai juste une fenêtre de kdialog qui m’indique que le montage du disque est incorrect
et le script des sauvegarde est déclaré en échec dans le démarrage automatique
Dernière modification par eric63 (Hier à 11:36)
Kubuntu 25.04 wayland Plasma 6.3.4 KDE Qt 6.12.0 noyau 6.14.0-15 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR
Hors ligne
#145 Hier à 23:42
- eric63
Re : script d’automatisation sauvegardes
bon je suis revenu un peu en arrière avec le script la #125 ne fonctionnait pas j’ai essayé plusieurs façon sans succès
j’ai repris la version du #124
et j’ai réussi à supprimer la ligne qui chagrinait Watael sans provoquer de mauvais fonctionnement aux prix de sleep intermédiaires (sans ces sleep le script ne reconnaissait pas le disque ou bien le disque était reconnu mais pas monté)
et le choix et les sauvegardes se font correctement sauf le dossier incremental-DocumentsPartages (le seul essayé pour exemple) qui ne remplit pas sa fonction de récupération des anciennes versions de fichiers.
Dans mes premiers essais le dossier ne se créait pas donc je l’ai créé sans date mais ça n’a rien changé aucune création de fichier ou de dossier daté ayant un ancien fichier
le script version xxx
#!/bin/bash
####6b) Créer le service d'exécution de la sauvegarde
###script de base geole modifié par iznobe et Watael de remplacement (plus simple) merci à eux
###voir https://forum.kubuntu-fr.org/viewtopic.php?id=2091380&p=5
### modifier les 2 premières variables du script
###Paramètres
MountPoint="/media/$USER/JEUX8T"
PartitionUID="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa"
ctrlID=$(findmnt -n --output UUID $MountPoint) ### controle si le disque est monté
date=$(date +%F_%Hh%M)
###controle validité disque solution#125 Watael
#controle validité disque ancienne version
if [[ "$ctrlID" != "$PartitionUID" ]]
then
echo échec
echo "ctrlID" $ctrlID
echo "partition"$PartitionUID
kdialog --error "Aucun disque reconnu ou disque éteint \n ALLUMER LE DISQUE EXTERNE \n AVANT de sélectionner «OK»"
sleep 5
#kdialog --error "attendre que le disque soit monté avant de fermer cette fenêtre \n la sauvegarde pourra être faite "
# conditions de détection disque non monté (ctrlID vide)
while [[ "$ctrlID" != "$PartitionUID" ]]
do
sleep 2
#si le montage est reconnu mettre ctrlID à la bonne valeur
ctrlID=$(findmnt -n --output UUID $MountPoint)
sleep 1
$LINENO
echo "ctrlID" $ctrlID
echo "partition" $PartitionUID
sleep 1
done
else
echo réussite
echo "ctrlID" $ctrlID
echo "partition" $PartitionUID
kdialog --error " le disque est monté \n la sauvegarde peut être faite maintenant "
fi
### choix des sauvegardes
resultats=$(kdialog --separate-output --checklist "Selection liste:" 1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde DocumentsCommuns" off 16 "Sauvegarde DocumentsEricFanou" off)
for i in $resultats
###choix façon Watael
do
case $i in
1)
echo Photos
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/MultimediasCommuns/Photos
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Photos/$date/
;;
2)
echo Images
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/MultimediasCommuns/Images
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Images/$date/
;;
4)
echo Musiques
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/MultimediasCommuns/Musiques
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Musiques/$date/
;;
8)
echo DocumentsCommuns
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/DocumentsPartages
dst=/media/kubu/JEUX8T/SauvegardesDocumentsCommuns/
bkp=incremental-DocumentsPartages/$date/
;;
16)
echo DocumentsEricFanou
rsync --progress -a -v --delete-after -e /home/kubu/Documents /home/kubu/VMSauvegardesDocuments VMSauvegardesDocumentsEric/ --backup --backup-dir=incremental-DocumentsEric/$date/
user=fanou
ip=192.168.1.60
src=/home/fanou/Documents
dst=/home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/
bkp=incremental-DocumentsFanou/$date/
esac
kdialog --passivepopup "sauvegardes $resultats en cours" 10
rsync --progress -a -v --delete-after -e ssh $user@$ip:"$src" "$dst" --backup --backup-dir="$bkp"
done
kdialog --msgbox "FIN des sauvegardes $resultats "
Kubuntu 25.04 wayland Plasma 6.3.4 KDE Qt 6.12.0 noyau 6.14.0-15 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR
Hors ligne
#146 Aujourd'hui à 00:56
- steph810
Re : script d’automatisation sauvegardes
Bonjour,
Esssayer de tester fonction de debug et de log
Pour activer le debug voir ligne 26 et mettre 1 a la place de 0
log dispo dans ~/.logs
dite moi si fonctionnel.
https://bpa.st/N5PQ
Hors ligne