Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 06/06/2025, à 17:36

geole

Re : script d’automatisation sauvegardes

Vérifie que cette commande fonctionne bien en mode root car ce n'est pas le cas sous ubuntu 24.04.2.

sudo bash -c ' DISPLAY=:1 kdialog --msgbox "Le disque externe est conforme" '   

Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
Je défie QUICONQUE de trouver une discussion où j'aurais suggéré de remplacer un SSD par un disque dur.
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#52 Le 06/06/2025, à 19:25

eric63

Re : script d’automatisation sauvegardes

je poursuis
## Faisons en sorte que ce script puisse être utilisé à la connexion du disque ou par des sauvegardes déclenchées par des timer.
if [[ $Cause = "Branchement" ]];
## la sélection peut être multiple avec checklist le on est une présélection ici 1 2 4 (8) = 1+2+4=7   
then kdialog --separate-output --checklist "Selection liste:"  1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde Documents" off   
je ne sais pas encore vraiment comment utiliser cela


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

En ligne

#53 Le 06/06/2025, à 19:28

eric63

Re : script d’automatisation sauvegardes

kubu@kubu-System-Product-Name:~$ sudo bash -c ' DISPLAY=:1 kdialog --msgbox "Le disque externe est conforme" '   
ça me demande mon mdp 
kf.notifications: Failed to play sound with canberra: Not available

la fenêtre s’ouvre avec le message puis «ok» pour fermer et se ferme correctement

Dernière modification par eric63 (Le 07/06/2025, à 08:35)


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

En ligne

#54 Le 06/06/2025, à 19:37

geole

Re : script d’automatisation sauvegardes

a@b:~$ 
a@b:~$ reponse=$(kdialog --separate-output --checklist "Selection liste:"  1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde Documents" off) 
a@b:~$ echo $reponse

a@b:~$ reponse=$(kdialog --separate-output --checklist "Selection liste:"  1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde Documents" off) 
a@b:~$ echo $reponse
1 2 4
a@b:~$ reponse=$(kdialog --separate-output --checklist "Selection liste:"  1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde Documents" off) 
a@b:~$ echo $reponse
1 4 8
a@b:~$ reponse=$(kdialog --separate-output --checklist "Selection liste:"  1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde Documents" off) 
a@b:~$ 
a@b:~$ echo $reponse
4
a@b:~$ 

Donc a priori, tout ce qui est  en bleu à l'écran est selectionné. ,  en se positionnant sur une ligne , on peut la passer en blanc pour la désélectionner


Par la suite il te restera a tester si la reponse contient 1     si la réponse contient 2   etc...

a@b:~$ reponse=$(kdialog --separate-output --checklist "Selection liste:"  1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde Documents" off) 
a@b:~$ echo $reponse
2 8
if [[ $reponse  =~ "1" ]]; then echo la réponse contient 1.;Photos=1;fi
if [[ $reponse  =~ "2" ]]; then echo la réponse contient 2.;Images=1;fi
if [[ $reponse  =~ "4" ]]; then echo la réponse contient 4.;Musique=1;fi
if [[ $reponse  =~ "8" ]]; then echo la réponse contient 8.;Documents=1;fi
la réponse contient 2.
la réponse contient 8.
a@b:~$ 

Puis pour le traitement proprement dit qui sera aussi  activé par les bons timers

 Passage=$(date +"-%Y-%m-%d-%H-%M-%S")
## test d'exécution
if test "$Photos" != ""  ; then 
    Verif; echo sauvegardons les Photos  rsync /xxxxxxxxx/Photos/* /media/$UTILISATEUR/$Pdm/$UTILISATEUR/Photos
rsync Photos/* /media/$UTILISATEUR/$Pdm/$UTILISATEUR/Photos 2>>/tmp/Sauvegarde-erreurs$Passage.txt ]
fi
.... Idem pour les trois autres cas

## Et pour finir, vérification que pas d'erreurs
if [ -s /tmp/Sauvegarde-erreurs$Passage.txt ];then DISPLAY=:1 kdialog  --error "Il y a des erreurs de duplication . Consulter /tmp/Sauvegarde-erreurs$Passage.txt"
fi
###

Dernière modification par geole (Aujourd'hui à 15:06)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
Je défie QUICONQUE de trouver une discussion où j'aurais suggéré de remplacer un SSD par un disque dur.
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#55 Le 07/06/2025, à 10:46

iznobe

Re : script d’automatisation sauvegardes

Bonjour ,

geole a écrit :
a@b:~$ reponse=$(kdialog --separate-output --checklist "Selection liste:"  1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde Documents" off) 
a@b:~$ echo $reponse
2 8
a@b:~$ if [[ $reponse  =~ "1" ]]; then echo la réponse contient 1.;fi
if [[ $reponse  =~ "2" ]]; then echo la réponse contient 2.;fi
if [[ $reponse  =~ "4" ]]; then echo la réponse contient 4.;fi
if [[ $reponse  =~ "8" ]]; then echo la réponse contient 8.;fi
la réponse contient 2.
la réponse contient 8.
a@b:~$ 

ca ne serait pas mieux de faire un switch case , et en fonction du nombre retourné , de directement affiché ce à quoi cela correspond ?

je ne trouve pas ça trop terrible , en passant , de lancer plusieurs sauvegardes simultanément . surtout pour un disque mécanique .

Dernière modification par iznobe (Le 07/06/2025, à 10:49)


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#56 Le 07/06/2025, à 10:58

geole

Re : script d’automatisation sauvegardes

Bonjour iznobe
D'après l'exemple que je fourni,  la suite sera aussi utilisée hors branchement du disque car activée par des timer. J'ai compris que eric63 ne souhaite pas mettre la même fréquence.C'est vrai qu'il y a un risque qu'à un moment donnée deux sauvegardes  se recoupent un peu.


je vais compléter un peu.


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
Je défie QUICONQUE de trouver une discussion où j'aurais suggéré de remplacer un SSD par un disque dur.
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#57 Le 07/06/2025, à 12:00

eric63

Re : script d’automatisation sauvegardes

la demande d’iznobe semble très pertinente, je ne sais pas ce qu’il entend par switch case mais avoir une assurance que les sauvegardes se fassent l’une après l’autre mérite qu’on s’y penche
et oui pour les documents communs ou documents de sessions perso j’aimerais que les timers soient différents des sauvegardes MultimediasCommunes ou avoir des réglages suivant les sauvegardes


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

En ligne

#58 Le 07/06/2025, à 12:07

iznobe

Re : script d’automatisation sauvegardes

un " switch case " , c' est une façon d' ecrire le code : https://forum.ubuntu-fr.org/viewtopic.php?id=2090293 .
cela implique de ne traiter qu ' un seul et unique cas à la fois sur tout ceux possibles .

ce qui semble tout indiqué ici pour 2 raisons .
la 1ere , c' est qu ' on ne pourra pas gerer 2 sauvegardes à la fois .
la 2eme , c' est pour afficher directement " l' etat " de la sauvegarde et non pas une liste puis un numero .

C' est tres utilisé dans le langage C , et la construction de machine à états  voir l ' entrée de ce pdf : http://tvaira.free.fr/dev/c/automate.pdf

Ce qui correspond énormément à ce que propose @geole sauf que le langage utilisé est du bash et pas du C .


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#59 Le 08/06/2025, à 19:08

eric63

Re : script d’automatisation sauvegardes

bon j’ai un peu modifié ce que j’avais fais en 6) parce que même si en ligne par ligne j’étais arrivé à un résultat je n’ai pas pu le reproduire aujourd’hui à cause finalement de mauvaises syntaxes avec kdialog  sur certains passages,
donc ce qui fonctionnait j’ai l’ai laissé en place et j’ai commenté ce qui ne fonctionnait pas et utilisé le script d’iznobe qui plus simple et qui m’a permis de voir ce qui dysfonctionnait  même sur ce dernier script

 ####6)  Créer le service d'exécution de la sauvegarde
### c’est le contenu du script de la sauvegarde
#cat <<"EOF" >$HOME/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh ###juste pour vérifier si les commandes

##!/usr/bin/bash    ### ne pas supprimer le #! indispensable en début de ligne qui démarre un script bash il faut le déplacer en début de fichier sinon il ne se lancera pas en cliquant dessus
Pdm=JEUX8T         ### Label du disque destiné à recevoir la sauvegarde.

### Traitons les rares cas où l'utilisateur démonterait accidentellement la partition et ou deux partitions auraient le même label.
##Verif() { if ! mountpoint -q /media/$UTILISATEUR/$Pdm; then echo $Pdm non monté; udisksctl mount  -b  /dev/disk/by-label/$Pdm ;fi ; if ! mountpoint -q /media/$UTILISATEUR/$Pdm; then echo $Pdm non montable;
##kdialog --error "La sauvegarde ne peut pas se faire.\n Vérifier si le disque externe est allumé" ; exit ; fi

### cette partie ne fonctionne pas correctement peut être à cause des DISPLAY1 avant les kdialog ou du \ après le --passivpopup \ j’en ai profité pour essayé le script d’iznobe plus simple mais qui à cause des DISPLAY provoquait aussi des erreurs
### je vérifierais mon hypothèse plus tard sur le script de geole qui ne fonctionne pas totalement
###SDX=$(lsblk -n -o NAME /dev/disk/by-label/$Pdm|cut -c 1-3)
###ATTR=$(udevadm info -a -p /sys/block/$SDX  | grep -E "manufacturer|product|serial")
###if [[ "$ATTR" =~ "Seagate" ]] &&  [[ "$ATTR" =~ "Slim  SL" ]] && [[ "$ATTR" =~ "NA4T1SG4" ]]; then OK=1 ; kdialog --title "Le disque externe est conforme" --passivepopup \
###"ce popup disparaîtra dans 4mn \n et votre sauvegarde pourra démarrer " 240  ;
###   else echo mauvais disque monté; kdialog --error "mauvais disque monté."; exit ; fi }

###script iznobe de remplacement (plus simple)
### modifier les 2 premières variables du script
MountPoint="/media/$USER/JEUX8T"
### pour vérifier si la variable est correcte
#kubu@kubu-System-Product-Name:~$ echo $MountPoint
##/media/kubu/JEUX8T
PartitionUID="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa"
#kubu@kubu-System-Product-Name:~$ echo $PartitionUID
##35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ctrlID=$(findmnt -n --output UUID $MountPoint)
#kubu@kubu-System-Product-Name:~$ echo $ctrlID
##35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
### reglage délai d’attente en secondes avant sauvegarde
nbs=30
###controle validité disque
if [[ "$ctrlID" != "$PartitionUID" ]] ; then   echo "La partition n'est pas montée"; kdialog --error "Aucun disque reconnu ou disque éteint \n Allumé le disque dur externe \n ou veuillez vérifier les UID dans le fichier de script de demarrage" ; else  echo "Disque externe reconnu" ; kdialog  --title "Disque externe conforme" --passivepopup "ce popup disparaîtra dans "$nbs" secondes \n et votre sauvegarde pourra démarrer " $nbs ;fi

### Faisons en sorte que ce script puisse être utilisé à la connexion du disque ou par des sauvegardes déclenchées par des timer.
if [[ $Cause = "Branchement" ]];
### la sélection peut être multiple avec checklist le on est une présélection par défaut ici 1 2 4 (8) = 1+2+4=7
then kdialog --separate-output --checklist "Selection liste:"  1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde Documents" off

le ligne par ligne devient un peu pénible à utiliser je vais travailler avec le script directement

Dernière modification par eric63 (Le 08/06/2025, à 23:30)


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

En ligne

#60 Le 08/06/2025, à 23:38

eric63

Re : script d’automatisation sauvegardes

le script au plus complet

#!/usr/bin/bash  ### toujours placer en début de script sinon le script ne démarre pas au clic souris  
###allumage 8T home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
###penser à changer le nom du fichier script geole en ScriptSauvegarde.sh
###vérifier si chemin soit home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh au lieu de  Sauvegarde.sh dans ce script
### remplacer Sauvegarde.sh par ScriptSauvegarde.sh
#************************************************************************************************************************************************************************
### CONVENTIONS
#       1 dièze ligne de commande manuelle (ligne par ligne)
##      2 retour de la ligne de commande
###     3 dièze commentaires ou sous-titre d’un bloc de commande
####    4 dièze Titre de l’étape
#####   0 dièze Ligne de commande automatique du ScriptSauvegarde.sh

#*****************************************************************
###Lorsque vous faites les commandes ligne par ligne le terminal doit rester ouvert sinon les variables seront PERDUES et devront être recrées au préalable
#*****************************************************************

### PRÉALABLES (les commandes ne de vraient être formulés manuellement qu‘une fois pour reconnaissance des divers préalables et ne seront plus nécessaire une fois établis)
### il faut que le disque soit allumé et monté voir et que les points de montage Vm et Sauvegardes soit identifiés et montés
### pour les points de montage voir le fichier /home/kubu/Documents/"Partages et sauvegardes"/PointDeMontageVMultimedias
### pour le montage du disque: Ce fichier démarrera automatiquement à l’allumage de la session (voir config système/démarrage automatique) si le disque est déjà allumé avant le PC
###il peut y avoir plusieurs entrées à valider suivant la position de la partition (ici 3 cas possibles: sdb sdc sdd)
###-cas1 sdb lorsque le disque est allumé avant l’allumage du pc (système/***-disque**-/home séparé*)
###-cas2 sdc lorsque le disque est allumé après l’allumage du pc et de la session (système/***/home séparé**-disque*)

###-cas3 sdd lorsque le disque est allumé après l’allumage du pc et de la session (système/***/home séparé**-disque* deconnexion reconnection disque)
### et l’accès au fichier de montage sera nécessaire si l’allumage du disque se fait après l’ouverture de la session voir 6)

###*******************************************************************

####1) Récupérer manuellement ligne par ligne les caractéristiques  du disque.(suivant allumage disque avant ou aprés allumage Pc la partition peut différée)
###les espaces dans les noms sont significatifs ne pas les oublier
#udevadm info -a -p /sys/block/sdb ou sdc ou sdd  | grep -E "manufacturer|product|serial"

###allumage disque après session (sdc ou sdd)
#kubu@kubu-System-Product-Name:~$ udevadm info -a -p /sys/block/sdc  | grep -E "manufacturer|product|serial"

##    ATTRS{manufacturer}=="ASMedia"
##    ATTRS{product}=="AS2105"
##    ATTRS{manufacturer}=="Linux 6.14.0-15-generic xhci-hcd"
##    ATTRS{product}=="xHCI Host Controller"
##    ATTRS{serial}=="0000:00:14.0"
##kubu@kubu-System-Product-Name:~$

###allumage disque avant Pc (sdb)
#kubu@kubu-System-Product-Name:~$ udevadm info -a -p /sys/block/sdb  | grep -E "manufacturer|product|serial"

##    ATTRS{manufacturer}=="ASMedia"
##    ATTRS{product}=="AS2105"
##    ATTRS{serial}=="            WSC1NELA" les espaces dans les noms sont significatifs ne pas les oublier; Dans tous les cas retenir cette ligne plutôt que ATTRS{serial}=="0000:00:14.0" (bug ??)
##    ATTRS{manufacturer}=="Linux 6.14.0-15-generic xhci-hcd"
##    ATTRS{product}=="xHCI Host Controller"
##    ATTRS{serial}=="0000:00:14.0"
##kubu@kubu-System-Product-Name:~$

####2) Indiquer que la détection du disque doit déclencher un service systemd.
###(noter le a pour ajouter ligne dans sudo tee  -a /lib/udev/rules.d/76-Sauvegarde.rules)

#echo 'KERNEL=="sd[a-z]", ACTION=="add", ATTRS{manufacturer}=="ASMedia",  ATTRS{product}=="AS2105", ATTRS{serial}=="0000:00:14.0", TAG+="systemd", ENV{SYSTEMD_WANTS}="Sauvegarde@$devnode.service" ' | sudo tee  -a /lib/udev/rules.d/76-Sauvegarde.rules
#cat /lib/udev/rules.d/76-Sauvegarde.rules

##KERNEL=="sd[a-z]", ACTION=="add", ATTRS{manufacturer}=="ASMedia",  ATTRS{product}=="AS2105", ATTRS{serial}=="            WSC1NELA", TAG+="systemd", ENV{SYSTEMD_WANTS}="Sauvegarde@$devnode.service"
##KERNEL=="sd[a-z]", ACTION=="add", ATTRS{manufacturer}=="ASMedia",  ATTRS{product}=="AS2105", ATTRS{serial}=="0000:00:14.0", TAG+="systemd", ENV{SYSTEMD_WANTS}="Sauvegarde@$devnode.service"
##KERNEL=="sd[a-z]", ACTION=="add", ATTRS{manufacturer}=="ASMedia",  ATTRS{product}=="AS2105", ATTRS{serial}=="0000:00:14.0", TAG+="systemd", ENV{SYSTEMD_WANTS}="Sauvegarde@$devnode.service"
##KERNEL=="sd[a-z]", ACTION=="add", ATTRS{manufacturer}=="ASMedia",  ATTRS{product}=="AS2105", ATTRS{serial}=="            WSC1NELA", TAG+="systemd", ENV{SYSTEMD_WANTS}="Sauvegarde@$devnode.service"

###prise en compte des lignes au système en manuel
#sudo udevadm control --reload
#journalctl --no-pager -b -n 5

####3)  Créer le service d'exécution de la sauvegarde en étant root.
###faire ligne par ligne la première fois
#sudo bash -c 'cat  <<EOF>/etc/systemd/system/Sauvegarde@.service

#[Unit]
#Description=Service de sauvegarde dans un disque externe.
#DefaultDependencies=no
#[Service]
#Type=simple
#Environment="DISQUE=%I"
#Environment="UTILISATEUR=kubu"
#Environment="Cause=Branchement"
#TimeoutSec=123minutes
#ExecStartPre=echo La sauvegarde va se réaliser.
## Attendons que les diverses partitions aient le temps de se monter
#ExecStartPre=sleep 30
#ExecStart=/home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
#ExecStopPost=echo La sauvegarde est terminée.
#EOF'

#sleep 1
#systemctl daemon-reload

####4) Pour connaître l'état de cette installation
###- Il faut brancher le disque. S’il est déjà branché, il faut le débrancher.
###- Il faut récupérer le bon nom attribué au disque.
#  lsblk -fe7
###- Interroger en remplaçant X par la lettre trouvée.
# systemctl --no-pager -l  status Sauvegarde@-dev-sdX.service

####5) Créer le service utilisateur autorisant root à discuter avec l'utilisateur wayland.
#mkdir -pv $HOME/.config/systemd/user
### si ce dossier existe la commande ne fait rien sinon le dossier sera créé
#kubu@kubu-System-Product-Name:~$ cat <<"EOF" >$HOME/.config/systemd/user/ROOT.service

#[Unit]
#Description=Autoriser Root à écrire dans l'écran.
#[Service]
#Type=simple
#ExecStartPre=sleep 30
### Inutile de se presser au démarrage: Si l'utilisateur n'a pas encore eu le temps de se connecter, la commande foire.
#ExecStart=xhost si:localuser:root
#[Install]
#WantedBy=default.target
#EOF
#sleep 1
#systemctl --user   stop ROOT.service;systemctl --user daemon-reload
#systemctl --user enable ROOT.service;systemctl --user start ROOT.service;
#systemctl --user status ROOT.service;

####6)  Créer le service d'exécution de la sauvegarde
### c’est le contenu du script de la sauvegarde
#cat <<"EOF" >$HOME/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh ###juste pour vérifier si les commandes

##!/usr/bin/bash    ### ne pas supprimer le #! indispensable en début de ligne qui démarre un script bash
Pdm=JEUX8T         ### Label du disque destiné à recevoir la sauvegarde.

### Traitons les rares cas où l'utilisateur démonterait accidentellement la partition et ou deux partitions auraient le même label.
##Verif() { if ! mountpoint -q /media/$UTILISATEUR/$Pdm; then echo $Pdm non monté; udisksctl mount  -b  /dev/disk/by-label/$Pdm ;fi ; if ! mountpoint -q /media/$UTILISATEUR/$Pdm; then echo $Pdm non montable;
##kdialog --error "La sauvegarde ne peut pas se faire.\n Vérifier si le disque externe est allumé" ; exit ; fi

### cette partie ne fonctionne pas correctement peut être à cause des DISPLAY1 avant les kdialog ou du \ après le --passivpopup \ j’en ais profité pour essayé le script d’iznobe qui à cause des DISPLAY provoquait des erreurs
### je vérifierais mon hypothèse plus tard
###SDX=$(lsblk -n -o NAME /dev/disk/by-label/$Pdm|cut -c 1-3)
###ATTR=$(udevadm info -a -p /sys/block/$SDX  | grep -E "manufacturer|product|serial")
###if [[ "$ATTR" =~ "Seagate" ]] &&  [[ "$ATTR" =~ "Slim  SL" ]] && [[ "$ATTR" =~ "NA4T1SG4" ]]; then OK=1 ; kdialog --title "Le disque externe est conforme" --passivepopup \
###"ce popup disparaîtra dans 4mn \n et votre sauvegarde pourra démarrer " 240  ;
###   else echo mauvais disque monté; kdialog --error "mauvais disque monté."; exit ; fi }

###script iznobe de remplacement (plus simple)
### modifier les 2 premières variables du script
MountPoint="/media/$USER/JEUX8T"
### pour vérifier si la variable est correcte
#kubu@kubu-System-Product-Name:~$ echo $MountPoint
##/media/kubu/JEUX8T
PartitionUID="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa"
#kubu@kubu-System-Product-Name:~$ echo $PartitionUID
##35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ctrlID=$(findmnt -n --output UUID $MountPoint)
#kubu@kubu-System-Product-Name:~$ echo $ctrlID
##35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
### reglage délai d’attente en secondes avant sauvegarde
nbs=30
###controle validité disque
if [[ "$ctrlID" != "$PartitionUID" ]] ; then   echo "La partition n'est pas montée"; kdialog --error "Aucun disque reconnu ou disque éteint \n Allumez le disque dur externe \n ou veuillez vérifier les UID dans le fichier de script de démarrage" ; else  echo "Disque externe reconnu" ; kdialog  --title "Disque externe conforme" --passivepopup "ce popup disparaîtra dans "$nbs" secondes \n et votre sauvegarde pourra démarrer " $nbs ;fi

### Faisons en sorte que ce script puisse être utilisé à la connexion du disque ou par des sauvegardes déclenchées par des timer.
if [[ $Cause="Branchement" ]];then kdialog --separate-output --checklist "Selection liste:"  1 "Sauvegarde Photos" on 2 "Sauvegarde Images" on 4 "Sauvegarde Musiques" on 8 "Sauvegarde Documents" off
echo $Cause ;fi

mais ça me pose un nouveau problème car $Cause est toujours vide en ligne 158
le seul autre "branchement" est en ligne 82 ( au bloc 3) et ce bloc est commenté
donc il faut que je le décommente mais je suppose qu’il y a d’autres blocs qu’il faudra décommenter alors que je pensais qu’ils ne servaient qu’une seule fois ???

Dernière modification par eric63 (Le 08/06/2025, à 23:50)


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

En ligne

#61 Hier à 02:51

Watael

Re : script d’automatisation sauvegardes

[[ $Cause="Branchement" ]]

attention, il faut des espaces autour du signe égal, sinon c'est une assignation.

Cause n'est, en effet, défini nulle part.
je n'ai jamais expérimenté Environment dans un service, mais ça vaut le coup de testé de décommenter.

Dernière modification par Watael (Hier à 02:53)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#62 Hier à 09:02

eric63

Re : script d’automatisation sauvegardes

merci Watael
corrigé ligne 154  [[ $Cause="Branchement" ]] en [[ $Cause = "Branchement" ]]
et décommenté le bloc 3)
cette fois mon mdp root m’est demandé
j’ai l’alerte comme quoi mon disque n’est pas allumé et je n’ai pas la demande de choix des sauvegardes disque éteint
donc je suppose que $Cause à été pris en compte mais il est toujours vide dans les 2 cas (disque reconnu ou disque éteint) et n’aboutit jamais au choix des sauvegardes

il y a peut être d’autres blocs à décommenter ??

le bloc 2 juste les lignes contenant KERNEL (provoque des erreurs sur ces lignes donc recommenté)  et sudo udevadm control --reload ??

et le bloc 5 à décommenter entièrement ?? ou juste decommenter les lignes

systemctl --user   stop ROOT.service;systemctl --user daemon-reload
systemctl --user enable ROOT.service;systemctl --user start ROOT.service;
systemctl --user status ROOT.service;

au final le bloc 5 à été recommenté car il provoque des erreurs dans les 2 cas (entièrement ou juste les lignes)

donc j’en suis au même point:
$Cause à été pris en compte mais il est toujours vide dans les 2 cas (disque reconnu ou disque éteint) et n’aboutit jamais au choix des sauvegardes

Dernière modification par eric63 (Hier à 09:30)


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

En ligne

#63 Hier à 10:41

geole

Re : script d’automatisation sauvegardes

Bonjour.
Comme tu as choisi le contrôle proposé par iznobe qui est plus simple et tout aussi efficace, tu devrais supprimé l’autre méthode pour lisibilité du script.

D’autre part, le contenu de la variable branchement est transmis par le service de démarrage ci-dessous
3)  Créer le service d'exécution de la sauvegarde en étant root.
Penser à changer le nom de l'utilisateur. (Deux endroits).

sudo bash -c 'cat  <<EOF>/etc/systemd/system/Sauvegarde@.service
[Unit]
Description=Service de sauvegarde dans un disque externe.
DefaultDependencies=no
[Service]
Type=simple
Environment="DISQUE=%I"
Environment="UTILISATEUR=a"
Environment="Cause=Branchement"
TimeoutSec=123minutes
ExecStartPre=echo La sauvegarde va se réaliser.

Si tu  veux essayer manuellement le script, il te suffit de lui transmettre la valeur avec cette commande

export Cause=branchement



De la même façon, tu positionneras les variables dans les services timers pour dire ce que tu veux forcer à exécuter

cat  <<EOF>/$HOME/.config/systemd/user/SAVxxxxxx.service
[Unit]
Description=Service de sauvegarde des répertoires indiqués par les variables d’environnement dans un disque externe.
DefaultDependencies=no
[Service]
Type=simple
Environment="UTILISATEUR=%u"
Environment="Documents=1"
Environment="Musique=1"
Environment="Photos=1"
Environment="Images=1"

TimeoutSec=123minutes
ExecStartPre=echo La sauvegarde va se réaliser.
ExecStart=/home/%u/Sauvegarde.sh
ExecStopPost=echo La sauvegarde est terminée.
EOF

Ici, les quatre sauvegardes se feront les unes après les autres. A toi de mettre les bonnes lignes en fonction des fréquences que tu veux faire.

Dernière modification par geole (Hier à 19:43)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
Je défie QUICONQUE de trouver une discussion où j'aurais suggéré de remplacer un SSD par un disque dur.
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#64 Hier à 14:13

Watael

Re : script d’automatisation sauvegardes

Si tu  veux essayer manuellement le script, il te suffit de lui transmettre la valeur avec cette commande

export branchement=1

ou, pour ne pas "surcharger" l'environnement courant : branchement=1 /chemin/scriptAtester

par exemple :

#!/bin/sh

echo envVar = $envVar
envVar='foo bar baz' /chemin/vers/monScript
envVar = foo bar baz
$

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#65 Hier à 15:54

eric63

Re : script d’automatisation sauvegardes

bon y’a quelques choses que je ne comprend pas dans le 3)

Environment="Cause=Branchement"

comment ces variables peuvent prendre à un moment ou un autre la valeur 1 sans faire de

export Branchement=1 

?? ce qui n’est jamais fait dans le script et je ne vois pas de cela dans la suite du script qu’il me reste à ajouter
j’ai essayé dans le terminal

Branchement=1 /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh

mais ça n’a eut aucun effet
je dois m’y prendre comme un manche comme d’hab roll

même le bloc 3) ou 5) me sont incompréhensibles, je refuse pas une explication à ce sujet

Dernière modification par eric63 (Hier à 15:58)


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

En ligne

#66 Hier à 16:51

geole

Re : script d’automatisation sauvegardes

Je rappelle que normalement lorsque tu branches le disque et tu le mets sous tension, Il y a exécution automatique d'un service
Dans ce service, tu demandes entre autre
Environment="Cause=Branchement"
ExecStart=/home/kubu/Sauvegarde.sh

Donc, le script hérite de  la variable $Cause avec une valeur  positionnée à "Branchement" . Cela  te permet de tester  le contexte d'exécution du script.
C'est comme si tu faisais.

export Cause="Branchement" ; /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh

Nota, Le bloc 3
####3)  Créer le service d'exécution de la sauvegarde en étant root.
#sudo bash -c 'cat  <<EOF>/etc/systemd/system/Sauvegarde@.service
est lancé automatiquement par udev lorsque'il détecte le montage spécifique du disque destiné à la sauvegarde tel que tu l'as dit dans la partie deux

##KERNEL=="sd[a-z]", ACTION=="add", ATTRS{manufacturer}=="ASMedia",  ATTRS{product}=="AS2105", ATTRS{serial}=="            WSC1NELA", TAG+="systemd", ENV{SYSTEMD_WANTS}="Sauvegarde@$devnode.service]"

Pour le bloc 5, J'ai constaté que zenity n'est pas habilité à  fonctionner avec l'utilisateur root tant qu'il ne devient pas autorisé  avec la commande
xhost si:localuser:root
Comme tu utilises un autre logiciel pour afficher dans l'écran et qui fonctionne sous root dans ton environnement,    il est possible que le bloc 5 soit inutile.

Dernière modification par geole (Hier à 18:29)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
Je défie QUICONQUE de trouver une discussion où j'aurais suggéré de remplacer un SSD par un disque dur.
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#67 Hier à 17:35

eric63

Re : script d’automatisation sauvegardes

ok j’essaye mais j’ai le même résultat

kubu@kubu-System-Product-Name:~$ export Branchement=1 ; /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
[sudo] password for kubu: 
La partition n'est pas montée
kubu@kubu-System-Product-Name:~$ export Branchement=1 ; /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
Disque externe reconnu
kubu@kubu-System-Product-Name:~$ echo $Cause

kubu@kubu-System-Product-Name:~$ 

y’a quelque chose qui ne se passe pas

Dernière modification par eric63 (Hier à 17:40)


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

En ligne

#68 Hier à 17:36

Watael

Re : script d’automatisation sauvegardes

le script hérite de  la variable $Cause avec une valeur  positionnée à "Branchement" . Cela  te permet de tester  le contexte d'exécution du script.
C'est comme si tu faisais.

export Branchement=1 ; /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh

comment cela est-il possible ?
Branchement n'est nulle part une variable, c'est une valeur de Cause.
tu voulais dire

export Cause=Branchement ; /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh

ou j'ai raté un truc ?

PS:

Cause=Branchement /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh

déclare Cause dans l'environnment du script uniquement. l'export n'est vraiment pas indispensable.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#69 Hier à 17:43

eric63

Re : script d’automatisation sauvegardes

kubu@kubu-System-Product-Name:~$ Cause=Branchement /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
Disque externe reconnu

Branchement
kubu@kubu-System-Product-Name:~$ 

ha là ça fonctionne j’ai droit au passage à mes choix de sauvegardes
ça veut dire que quand je lance le script normalement
la ligne 83 

Environment="Cause=Branchement"

dans le bloc 3 n’est pas prise en compte  ou est perdu quelque part entre la ligne 83 et 159 ??

Dernière modification par eric63 (Hier à 18:49)


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

En ligne

#70 Hier à 19:51

iznobe

Re : script d’automatisation sauvegardes

La partition n'est pas montée

voir mon script .
Double contrôle , ca ne sert pas àa grand chose , j ' avais proposé cela , dans un ensemble .
Sauf que un mélange des 2 , je crains que ca ne fasse encore que compliqué la chose .

ou alors il faut ajouter en plus , la " falsification " de la variable ctrlID .

...
if [[ "$ctrlID" != "$PartitionUID" ]] ; then
	echo "La partition n'est pas montée"
...

Dernière modification par iznobe (Hier à 19:54)


retour COMPLET et utilisable de commande  |  script montage partitions

MSI Z490A-pro , i7 10700 , 32 GB RAM .

Hors ligne

#71 Hier à 21:27

eric63

Re : script d’automatisation sauvegardes

kubu@kubu-System-Product-Name:~$ export Branchement=1 ; /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
[sudo] password for kubu:
La partition n'est pas montée

désolé j’ai pas expliqué le contexte de ces ligne
ci dessus c’est le cas ou le disque externe n’est pas allumé et donc pas monté

kubu@kubu-System-Product-Name:~$ export Branchement=1 ; /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
Disque externe reconnu
kubu@kubu-System-Product-Name:~$ echo $Cause

kubu@kubu-System-Product-Name:~$

là le disque est allumé et monté automatiquement et le résultat d’ echo $Cause ne donne rien
donc j’en suis là
la ligne 83 Environment="Cause=Branchement" dans le bloc 3 n’est pas prise en compte  ou est perdu quelque part entre la ligne 83 et 159 ??

Dernière modification par eric63 (Hier à 21:29)


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

En ligne

#72 Hier à 21:31

Watael

Re : script d’automatisation sauvegardes

Cause n'est pas déclarée dans l'environnement du shell.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#73 Hier à 21:50

eric63

Re : script d’automatisation sauvegardes

Cause n'est pas déclarée dans l'environnement du shell.

comprends pas
en ligne 83 j’ai  Environment="Cause=Branchement"
et en ligne160  j’ai if [[ $Cause = "Branchement" ]];
qu’est ce que tu entends par là ??
et qu’est ce qu’il faut pour que cela soit déclarer dans l’environnement du shell ?

Dernière modification par eric63 (Hier à 21:51)


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

En ligne

#74 Hier à 22:07

Watael

Re : script d’automatisation sauvegardes

une variable déclarée dans un script, ne l'est pas dans l'environnement courant du shell qui exécute le script.

un test simple :
soit le script monScript dans lrépertoire courant

#!/bin/sh

maVar='foobar'
echo "maVar = $maVar"
$ chmod +x ./monScript
$ ./monScript
maVar = fooBar
$ echo $maVar

$

on peut le faire en une seule ligne avec un sous-shell (du code entre des parenthèes) :

(maVar=barBaz; echo $maVar); echo $maVar
barBaz

$

les variables déclarées dans un sous-shell ou un script n'existent que dans le sous-shell ou le script, pas dans l'environnement qui exécute ce sous-shell ou ce script.

pourquoi veux-tu exécuter le script dans l'environnement du shell, puisqu'il doit-être exécuté en dehors de tout environnement (en dehors de celui du service, bien sûr) ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#75 Hier à 22:26

eric63

Re : script d’automatisation sauvegardes

ben c’est juste que les recommendations de geole me semblait assez claires et que je suis ses recommandations voir #3
et les blocs de commande qui vont avec
mais il me semble qu’il y a un os sur le bloc 6)
que j’ai commencer à ma sauce en #60
et que je croyais semblable aux commandes de geole
ou que je ne comprends pas comment écrire  ces blocs par rapport aux recommandations du script de geole
pourquoi geole écrit cela en 6) aussi
c’est le même contexte non ??

Dernière modification par eric63 (Hier à 22:45)


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

En ligne