#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
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
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
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
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
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
#111 Le 15/06/2025, à 10:46
- eric63
Re : script d’automatisation sauvegardes
@ O_20_100_O Bonne promenade 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
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
..... #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...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#117 Hier à 10:40
- iznobe
Re : script d’automatisation sauvegardes
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:
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:
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.
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