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.

#101 Le 14/06/2025, à 21:25

Watael

Re : script d’automatisation sauvegardes

"head -n -3" le "-3" est le nombre de sauvegarde incrémental que tu souhaites conservées. Tu en veux 5, tu changes  en  "head -n -5"

ça vaudrait le coup de variabiliser la valeur.


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

Hors ligne

#102 Le 14/06/2025, à 22:04

eric63

Re : script d’automatisation sauvegardes

intéressant
je sais pas encore comment ça va pouvoir s’articuler avec mes sauvegardes qui sont pour l’instant au démarrage de ma session et à l’allumage du disque.
j’y regarderais un peu plus tard

#!/usr/bin/bash



####6b)  Créer le service d'exécution de la sauvegarde

###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
### controle si le disque est monté
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


#attente=30

###controle validité disque
if [[ "$ctrlID" != "$PartitionUID" ]] ;then echo "ligne26" ;echo "ctrlID" $ctrlID ;echo "partition"$PartitionUID
echo "La partition n'est pas montée"; echo "ligne27" ; 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)
while [[ "$ctrlID" != "$PartitionUID" ]] ;do
echo "ligne31" ;echo "ctrlID" $ctrlID ;echo "partition"$PartitionUID ; sleep 1
#si le montage est reconnu mettre ctrlID à la bonne valeur
ctrlID=$(findmnt -n --output UUID $MountPoint); sleep 1
echo "ligne34" ;echo "ctrlID" $ctrlID ;echo "partition"$PartitionUID ; sleep 1
 done
else  echo "ligne36" ;echo "ctrlID" $ctrlID ;echo "partition"$PartitionUID ;
kdialog --error "le disque est monté \n la sauvegarde peut être faite maintenant " ;
echo "ligne38" ;echo "ctrlID" $ctrlID ;echo "partition"$PartitionUID ;
fi
echo "ligne42 la partition est montée"; ### Faisons en sorte que ce script puisse être utilisé à la connexion du disque ou par des sauvegardes déclenchées par des timer.
 echo "ligne43" ;echo "ctrlID"$ctrlID ;echo "partition"$PartitionUID
if [[ "$ctrlID" = "$PartitionUID" ]] then 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); echo $resultats;

#tests
if [[ $resultats =~ "" ]]; then echo la réponse est vide.;"";fi
if [[ $resultats =~ "1" ]]; then echo la réponse contient 1.;Photos=1;fi
if [[ $resultats  =~ "2" ]]; then echo la réponse contient 2.;Images=1;fi
if [[ $resultats  =~ "4" ]]; then echo la réponse contient 4.;Musique=1;fi
if [[ $resultats  =~ "8" ]]; then echo la réponse contient 8.;DocumentsCommuns=1;fi
if [[ $resultats  =~ "16" ]]; then echo la réponse contient 16.;DocumentsEricFanou=1;fi
 #traitements
 #Passage=$(date +"-%Y-%m-%d-%H-%M-%S")
## test d'exécution sources --> destinations
if test "$Photos" != ""  ; then echo $Photos
    #Verif; echo sauvegardons les Photos  rsync /xxxxxxxxx/Photos/* $MountPointmedia//$UTILISATEUR/Photos
    # commande originelle
    #rsync --progress  -a -v --delete-after   -e   ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/  /media/kubu/JEUX8T/SAUVEGARDES  --backup --backup-dir=incremental/$(date +%F_%Hh%M)/
 rsync --progress  -a -v --delete-after   -e   ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Photos  /media/kubu/JEUX8T/SAUVEGARDES/  --backup --backup-dir=incremental-Photos/$(date +%F_%Hh%M)/
fi

if test "$Images" != ""  ; then echo $Images
    #Verif; echo sauvegardons les Photos  rsync /xxxxxxxxx/Photos/* $MountPointmedia//$UTILISATEUR/Photos
    # commande originelle
    #rsync --progress  -a -v --delete-after   -e   ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/  /media/kubu/JEUX8T/SAUVEGARDES  --backup --backup-dir=incremental/$(date +%F_%Hh%M)/
 rsync --progress  -a -v --delete-after   -e   ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Images  /media/kubu/JEUX8T/SAUVEGARDES/  --backup --backup-dir=incremental-Images/$(date +%F_%Hh%M)/
fi

if test "$Musiques" != ""  ; then echo $Musiques
    #Verif; echo sauvegardons les Photos  rsync /xxxxxxxxx/Photos/* $MountPointmedia//$UTILISATEUR/Photos
    # commande originelle
    #rsync --progress  -a -v --delete-after   -e   ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/  /media/kubu/JEUX8T/SAUVEGARDES  --backup --backup-dir=incremental/$(date +%F_%Hh%M)/
 rsync --progress  -a -v --delete-after   -e   ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Musiques  /media/kubu/JEUX8T/SAUVEGARDES/  --backup --backup-dir=incremental-Musiques/$(date +%F_%Hh%M)/
fi

if test "$DocumentsCommuns" != ""  ; then echo $DocumentsCommuns
    #Verif; echo sauvegardons les Photos  rsync /xxxxxxxxx/Photos/* $MountPointmedia//$UTILISATEUR/Photos
    # commande originelle
    #rsync --progress  -a -v --delete-after   -e   ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/  /media/kubu/JEUX8T/SAUVEGARDES  --backup --backup-dir=incremental/$(date +%F_%Hh%M)/
 rsync --progress  -a -v --delete-after   -e   ssh Multimedias@192.168.1.128:/home/Multimedias/DocumentsPartages  /media/kubu/JEUX8T/SauvegardesDocumentsCommuns/  --backup --backup-dir=incremental-DocumentsPartages/$(date +%F_%Hh%M)/
fi

if test "$DocumentsEricFanou" != ""  ; then echo $DocumentsEricFanou
    #Verif; echo sauvegardons les Photos  rsync /xxxxxxxxx/Photos/* $MountPointmedia//$UTILISATEUR/Photos
    # commande originelle
    #rsync --progress  -a -v --delete-after   -e   /home/kubu/Documents  /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsEric/  --backup --backup-dir=incremental-VMSauvegardesDocumentsEric/$(date +%F_%Hh%M)/
 rsync --progress  -a -v --delete-after   -e   /home/kubu/Documents  /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsEric/  --backup --backup-dir=incremental-DocumentsEric/$(date +%F_%Hh%M)/
 rsync --progress  -a -v --delete-after   -e   ssh fanou@s192.168.1.60/home/fanou/Documents  /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/  --backup --backup-dir=incremental-DocumentsFanou/$(date +%F_%Hh%M)/

fi

j’ai modifié mes points de montage pour coller aux sauvegardes
fichier PointsDeMontage

#!/bin/bash
# source --> destination
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Photos/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Photos
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Images/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Images
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Musiques/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Musiques
sshfs Multimedias@192.168.1.128:/home/Multimedias/DocumentsPartages/ /home/kubu/VMMultimedias/VMDocumentsPartages
sshfs Multimedias@192.168.1.60:/home/fanou/Documents/ /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou
/home/kubu/Documents/ /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsEric

je sais pas comment va réagir la sauvegarde DocumentsEricFanou si le portable fanou est éteint ??

P.S. correction du copier coller mal positionné oublie du # au shebang #!/bin/bash

Dernière modification par eric63 (Le 15/06/2025, à 10:53)


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

#103 Le 14/06/2025, à 23:40

tycooon

Re : script d’automatisation sauvegardes

ton script devient illisible , il faudrait lancer

shfmt -w script.sh

, je ne suis même pas sûr qu'il passe (beaucoup d'erreurs)
sinon pour fanou
Faire un ping !

if ping -c 1 -W 2 192.168.1.60 >/dev/null 2>&1; then
	echo "Le PC fanou joignable, lancement de la sauvegarde"
	rsync................
else
    echo "Le PC fanou est injoignable. Sauvegarde ignorée."
    kdialog --error "Le PC fanou est injoignable. Sauvegarde ignorée."
fi

Hors ligne

#104 Le 15/06/2025, à 08:25

iznobe

Re : script d’automatisation sauvegardes

j’ai modifié mes points de montage

je ne comprends toujours pas quel est l' interet de faire ca :

!/bin/bash
# source --> destination
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Photos/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Photos
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Images/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Images
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Musiques/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Musiques
sshfs Multimedias@192.168.1.128:/home/Multimedias/DocumentsPartages/ /home/kubu/VMMultimedias/VMDocumentsPartages

Alors que

 sshfs Multimedias@192.168.1.128:/home/Multimedias /home/kubu/VMMultimedias

est suffisant .

je sais pas comment va réagir la sauvegarde DocumentsEricFanou si le portable fanou est éteint ??

ben c' est simple ,vu que tu ne pourras pas te connecter a un ordinateur eteint ...


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#105 Le 15/06/2025, à 08:34

eric63

Re : script d’automatisation sauvegardes

sshfs Multimedias@192.168.1.128:/home/Multimedias /home/kubu/VMMultimedias

est suffisant .

j’ai bien compris cela, mais ça me parle plus de décortiquer ce qui va être accessible même si ça sert à rien et peux être simplifié. Un de mes nombreux défauts wink


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

#106 Le 15/06/2025, à 08:59

eric63

Re : script d’automatisation sauvegardes

tycooon a écrit :

il faudrait lancer
shfmt -w script.sh
, je ne suis même pas sûr qu'il passe (beaucoup d'erreurs)

j’ai installé et lancer la commande mais rien n’est apparu: trop d’erreurs ??


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

#107 Le 15/06/2025, à 09:00

iznobe

Re : script d’automatisation sauvegardes

ben tu n ' as qu ' a variabiliser proprement , par exemple :

!/bin/bash
# montage :
sshfs Multimedias@192.168.1.128:/home/Multimedias /home/kubu/VMMultimedias
# Destinations :
PhotoDestDir ="/home/kubu/VMMultimedias/VMMultimediasCommuns/Photos"
ImagesDestDir ="/home/kubu/VMMultimedias/VMMultimediasCommuns/Images"
etc ...
rsync   .... $PhotoDestDir

ca simplifie et allege ton script et rend la lecture et la comprehension plus simple .

j’ai installé et lancer la commande mais rien n’est apparu: trop d’erreurs ??

des le 1er caractere du script ...
Au passage le shebang c ' est : #!/bin/bash

Dernière modification par iznobe (Le 15/06/2025, à 09:04)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#108 Le 15/06/2025, à 09:11

O_20_100_O

Re : script d’automatisation sauvegardes

eric63 a écrit :

je sais pas comment va réagir la sauvegarde DocumentsEricFanou si le portable fanou est éteint ??

Si c'est pour sauvegarder les documents "perso" de Fanou vers la VM, il était prévu au départ que cela se ferait à partir de son PC portable, pas de ton PC fixe.
À l'ouverture de sa session par exemple ou périodiquement avec un logiciel de sauvegarde. Mais c'est trop simple et ça ne répond pas à ton besoin.

Hors ligne

#109 Le 15/06/2025, à 09:19

iznobe

Re : script d’automatisation sauvegardes

O_20_100_O a écrit :
eric63 a écrit :

je sais pas comment va réagir la sauvegarde DocumentsEricFanou si le portable fanou est éteint ??

Si c'est pour sauvegarder les documents "perso" de Fanou vers la VM, il était prévu au départ que cela se ferait à partir de son PC portable, pas de ton PC fixe.
À l'ouverture de sa session par exemple ou périodiquement avec un logiciel de sauvegarde. Mais c'est trop simple et ça ne répond pas à ton besoin.

il n ' y aurait aucun problème pour faire cela de n' importe ou , à condition que la VM soit utilisée comme NAS .
C' est à dire , que les fichiers soient directement créés / modifiés / stockés sur le NAS ( la VM  ) , et les dossiers du NAS monté automatiquement au démarrage des ordis de Fanou et de Eric ... il me semble l' avoir deja dis .

Mais ça aussi sa semble trop simple et trop facile tongue

Et j' ai cru comprendre que la VM n ' est pas destinée a sauvegarder quoi que ce soit . c' est le disque externe de 8T qui l' est .

Dernière modification par iznobe (Le 15/06/2025, à 09:20)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#110 Le 15/06/2025, à 09:37

O_20_100_O

Re : script d’automatisation sauvegardes

C'est le moment d'aller respirer l'air pur de nos campagnes.
Capture-d-cran-du-2025-06-15-09-38-28.png ... et ça dure ...

Dernière modification par O_20_100_O (Le 15/06/2025, à 09:40)

Hors ligne

#111 Le 15/06/2025, à 10:46

eric63

Re : script d’automatisation sauvegardes

@ O_20_100_O Bonne promenade smile profite en bien.J’ai moins de chance je suis sous l’orage
@ iznobe

des le 1er caractere du script ...
Au passage le shebang c ' est : #!/bin/bash

c’est bien pareil que #!/usr/bin/bash ??
vu c’est une erreur de copier coller j’ai oublié le # en debut de ligne qui est bien présent

j' ai cru comprendre que la VM n ' est pas destinée a sauvegarder quoi que ce soit

la VM contient aussi les sauvegardes des documents des 2 sessions et les autres sauvegardes sont sur le 8T
La VM contient aussi les dossiers des photos images et musiques qui sont partageables depuis la VM pour éviter de trainer des photos sur les sessions
il me semble que j’avais précisé dans ce fil que je voulais faire cela de ma session uniquement. Je verrais par la suite au vue des pratiques de chacun si c’est une bonne idée.
Y’a rien de sanctuarisé non plus.


j’ai ajouté en fin de script ces lignes pour faire des essais de sauvegarde du dossier Documents du portable uniquement, en cas de non détection d’une sauvegarde

if [[ $resultats = "" ]]; then
if ping -c 1 -W 2 192.168.1.60 >/dev/null 2>&1; then
		echo "Le PC fanou est joignable, lancement de la sauvegarde"
		rsync --progress -a -v --delete-after -e ssh fanou@s192.168.1.60/home/fanou/Documents /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/ --backup --backup-dir=incremental-DocumentsFanou/$(date +%F_%Hh%M)/
	else
		echo "Le PC fanou est injoignable. Sauvegarde ignorée."
		kdialog --error "Le PC fanou est injoignable. Sauvegarde ignorée."
fi;
fi
kubu@kubu-System-Product-Name:~$ /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
ligne26
ctrlID
partition35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
La partition n'est pas montée
ligne27
ligne31
ctrlID
partition35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ligne31
ctrlID
partition35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ligne34
ctrlID 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
partition35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ligne40 la partition est montée
ligne42
ctrlID35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
partition35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ligne43 
la réponse est vide.
Le PC fanou est joignable, lancement de la sauvegarde
building file list ... 
rsync: [sender] change_dir "/home/kubu/fanou@192.168.1.60/home/fanou" failed: No such file or directory (2)
0 files to consider

sent 29 bytes  received 11 bytes  80,00 bytes/sec
total size is 0  speedup is 0,00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1338) [sender=3.4.1]
kubu@kubu-System-Product-Name:~$ 

ce qui ne m’étonnes pas trop vu qu’il faudrait que je rentre quelque part avant son login et mdp de session pour avoir accès à son dossier Documents
donc ma commande n’est pas bonne et est incomplète et je sais pas faire cela en ligne de commande

Dernière modification par eric63 (Le 15/06/2025, à 10: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

Hors ligne

#112 Le 15/06/2025, à 11:46

iznobe

Re : script d’automatisation sauvegardes

ce qui ne m’étonnes pas trop vu qu’il faudrait que je rentre quelque part avant son login et mdp de session pour avoir accès à son dossier Documents
...
et je sais pas faire cela en ligne de commande

pas si tu fais un montage sshfs de ce répertoire sur ton ordi ...

Dernière modification par iznobe (Le 15/06/2025, à 11:47)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#113 Le 15/06/2025, à 11:48

iznobe

Re : script d’automatisation sauvegardes

eric63 a écrit :

j’ai modifié mes points de montage pour coller aux sauvegardes
fichier PointsDeMontage

#!/bin/bash
# source --> destination
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Photos/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Photos
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Images/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Images
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Musiques/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Musiques
sshfs Multimedias@192.168.1.128:/home/Multimedias/DocumentsPartages/ /home/kubu/VMMultimedias/VMDocumentsPartages
sshfs Multimedias@192.168.1.60:/home/fanou/Documents/ /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou
/home/kubu/Documents/ /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsEric

je sais pas comment va réagir la sauvegarde DocumentsEricFanou si le portable fanou est éteint ??

P.S. correction du copier coller mal positionné oublie du # au shebang #!/bin/bash

je comprends rien a ce que tu fais .

Tu dis que tu fais les montages , puis apres tu dis que ce n' est pas monté ... et qu ' il te faut entrer le mot de passe et el login .

c' est vraiment pas clair ton histoire ...


Le probleme , c' est que tu fonces tete baissée dans un ou des scripts , que tu ne montres pas l' integralité , et surtout que tu ne fais pas de plan .


C' est pas compliqué , tu prends un dossier a sauvegarder .
tu la montes en SSHFS sur l' ordi qui a besoin de sauvegarder et celui à partir du quel tes scripts seront lancés .

Dans le script , tu n' as alors plus q u' a gerer :
tu verifies que le " partage " est bien monté . ( accessibilité du dossier a sauvegarder )
tu verifies que la partition de stockage est bien montée aussi .
Si oui , ba tu lances la sauvegarde .

Exactement ce que fais le script que je t ' ai donné ... :



Pareil pour chaque dossier a sauvegarder .
le reste , le nombre de jours , je sais pas tant quoi d' autres , ce sont des paramètres a modifier qui n' entre presque pas en ligne de compte pour la structure de ton script .


Au lieu de t ' empêtrer avec 4 ou 5 dossiers a sauvegarder dans un seul script , tu fais un un script par dossier de sauvegarde .
quand tu en auras fais un tu auras deja une meilleure vision de la chose .
il ne te restera ensuite qu ' a faire un tableau des dossiers a sauvegarder , un tableau des options qui change , et une boucle si tu veux tout mettre dans un seul script .

Dernière modification par iznobe (Le 15/06/2025, à 12:01)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#114 Le 15/06/2025, à 12:10

iznobe

Re : script d’automatisation sauvegardes

Dans un 1er temps , voilà comment je vois la chose , pour un dossier à sauvegarder :

#! /bin/bash

# montage  ( global ):
sshfs Multimedias@192.168.1.128:/home/Multimedias /home/kubu/VMMultimedias
# qui devrait etre fait dans le fstab a chaque demarrage des 2 ordis . pas dans ce script .

# Chemins Dossiers a sauvegarder :
PhotoDirASauver ="/home/kubu/VMMultimedias/VMMultimediasCommuns/Photos"
ImagesDirASauver ="/home/kubu/VMMultimedias/VMMultimediasCommuns/Images"
# +++
# +++

# si besoin , tu peux aussi " variabiliser " les dossiers de destination de la sauvegarde pour inclure la variable dans la commande rsync ( meilleure lisibilité et clarté dans le script : )
# Chemins Dossiers de destinations des sauvegardes
PhotoDirSauvDest="/media/$USER/JEUX8T/Sauvegardes/Photo"
# +++
# +++
# +++

# script de sauvegarde :
MountPoint="/media/$USER/SAUV" # contrôle de la destination de la sauvegarde ( globale )
PartitionUID="d9dc9f4e-a24a-4573-9465-13711480f272"
ctrlID=$(findmnt -n --output UUID $MountPoint)
if [[ "$ctrlID" != "$PartitionUID" ]] ; then
	echo "La partition de sauvegarde 8T n'est pas montée !"
else
	echo "elle est bien montée."
	if [[ -d $PhotoDirASauver ]]# controle de l' accessibilité au dossier à sauvegarder :
		then
			rsync ......... $PhotoDirASauver  $PhotoDirSauvDest
			# ajoute tes trucs a toi si besoin : kdialog etc ...
	else 
		echo " rien ne sera sauvegardé le dossier a sauvegarder est inaccessible ! "
	fi
	# possibilité d' utiliser un switch case à la place des if / else ici ( ou d' une boucle peut-etre ), de façon a " obliger " le script à ne procéder qu ' a une seule sauvegarde à la fois .
	# à voir une fois le script complet et propre .
fi

Evidemment , il faut ajuster , un peu partout , mais la structure me parait simple et correcte , et elle suit exactement :

tu la montes en SSHFS sur l' ordi qui a besoin de sauvegarder et celui à partir du quel tes scripts seront lancés .
Dans le script , tu n' as alors plus qu' a gérer :
tu verifies que le " partage " est bien monté . ( accessibilité du dossier a sauvegarder )
tu verifies que la partition de stockage est bien montée aussi .
Si oui , ba tu lances la sauvegarde .

Le script est clair , complet et commenté avec les trucs que fait le script , et pas plus .

Dernière modification par iznobe (Le 15/06/2025, à 14:35)


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#115 Hier à 09:31

geole

Re : script d’automatisation sauvegardes

eric63 a écrit :
.....
#tests
if [[ $resultats =~ "" ]]; then echo la réponse est vide.;"";fi
if [[ $resultats =~ "1" ]]; then echo la réponse contient 1.;Photos=1;fi
if [[ $resultats  =~ "2" ]]; then echo la réponse contient 2.;Images=1;fi
if [[ $resultats  =~ "4" ]]; then echo la réponse contient 4.;Musique=1;fi
if [[ $resultats  =~ "8" ]]; then echo la réponse contient 8.;DocumentsCommuns=1;fi
if [[ $resultats  =~ "16" ]]; then echo la réponse contient 16.;DocumentsEricFanou=1;fi

Bonjour
Attention: Dans le chiffre 16, il y a le chiffre 1!!!!

a@b:~$ 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); echo $resultats;
2 4 16
a@b:~$ if [[ $resultats =~ "1" ]]; then echo la réponse contient 1.;Photos=1;fi
la réponse contient 1.
a@b:~$ 

Je propose

if [[ $resultats =~ "1 " ]]; then echo la réponse contient 1.;Photos=1;fi
if [[ $resultats = "1" ]]; then echo la réponse est 1.;Photos=1;fi

Dernière modification par geole (Hier à 09:35)


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

#116 Hier à 09:53

Watael

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...

je me demande encore si un case/esac ne serait visuellement pas plus léger... wink


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

Hors ligne

#117 Hier à 10:40

iznobe

Re : script d’automatisation sauvegardes

Watael a écrit :

je me demande encore si un case/esac ne serait visuellement pas plus léger... wink

c' est ce que j' avais proposé aussi à un moment ( switch case ) qui ne s' applique pas textuellement au bash .... desolé pour mon ignorance à ce niveau là .


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#118 Hier à 11:14

Watael

Re : script d’automatisation sauvegardes

( switch case ) [...] ne s' applique pas textuellement au bash

qu'est-ce que tu veux dire ?


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

Hors ligne

#119 Hier à 11:19

iznobe

Re : script d’automatisation sauvegardes

que un " switch/case " , en bash ca n' existe pas , puisque tu emploies le terme "  case/esac " .
Mais que grosso modo , c' est la meme chose si on extrapole aux langages de programmation en general .


retour COMPLET et utilisable de commande  |  script montage partitions

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

Hors ligne

#120 Hier à 11:35

Watael

Re : script d’automatisation sauvegardes

littéralement, en effet, switch case n'existe pas en bash, et case/esac existe :
soit var=foobar

case $var in #guillemets facultatifs
'') echo vide
;;
foo) echo presque
;;
foo*) echo ok
;;
autre\ valeur) echo autre #il faut protéger les espaces et autres caractères de l'IFS
;;
*) echo tout
;;
esac

Dernière modification par Watael (Hier à 11:37)


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

Hors ligne

#121 Hier à 12:52

eric63

Re : script d’automatisation sauvegardes

je vais essayer de répondre à tous.
le case esac j’ai essayé mais comme ça ne fonctionnait pas j’ai pas insisté (c’est surement moi qui fait mal les choses)
j’ai créé un script pour les montages qui se lance automatiquement au démarrage de ma session (pas dans le fstab)
script montages

#!/bin/bash
# source --> destination
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Photos/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Photos
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Images/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Images
sshfs Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Musiques/ /home/kubu/VMMultimedias/VMMultimediasCommuns/Musiques
sshfs Multimedias@192.168.1.128:/home/Multimedias/DocumentsPartages/ /home/kubu/VMMultimedias/VMDocumentsPartages
sshfs fanou@192.168.1.60:/home/fanou/Documents/ /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou
/home/kubu/Documents /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsEric

comme je peux l’arrêter et le redémarrer à volonté depuis configuration système/démarrage automatique j’ai au démarrage:
Copie-d-cran-20250616-094906.png
ce qui me donne à penser que le montage est foireux pour les 2 dernières lignes (ça ne m’étonnerais pas du tout j’ai essayé d’autres choses mais c’est pas plus concluant)

le script de démarrage est lui aussi monté en automatique mais ne sauvegarde rien visiblement
pour essai j’ai copié un dossier de musique dans la VM (status quo) et relancé le script mais le dossier de sauvegarde dans le 8T ne contient rien donc la sauvegarde ne fonctionne pas: lorsque je redémarre le script j’ai:
Copie-d-cran-20250616-095141.png
et  le script  qui au delà de la ligne 97 ne voit plus rien (mauvaise écriture encore une fois sans doute)

#!/bin/bash
sleep 5
####6b)  Créer le service d'exécution de la sauvegarde

###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
### controle si le disque est monté
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

#attente=30

###controle validité disque
if [[ "$ctrlID" != "$PartitionUID" ]]; then
	echo "ligne24"
	echo "ctrlID" $ctrlID
	echo "partition"$PartitionUID
	echo "La partition n'est pas montée"
	echo "ligne28"
	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)
	while [[ "$ctrlID" != "$PartitionUID" ]]; do
		echo "ligne33"
		echo "ctrlID" $ctrlID
		echo "partition"$PartitionUID
		sleep 1
		#si le montage est reconnu mettre ctrlID à la bonne valeur
		ctrlID=$(findmnt -n --output UUID $MountPoint)
		sleep 1
		echo "ligne40"
		echo "ctrlID" $ctrlID
		echo "partition"$PartitionUID
		sleep 1
	done
else
	echo "ligne46"
	echo "ctrlID" $ctrlID
	echo "partition"$PartitionUID
	kdialog --error "le disque est monté \n la sauvegarde peut être faite maintenant "
	echo "ligne50"
	echo "ctrlID" $ctrlID
	echo "partition"$PartitionUID
fi
#montage de la VM et du portable
#/home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh

echo "ligne57 la partition est montée"
### Faisons en sorte que ce script puisse être utilisé à la connexion du disque ou par des sauvegardes déclenchées par des timer.
echo "ligne59"
echo "ctrlID"$ctrlID
echo "partition"$PartitionUID
if [[ "$ctrlID" = "$PartitionUID" ]]; then
	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)
	echo "ligne64 " $resultats
fi

#tests
if [[ $resultats =~ "" ]]; then
	echo la réponse est vide.
	echo "ligne70 " $resultats
fi
if [[ $resultats =~ "1" ]]; then
	echo la réponse contient 1.
	echo "ligne74 " $resultats
	Photos=1
fi
if [[ $resultats =~ "2" ]]; then
	echo la réponse contient 2.
	echo "ligne79 " $resultats
	Images=1
fi
if [[ $resultats =~ "4" ]]; then
	echo la réponse contient 4.
	echo "ligne84 " $resultats
	Musique=1
fi
if [[ $resultats =~ "8" ]]; then
	echo la réponse contient 8.
	echo "ligne89 " $resultats
	DocumentsCommuns=1
fi
if [[ $resultats =~ "16" ]]; then
	echo la réponse contient 16.
	echo "ligne94 " $resultats
	DocumentsEricFanou=1
fi
echo "ligne97 " $resultats
kdialog --error "97 traitement des résultats"

#traitements
#Passage=$(date +"-%Y-%m-%d-%H-%M-%S")
## test d'exécution sources --> destinations
if test "$Photos" != ""; then
	echo "ligne 101 test photo"$Photos
	rsync --progress -a -v --delete-after -e ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Photos /media/kubu/JEUX8T/SAUVEGARDES/ --backup --backup-dir=incremental-Photos/$(date +%F_%Hh%M)/
fi
if test "$Images" != ""; then
	echo echo "ligne 105 test image"$Images
	rsync --progress -a -v --delete-after -e ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Images /media/kubu/JEUX8T/SAUVEGARDES/ --backup --backup-dir=incremental-Images/$(date +%F_%Hh%M)/
fi
if test "$Musiques" != ""; then
	echo "ligne 109 test musique" $Musiques
	rsync --progress -a -v --delete-after -e ssh Multimedias@192.168.1.128:/home/Multimedias/MultimediasCommuns/Musiques /media/kubu/JEUX8T/SAUVEGARDES/ --backup --backup-dir=incremental-Musiques/$(date +%F_%Hh%M)/
fi
if test "$DocumentsCommuns" != ""; then
	echo "ligne 113 test docCom" $DocumentsCommuns
	rsync --progress -a -v --delete-after -e ssh Multimedias@192.168.1.128:/home/Multimedias/DocumentsPartages /media/kubu/JEUX8T/SauvegardesDocumentsCommuns/ --backup --backup-dir=incremental-DocumentsPartages/$(date +%F_%Hh%M)/
fi
if test "$DocumentsEricFanou" != ""; then
	echo "ligne 117 test docPerso" $DocumentsEricFanou
	rsync --progress  -a -v --delete-after   -e   /home/kubu/Documents  /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsEric/  --backup --backup-dir=incremental-DocumentsFanouEric/$(date +%F_%Hh%M)/
	if ping -c 1 -W 2 192.168.1.60 >/dev/null 2>&1; then
		echo "120 Le PC fanou joignable, lancement de la sauvegarde"
		kdialog --error "121 Le PC fanou est joignable. Sauvegarde lancée."
		rsync --progress -a -v --delete-after -e ssh fanou@s192.168.1.60/home/fanou/Documents /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/ --backup --backup-dir=incremental-DocumentsFanou/$(date +%F_%Hh%M)/
	else
		echo "124 Le PC fanou est injoignable. Sauvegarde ignorée."
		kdialog --error "125 Le PC fanou est injoignable. Sauvegarde ignorée."
	fi
fi
if [[ $resultats = "" ]]; then
if ping -c 1 -W 2 192.168.1.60 >/dev/null 2>&1; then
		echo "130 Le PC fanou est joignable, lancement de la sauvegarde"
		kdialog --error "131 Le PC fanou est joignable. Sauvegarde lancée."
		echo "ligne131"
		echo "ctrlID" $ctrlID
		echo "partition"$PartitionUID
		rsync --progress -a -v --delete-after -e 192.168.1.60/home/fanou/Documents /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/ --backup --backup-dir=incremental-DocumentsFanou/$(date +%F_%Hh%M)/
	else
		echo "137 Le PC fanou est injoignable. Sauvegarde ignorée."
		kdialog --error "138 Le PC fanou est injoignable. Sauvegarde ignorée."
fi;
fi

en ligne de commande ça donne

kubu@kubu-System-Product-Name:~$ /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
ligne46
ctrlID 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
partition35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ligne50
ctrlID 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
partition35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ligne57 la partition est montée
ligne59
ctrlID35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
partition35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ligne64  4
la réponse est vide.
ligne70  4
la réponse contient 4.
ligne84  4
ligne97  4
kubu@kubu-System-Product-Name:~$ 

Après les contrôles de montages la fenêtre de sélection des sauvegardes s’ouvre validation pour Musiques uniquement 
mais rien ne se produit après la ligne 97 qui commence le traitement des sauvegardes
voilà où j’en suis . J’ai pas fait les modifications proposées pour l’instant vu que j’ai pas touché au script depuis hier mais je vais tenir compte de vos remarques dans les prochaines versions


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

#122 Hier à 14:31

Watael

Re : script d’automatisation sauvegardes

utilise $LINENO, plutôt que de mettre les numéros de lignes "en dur".

et remplace tous les points-virgules par des retours à la ligne : une seule instruction par ligne dans un script, par souci de lisibilité.

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.

après ça, je bouclerais sur $resultats (sans assigner Photos, Images...) :

for i in $resultats
do
    if (( i == 1 ))
    then
         rsync ... Photos ...
    elif (( i == 2 ))
    then
        rsync ... Images ...
    elif ...
...
fi

Dernière modification par Watael (Hier à 14:46)


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

Hors ligne

#123 Hier à 15:01

Watael

Re : script d’automatisation sauvegardes

et attention : tu assignes Musique, mais tu testes $Musiques.


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

Hors ligne

#124 Hier à 15:26

Watael

Re : script d’automatisation sauvegardes

mise au propre, à tester :

#!/usr/bin/bash

MountPoint="/media/$USER/JEUX8T"
PartitionUID="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa"

date=$(date +%F_%Hh%M)
ctrlID=$(findmnt -n --output UUID $MountPoint)

# controle si le disque est monté
if test "$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 test "$ctrlID" = "$PartitionUID"
    do
        sleep 1
        #si le montage est reconnu mettre ctrlID à la bonne valeur
        ctrlID=$(findmnt -n --output UUID $MountPoint)
        sleep 1
        echo "ctrlID" $ctrlID
        echo "partition"$PartitionUID
        sleep 1
    done
else
    echo réussite
    kdialog --error "le disque est monté \n la sauvegarde peut être faite maintenant "
    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
    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
        rsync --progress -a -v --delete-after -e ssh $user@$ip:"$src" "$dst" --backup --backup-dir="$bkp"
    done
fi

on peut "factoriser" davantage. smile

ce n'est qu'une mise au propre, il y a encore des choses qui me chagrinent...
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.

edit: correction case i -> case $i

Dernière modification par Watael (Hier à 20:22)


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

Hors ligne

#125 Hier à 15:43

Watael

Re : script d’automatisation sauvegardes

je ferais le contraire :

#!/usr/bin/bash

MountPoint="/media/$USER/JEUX8T"
PartitionUID="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa"

date=$(date +%F_%Hh%M)
until findmnt -n "$MountPoint"
do
    >&2 echo "$MountPoint non trouvé"
    read -p 'poursuivre la recherche ? [Yn] '
    [[ $REPLY == n* ]] && { >&2 echo "abandon."; exit;}
done
ctrlID=$(findmnt -n --output UUID "$MountPoint")

if test "$CtrlID" != "$PartitionUID"
then
    >&2 echo "montage incorrecte"
    exit 1
else...

/!\ pas testé !


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

Hors ligne