#151 Le 18/06/2025, à 15:26
- iznobe
Re : script d’automatisation sauvegardes
Salut , essaie comme ca :
#!/bin/bash
####6b) Créer le service d'exécution de la sauvegarde avec logging
###script de base geole modifié par iznobe et Watael de remplacement (plus simple) merci à eux
###voir https://forum.kubuntu-fr.org/viewtopic.php?id=2091380&p=5
### modifier les 2 premières variables du script
# Configuration des logs
LOG_DIR="~/log/backup-script"
LOG_FILE="$LOG_DIR/backup_$(date +%Y%m%d).log"
DEBUG_FILE="$LOG_DIR/debug_$(date +%Y%m%d).log"
ERROR_FILE="$LOG_DIR/error_$(date +%Y%m%d).log"
# Création du répertoire de logs s'il n'existe pas
mkdir -pv "$LOG_DIR"
# Mode debug (mettre à 1 pour activer le debug verbeux)
DEBUG_MODE=1
# Fonctions de logging
log_info() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [INFO] $message" | tee -a "$LOG_FILE"
}
log_error() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [ERROR] $message" | tee -a "$LOG_FILE" | tee -a "$ERROR_FILE"
}
log_debug() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
if [ "$DEBUG_MODE" -eq 1 ]; then
echo "[$timestamp] [DEBUG] $message" | tee -a "$DEBUG_FILE"
fi
}
log_warning() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [WARNING] $message" | tee -a "$LOG_FILE"
}
# Fonction pour nettoyer les anciens logs (garde les 30 derniers jours)
cleanup_old_logs() {
log_debug "Nettoyage des anciens logs (> 30 jours)"
find "$LOG_DIR" -name "*.log" -type f -mtime +30 -delete 2>/dev/null
}
# Gestion des erreurs et interruptions
trap 'log_error "Script interrompu par signal"; exit 130' INT TERM
# Début du script
log_info "=== DÉBUT DE LA SAUVEGARDE ==="
log_debug "Répertoire des logs: $LOG_DIR"
log_debug "Mode debug: $DEBUG_MODE"
# Nettoyage des anciens logs
cleanup_old_logs
###Paramètres
MountPoint="/media/$USER/JEUX8T"
PartitionUID="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa"
date=$(date +%F_%Hh%M)
log_info "Configuration:"
log_info " - Point de montage: $MountPoint"
log_info " - UUID partition: $PartitionUID"
log_info " - Date: $date"
log_debug "Utilisateur: $USER"
###controle validité disque solution#125 Watael
log_info "Vérification du disque externe..."
ctrlID=$(findmnt -n --output UUID $MountPoint) ### controle si le disque est monté
log_debug "UUID trouvé: '$ctrlID'"
log_debug "UUID attendu: '$PartitionUID'"
#controle validité disque ancienne version
if [[ "$ctrlID" != "$PartitionUID" ]]
then
log_error "Disque non reconnu ou éteint"
log_error "UUID trouvé: '$ctrlID'"
log_error "UUID attendu: '$PartitionUID'"
echo échec
echo "ctrlID" $ctrlID
echo "partition"$PartitionUID
kdialog --error "Aucun disque reconnu ou disque éteint \n ALLUMER LE DISQUE EXTERNE \n AVANT de sélectionner «OK»"
log_info "Attente du montage du disque..."
sleep 5
# conditions de détection disque non monté (ctrlID vide)
attempt=1
while [[ "$ctrlID" != "$PartitionUID" ]]
do
log_debug "Tentative $attempt - Vérification du montage..."
sleep 2
#si le montage est reconnu mettre ctrlID à la bonne valeur
ctrlID=$(findmnt -n --output UUID $MountPoint)
sleep 2
log_debug "Ligne $LINENO"
echo "ctrlID" $ctrlID
echo "partition" $PartitionUID
log_debug "UUID vérifié: '$ctrlID'"
sleep 2
((attempt++))
if [ $attempt -gt 60 ]; then
log_error "Timeout: Disque non monté après 60 tentatives"
kdialog --error "Timeout: Impossible de détecter le disque"
exit 1
fi
done
log_info "Disque monté avec succès après $attempt tentatives"
else
log_info "Disque correctement monté"
echo réussite
echo "ctrlID" $ctrlID
echo "partition" $PartitionUID
kdialog --error " le disque est monté \n la sauvegarde peut être faite maintenant "
fi
### choix des sauvegardes
log_info "Affichage de la boîte de dialogue de sélection..."
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)
if [ $? -ne 0 ]; then
log_warning "Utilisateur a annulé la sélection"
exit 0
fi
log_info "Sélections utilisateur: $resultats"
backup_count=0
successful_backups=0
failed_backups=0
for i in $resultats
###choix façon Watael
do
backup_count=$((backup_count + 1))
log_info "=== TRAITEMENT SAUVEGARDE $backup_count ==="
log_debug "Valeur sélectionnée: $i"
case $i in
1)
log_info "Sauvegarde Photos sélectionnée"
echo Photos
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/MultimediasCommuns/Photos
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Photos/$date/
backup_name="Photos"
;;
2)
log_info "Sauvegarde Images sélectionnée"
echo Images
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/MultimediasCommuns/Images
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Images/$date/
backup_name="Images"
;;
4)
log_info "Sauvegarde Musiques sélectionnée"
echo Musiques
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/MultimediasCommuns/Musiques
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Musiques/$date/
backup_name="Musiques"
;;
8)
log_info "Sauvegarde DocumentsCommuns sélectionnée"
echo DocumentsCommuns
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/DocumentsPartages
dst=/media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/
bkp=incremental-DocumentsPartages/$date/
backup_name="DocumentsCommuns"
;;
16)
log_info "Sauvegarde DocumentsEricFanou sélectionnée"
echo DocumentsEricFanou
# Première partie - sauvegarde locale
log_debug "Sauvegarde locale Documents kubu"
if rsync --progress -a -v --delete-after /home/kubu/Documents/ /home/kubu/VMSauvegardesDocuments/ --backup --backup-dir="incremental-DocumentsEric/$date/" >> "$LOG_FILE" 2>> "$ERROR_FILE"; then
log_info "Sauvegarde locale Documents kubu réussie"
else
log_error "Échec sauvegarde locale Documents kubu"
fi
user=fanou
ip=192.168.1.60
src=/home/fanou/Documents
dst=/home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/
bkp=incremental-DocumentsFanou/$date/
backup_name="DocumentsEricFanou"
;;
*)
log_warning "Valeur inconnue ignorée: $i"
continue
;;
esac
log_info "Configuration sauvegarde $backup_name:"
log_info " - Source: $user@$ip:$src"
log_info " - Destination: $dst"
log_info " - Répertoire de sauvegarde: $bkp"
# Test SSH avant rsync pour les sauvegardes distantes
if [ "$i" != "16" ] || [ "$backup_name" == "DocumentsEricFanou" ]; then
log_debug "Test de connexion SSH vers $user@$ip..."
if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes "$user@$ip" exit 2>/dev/null; then
log_info "Connexion SSH vers $user@$ip: OK"
else
log_error "Connexion SSH vers $user@$ip: ÉCHEC"
failed_backups=$((failed_backups + 1))
continue
fi
fi
# Vérification de l'existence du répertoire de destination
if [ ! -d "$dst" ]; then
log_warning "Répertoire destination n'existe pas: $dst"
log_info "Tentative de création..."
if mkdir -p "$dst" 2>> "$ERROR_FILE"; then
log_info "Répertoire créé avec succès: $dst"
else
log_error "Impossible de créer le répertoire: $dst"
failed_backups=$((failed_backups + 1))
continue
fi
fi
kdialog --passivepopup "Sauvegarde $backup_name en cours..." 10 &
popup_pid=$!
log_info "Début de la sauvegarde $backup_name..."
start_time=$(date +%s)
# Exécution de rsync avec capture des logs
if rsync --progress -a -v --delete-after -e ssh $user@$ip:"$src" "$dst" --backup --backup-dir="$bkp" >> "$LOG_FILE" 2>> "$ERROR_FILE"; then
end_time=$(date +%s)
duration=$((end_time - start_time))
log_info "Sauvegarde $backup_name réussie en ${duration}s"
successful_backups=$((successful_backups + 1))
else
end_time=$(date +%s)
duration=$((end_time - start_time))
log_error "Échec sauvegarde $backup_name après ${duration}s"
failed_backups=$((failed_backups + 1))
fi
done
# Résumé final
log_info "=== RÉSUMÉ FINAL ==="
log_info "Sauvegardes traitées: $backup_count"
log_info "Réussites: $successful_backups"
log_info "Échecs: $failed_backups"
if [ $failed_backups -eq 0 ]; then
log_info "Toutes les sauvegardes ont réussi !"
kdialog --msgbox "FIN des sauvegardes $resultats - TOUTES RÉUSSIES !"
else
log_warning "Certaines sauvegardes ont échoué. Consultez les logs."
kdialog --msgbox "FIN des sauvegardes $resultats - $failed_backups échec(s) détecté(s)\nConsultez les logs: $LOG_FILE"
fi
log_info "=== FIN DE LA SAUVEGARDE ==="
log_info "Logs disponibles dans: $LOG_DIR"
Dernière modification par iznobe (Le 18/06/2025, à 15:31)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#152 Le 18/06/2025, à 17:14
- eric63
Re : script d’automatisation sauvegardes
nickel dans les 2 cas la sauvegarde à réussit
kubu@kubu-System-Product-Name:~$ /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh
[2025-06-18 16:48:40] [INFO] === DÉBUT DE LA SAUVEGARDE ===
[2025-06-18 16:48:40] [DEBUG] Répertoire des logs: ~/log/backup-script
[2025-06-18 16:48:40] [DEBUG] Mode debug: 1
[2025-06-18 16:48:40] [DEBUG] Nettoyage des anciens logs (> 30 jours)
[2025-06-18 16:48:40] [INFO] Configuration:
[2025-06-18 16:48:40] [INFO] - Point de montage: /media/kubu/JEUX8T
[2025-06-18 16:48:40] [INFO] - UUID partition: 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
[2025-06-18 16:48:40] [INFO] - Date: 2025-06-18_16h48
[2025-06-18 16:48:40] [DEBUG] Utilisateur: kubu
[2025-06-18 16:48:40] [INFO] Vérification du disque externe...
[2025-06-18 16:48:40] [DEBUG] UUID trouvé: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-18 16:48:40] [DEBUG] UUID attendu: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-18 16:48:40] [INFO] Disque correctement monté
réussite
ctrlID 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
partition 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
[2025-06-18 16:48:45] [INFO] Affichage de la boîte de dialogue de sélection...
[2025-06-18 16:48:53] [INFO] Sélections utilisateur: 8
[2025-06-18 16:48:53] [INFO] === TRAITEMENT SAUVEGARDE 1 ===
[2025-06-18 16:48:53] [DEBUG] Valeur sélectionnée: 8
[2025-06-18 16:48:54] [INFO] Sauvegarde DocumentsCommuns sélectionnée
DocumentsCommuns
[2025-06-18 16:48:54] [INFO] Configuration sauvegarde DocumentsCommuns:
[2025-06-18 16:48:54] [INFO] - Source: Multimedias@192.168.1.128:/home/Multimedias/DocumentsPartages
[2025-06-18 16:48:54] [INFO] - Destination: /media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/
[2025-06-18 16:48:54] [INFO] - Répertoire de sauvegarde: incremental-DocumentsPartages/2025-06-18_16h48/
[2025-06-18 16:48:54] [DEBUG] Test de connexion SSH vers Multimedias@192.168.1.128...
[2025-06-18 16:48:55] [INFO] Connexion SSH vers Multimedias@192.168.1.128: OK
[2025-06-18 16:48:55] [INFO] Début de la sauvegarde DocumentsCommuns...
[2025-06-18 16:48:55] [INFO] Sauvegarde DocumentsCommuns réussie en 0s
[2025-06-18 16:48:55] [INFO] === RÉSUMÉ FINAL ===
[2025-06-18 16:48:55] [INFO] Sauvegardes traitées: 1
[2025-06-18 16:48:55] [INFO] Réussites: 1
[2025-06-18 16:48:55] [INFO] Échecs: 0
[2025-06-18 16:48:55] [INFO] Toutes les sauvegardes ont réussi !
[2025-06-18 16:49:05] [INFO] === FIN DE LA SAUVEGARDE ===
[2025-06-18 16:49:05] [INFO] Logs disponibles dans: ~/log/backup-script
kubu@kubu-System-Product-Name:~$
par contre toujours pas de succès avec mon dossier incremental-DocumentsPartages qui me sert de référence pour les backup et qui reste vide.
il devrait se mettre à jour car il contient dans un sous dossier qui contient le fichier script de sauvegardes qui lui est modifié assez régulièrement ??
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
#153 Le 18/06/2025, à 17:17
- steph810
Re : script d’automatisation sauvegardes
Re,
essaie ces 2 versions une definition en double, j'ai repri la v2 suis a la v3.+ donc a toi de revoir le chemin.
Mod point de montage L.66
Mod ssh
et celle ci en doudle ctrlID=$(findmnt -n --output UUID $MountPoint
si tu as vscodium tu peut comparer
https://pastebin.com/xJQgvcPV
et
https://pastebin.com/GMqvgvL2
c'est mon paste von pas disparaitre. Dit nous si encore des erreur
[EDIT]
pas assez rapide .......
je vien de pensez tu peut rajouter des variable encore pour les IP si elle doivent changer a l'avenir ca le rendra plus flexible.
...au cas ou
Vois ligne 201 si c'est bien le bon chemin
Dernière modification par steph810 (Le 18/06/2025, à 17:22)
Hors ligne
#154 Le 18/06/2025, à 18:51
- iznobe
Re : script d’automatisation sauvegardes
par contre toujours pas de succès avec mon dossier incremental-DocumentsPartages
j' avais demandés des retours pour confirmer / infirmer les chemins ...
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#155 Le 18/06/2025, à 20:07
- eric63
Re : script d’automatisation sauvegardes
désolé
kubu@kubu-System-Product-Name:~$ ls -l /home/Multimedias/MultimediasCommuns/
ls: cannot access '/home/Multimedias/MultimediasCommuns/': No such file or directory
kubu@kubu-System-Product-Name:~$ ls -l /media/kubu/JEUX8T/SAUVEGARDES/
total 16
drwxrwxr-x 2 kubu kubu 4096 mai 7 17:59 Images
drwxrwxr-x 3 kubu kubu 4096 juin 18 10:35 Musiques
drwxrwxr-x 15 kubu kubu 4096 mai 26 19:07 Photos
drwxrwxr-x 3 kubu kubu 4096 juin 18 11:59 SauvegardesDocumentsCommuns
kubu@kubu-System-Product-Name:~$
kubu@kubu-System-Product-Name:~$ ls -l /home/Multimedias/MultimediasCommuns/
ls: cannot access '/home/Multimedias/MultimediasCommuns/': No such file or directory
kubu@kubu-System-Product-Name:~$ ls -l /media/kubu/JEUX8T/SAUVEGARDES/
total 16
drwxrwxr-x 2 kubu kubu 4096 mai 7 17:59 Images
drwxrwxr-x 3 kubu kubu 4096 juin 18 10:35 Musiques
drwxrwxr-x 15 kubu kubu 4096 mai 26 19:07 Photos
drwxrwxr-x 3 kubu kubu 4096 juin 18 11:59 SauvegardesDocumentsCommuns
kubu@kubu-System-Product-Name:~$ ls -l /media/kubu/JEUX8T/SauvegardesDocumentsCommuns/
total 8
drwxrwxr-x 4 kubu kubu 4096 juin 18 10:34 DocumentsPartages
drwxrwxr-x 2 kubu kubu 4096 juin 18 11:39 incremental-DocumentsPartages
kubu@kubu-System-Product-Name:~$ ls -l /home/Multimedias/DocumentsPartages
ls: cannot access '/home/Multimedias/DocumentsPartages': No such file or directory
kubu@kubu-System-Product-Name:~$ sudo find /home/Multimedias/MultimediasCommuns/ -name DocumentsPartages
[sudo] password for kubu:
find: ‘/home/Multimedias/MultimediasCommuns/’: No such file or directory
kubu@kubu-System-Product-Name:~$ sudo find /media/kubu/JEUX8T -name SauvegardesDocumentsCommuns
/media/kubu/JEUX8T/SauvegardesDocumentsCommuns
/media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns
kubu@kubu-System-Product-Name:~$
ça me semble normal que la commande
ls -l /home/Multimedias/MultimediasCommuns/
ne donne rien puisque que c’est une sauvegarde dans la Vm
donc il faut que je démarre la Vm
ssh Multimedias@192.168.1.128
$ ls -l /home/Multimedias/MultimediasCommuns/
total 12
drwxrwxr-x 2 Multimedias Multimedias 4096 Jun 18 08:35 Images
drwxrwxr-x 3 Multimedias Multimedias 4096 Jun 18 08:35 Musiques
drwxrwxr-x 15 Multimedias Multimedias 4096 Jun 18 08:34 Photos
$
celui dont j’ai modifié l’emplacement (/media/kubu/JEUX8T/SauvegardesDocumentsCommuns existe encore mais je vais le supprimer )
kubu@kubu-System-Product-Name:~$ ls -l /media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/
total 4
drwxrwxr-x 4 kubu kubu 4096 juin 18 10:34 DocumentsPartages
kubu@kubu-System-Product-Name:~$
Dernière modification par eric63 (Le 18/06/2025, à 20:14)
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
#156 Le 18/06/2025, à 20:58
- O_20_100_O
Re : script d’automatisation sauvegardes
donc il faut que je démarre la Vm
Elle n'est pas toujours en fonctionnement, comme la Freebox ?
La vie, pour moi elle est magnifique, pourquoi tu te la compliques ? (Zanini)
Hors ligne
#157 Le 18/06/2025, à 21:01
- iznobe
Re : script d’automatisation sauvegardes
l ' emplacement de sauvegarde est donc valide :
/media/kubu/JEUX8T/SauvegardesDocumentsCommuns
l ' emplacement à sauvegarder est donc :
/home/Multimedias/MultimediasCommuns/
et le nouvel emplacement de sauvegarde sera donc :
/media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/
Avant tu avais :
8) log_info "Sauvegarde DocumentsCommuns sélectionnée" echo DocumentsCommuns user=Multimedias ip=192.168.1.128 src=/home/Multimedias/DocumentsPartages dst=/media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/ bkp=incremental-DocumentsPartages/$date/ backup_name="DocumentsCommuns" ;;
il te faut donc remplacer cette section par :
8)
log_info "Sauvegarde DocumentsCommuns sélectionnée"
echo DocumentsCommuns
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/MultimediasCommuns/
dst=/media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/
bkp=incremental-DocumentsPartages/$date/
backup_name="DocumentsCommuns"
;;
Non ?
pour ne pas faire d' erreur et m ' y perdre , perso , ce que je fais c' est :
je nomme un montage et une sauvegarde à l' identique que le nom du dossier auquel il correspond .
Exemple , si le dossier a sauvegarder c' est : " SauvegardesDocumentsCommuns " ( ce qui en soit , n ' est deja pas tres logique ... qu ' il commence par sauvegarde , mais passons ) , alors le montage devrait etre ( puisque une seule commande suffit a monter ce " lot " , mais meme sans faire un seul montage , il faut peut etre re-ordonné ) :
" /home/Multimedias/MultimediasCommuns/SauvegardesDocumentsCommuns " .
( et en passant j ' aurais nommé l' utilisateur correspondant à la VM : VM , si il devait y en avoir qu ' un ... )
les nom de dossiers que tu choisis ne sont pas " parlants " du coup on s ' y perd un peu ( beaucoup ) .
Perso , je verrais plus parlant un chemin de la sorte pour ce cas là : /home/VM/Multimedias/Communs . /home/VM/Multimedias ne contiendrais alors que , et tous ce qui est multimedias ( quitte a faire des sous dossiers Photos + Vidéos etc... .
et un autre /home/VM/Documents/Communs . /home/VM/Documents ne contiendrais alors que , et tous les documents .
Là de suite , c' est bien plus clair et parlant( selon moi ) .
Avoue quand meme , que desuite , avec les chemins que j' ennonce , desuite on sait de quoi on parle
il est inutile de faire des repetitions , ca alourdit inutilement .
Dernière modification par iznobe (Le 18/06/2025, à 21:34)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#158 Le 18/06/2025, à 21:16
- eric63
Re : script d’automatisation sauvegardes
Elle n'est pas toujours en fonctionnement, comme la Freebox ?
ben si mais depuis la konsole c’est le seul moyen d’y accéder
et l’ai oublié une ligne pour pouvoir localisé le dossier DocumentsPartages
$ ls -l /home/Multimedias
total 16
drwxrwxr-x 4 Multimedias Multimedias 4096 Jun 18 08:34 DocumentsPartages
drwxrwxr-x 5 Multimedias Multimedias 4096 May 27 11:13 MultimediasCommuns
drwxrwxr-x 6 Multimedias Multimedias 4096 Jun 17 14:06 SauvegardesDocuments
drwxrwxr-x 2 Multimedias Multimedias 4096 Jun 17 14:02 incremental-DocumentsPartages
$
donc ça c’est correct en fait
8)
log_info "Sauvegarde DocumentsCommuns sélectionnée"
echo DocumentsCommuns
user=Multimedias
ip=192.168.1.128
src=/home/Multimedias/DocumentsPartages
dst=/media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/
bkp=incremental-DocumentsPartages/$date/
backup_name="DocumentsCommuns"
;;
Dernière modification par eric63 (Le 18/06/2025, à 21:25)
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
#159 Le 18/06/2025, à 21:17
- iznobe
Re : script d’automatisation sauvegardes
donc il faut que je démarre la Vm
Elle n'est pas toujours en fonctionnement, comme la Freebox ?
Si , mais elle n' est pas montée en permanence , alors que ca fait 3 mois que ca devrait etre le cas en l ' inscrivant dans le fstab
de son ordi ...
Dernière modification par iznobe (Le 18/06/2025, à 21:24)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#160 Le 18/06/2025, à 21:32
- eric63
Re : script d’automatisation sauvegardes
Si , mais elle n' est pas montée en permanence
je dis peut être une grosse co…ie mais si c’était pas montée en permanence comment je peux y accéder et voir tous les dossiers depuis dolphin ?? j’ai dû oublier un truc que vous m’avez déjà dit
ha si j’ai trouvé le montage qui se fait automatiquement au démarrage comme le script des sauvegardes ScriptSauvegardes.sh
il s‘s’appelle PointDeMontageVMMultimedias.sh
#!/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
Dernière modification par eric63 (Le 18/06/2025, à 21:43)
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
#161 Le 18/06/2025, à 21:38
- iznobe
Re : script d’automatisation sauvegardes
tu dois ajouter une ligne a ton fichier /etc/fstab . ( je l' ai specifié je ne sais meme plus combien de fois deja ... ) .
elle doit coontenir : sshfs .
Montre :
grep sshfs /etc/fstab
chez moi , sur un test :
iznobe@192.168.1.132:/media/test /media/test fuse.sshfs port=22,user,noatime,x-systemd.mount-timeout=3,_netdev
Tu as ajouté un " signet reseau ssh dans dolphin peut etre ?
je sais pas . mais le meilleur moyen d' etre tranquille c' est dans fstab .
Console ou pas , et touti cuenti , tant que la box et le disque dur seront fonctionnels , alors tu pourras faire tout ce que tu veux à partir de n' importe ou terminal , dolphin et autre , ce sera toujours accessible .
Dernière modification par iznobe (Le 18/06/2025, à 21:42)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#162 Le 18/06/2025, à 21:45
- iznobe
Re : script d’automatisation sauvegardes
ha si j’ai trouvé le montage qui se fait automatiquement au démarrage comme le script des sauvegardes ScriptSauvegardes.sh
il s‘s’appelle PointDeMontageVMMultimedias.sh
un script pour un montage ?
Alors qu ' une ligne ajouté au fstab et c' est fini ?
En tout cas , ton script ne doit pas fonctionner correctement , sinon , tu seras pas obligé de faire :
ça me semble normal que la commande
ls -l /home/Multimedias/MultimediasCommuns/
ne donne rien puisque que c’est une sauvegarde dans la Vm
donc il faut que je démarre la Vmssh Multimedias@192.168.1.128
et la commande répondrait directement ...
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#163 Le 18/06/2025, à 21:46
- eric63
Re : script d’automatisation sauvegardes
kubu@kubu-System-Product-Name:~$ grep sshfs /etc/fstab
kubu@kubu-System-Product-Name:~$
voir ma réponse #160
rajout de la commande depuis le dossier perso
et sans toucher au fstab pour l’instant
c’était là depuis quelques temps (pas très longtemps 1 mois max)
kubu@kubu-System-Product-Name:~$ ls -l /home/kubu/VMMultimedias/
total 12
drwxrwxr-x 2 kubu kubu 4096 juin 18 10:37 incremental-DocumentsPartages
drwxrwxr-x 1 1002 1002 4096 juin 18 10:34 VMDocumentsPartages
drwxrwxr-x 5 kubu kubu 4096 juin 18 10:33 VMMultimediasCommuns
kubu@kubu-System-Product-Name:~$
Dernière modification par eric63 (Le 18/06/2025, à 22:21)
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
#164 Le 18/06/2025, à 21:54
- iznobe
Re : script d’automatisation sauvegardes
A quelle occasion est lancé ce sript ? pourquoi donc cela ne rend pas les montages effectifs en permanence ?
j ' ajouterai les 2 lignes suivantes au fichier /etc/fstab , et je supprimerai le script et son lancement (vérifier si les options conviennent ) :
Multimedias@192.168.1.128:/home/Multimedias/ /home/kubu/VMMultimedias/ fuse.sshfs port=22,user,nofail,noatime,x-systemd.mount-timeout=3,_netdev
fanou@192.168.1.60:/home/fanou/Documents/ /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou fuse.sshfs port=22,user,nofail,noatime,x-systemd.mount-timeout=3,_netdev
et tu n' as plus besoin de gerer ni les montages , ni le ssh dans la commande rsync .
tu peux accéder n ' importe quand et n' importe comment ( terminal , gestionnaire de fichiers , n ' importe quel logiciel ) => simplicité et facilité .
Si tu préfères ajouter une ligne par dossier ( même si je trouve cela inutile ) , comme tu as pu le voir , c' est hyper facile de prendre une ligne du script en #160 et de la transformer en ligne pour ajouter au fstab .
le fstab est exactement prévu pour ça . ca serait dommage de se priver d' un outil prévu pour , et qui simplifie la vie et les choses .
Dernière modification par iznobe (Le 18/06/2025, à 21:59)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#165 Le 18/06/2025, à 22:19
- eric63
Re : script d’automatisation sauvegardes
j’ai encore ajouté une commande pour accéder à la VM directement depuis un dossier lié revoir #160
A quelle occasion est lancé ce script ? pourquoi donc cela ne rend pas les montages effectifs en permanence ?
les scripts sont lancés automatiquement au démarrage de ma session.Pour la 2ème question je sais pas
Dernière modification par eric63 (Le 18/06/2025, à 22:33)
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
#166 Le 19/06/2025, à 00:38
- iznobe
Re : script d’automatisation sauvegardes
/home/kubu/Documents /home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsEric
ce n' est pas une commande ca ? ce sont juste 2 chemins .
si tu lances le script manuellement dans le terminal , ca dis quoi ?
honnêtement , je ne comprends pas l' interet de perdre du temps ( encore ... ) , alors que l ' ajout des 2 lignes dans le fstab , on est sur de suite que ca marche et c' est effectif des le démarrage sans soucis .
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#167 Le 19/06/2025, à 00:55
- Watael
Re : script d’automatisation sauvegardes
"dans le fstab", si la machine cible est démarrée avant la lecture du fichier. Ce n'est peut être pas possible.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#168 Le 19/06/2025, à 08:20
- iznobe
Re : script d’automatisation sauvegardes
Salut Watael , pas tout compris , mais , si une machine n' est pas démarrée avant l ' ordinateur , il suffit de passer :
sudo mount -a
, pour que le montage soit effectif ( si la machine en question a été démarrée entre temps bien sur ) .
Sinon , logiquement , les serveurs qui partagent , doivent être lancés avant l ' ordinateur qui tente de monter les partages pour que cela fonctionne . C' est forcément le cas pour la BOX et la VM .
le seul bemol , ce serait l' ordi de fanou , et donc , en cas d ' oubli , et bien la commande ci-dessus est parfaite . ( a condition d' avoir ajouté les lignes au fichier /etc/fstab ) .
Dernière modification par iznobe (Le 19/06/2025, à 08:51)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#169 Le 19/06/2025, à 10:45
- Watael
Re : script d’automatisation sauvegardes
autant la Box, oui (elle est allumée et accessible en permanence, a priori ), autant pour la VM, c'est moins évident : la machine physique démarre avant la machine virtuelle.
c'est ce que je tentais de souligner : la machine physique peut-elle lire le fstab après le démarrage complet de la machine virtuelle ?
cela bloquerait probablement le montage des partitions de la machine physique, et donc le démarrage de la VM.
Dernière modification par Watael (Le 19/06/2025, à 10:47)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#170 Le 19/06/2025, à 12:12
- iznobe
Re : script d’automatisation sauvegardes
la VM c ' est le serveur . elle partage .
" la machine physique "( je sais pas trop ce que tu entends par là , peut etre le firmware de la box ? ) mais elle , ne lit rien du tout , et ne partage rien .
ces actions sont forcément executées par quelquechose de logiciel , dans ce cas là , une VM ( un OS comme un autre au fond ) .
C' est comme le BIOS d ' un ordi , ca ne partage rien , et ne monte rien , vu que ce n ' est pas un OS .
l ' ordi de eric , c ' est le client .
c' est lui qui devrait faire un montage distant en SSHFS en passant par son fichier /etc/fstab .
Que la VM demarre apres la box ( normal ) , n' a aucune incidence sur le fait de monter au démarrage sur l ' ordi de eric .
et quand bien meme si la box etait redemarrée un jour , en laissant l' ordi de eric allumé , un
sudo mount -a
( si les entrées sont ajoutées au fstab ) remettrait en place les montages si la VM est opérationnelle .
Dernière modification par iznobe (Le 19/06/2025, à 12:16)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#171 Le 19/06/2025, à 12:43
- eric63
Re : script d’automatisation sauvegardes
bon j’ai suivi les recommandations d’iznobe (il va me dire enfin )
j’ai ajouté les 2 lignes dans le fstab
j’ai décoché la propriété d’exécution du script PointDeMontageVMMultimedias
j’ai éteint le disque et rebooté le PC jusqu’à ma session
j’ai suivi le script ScriptSauvegarde et choisi DocumentCommuns tout c’est bien passé sans erreur
dans konsole j’ai envoyé la commande
ls -l /home/Multimedias/MultimediasCommuns/
kubu@kubu-System-Product-Name:~$ ls -l /home/Multimedias/MultimediasCommuns/
ls: cannot access '/home/Multimedias/MultimediasCommuns/': No such file or directory
kubu@kubu-System-Product-Name:~$
j’ai essayé
kubu@kubu-System-Product-Name:~$ ls -l /home/kubu/VMMultimedias/MultimediasCommuns/
ls: cannot access '/home/kubu/VMMultimedias/MultimediasCommuns/': No such file or directory
puis
kubu@kubu-System-Product-Name:~$ ls -l /home/kubu/VMMultimedias/
total 12
drwxrwxr-x 2 kubu kubu 4096 juin 18 10:37 incremental-DocumentsPartages
drwxrwxr-x 1 1002 1002 4096 juin 18 10:34 VMDocumentsPartages
drwxrwxr-x 5 kubu kubu 4096 juin 18 10:33 VMMultimediasCommuns
donc c’est
kubu@kubu-System-Product-Name:~$ ls -l /home/kubu/VMMultimedias/VMMultimediasCommuns
total 12
drwxrwxr-x 1 1002 1002 4096 juin 18 10:35 Images
drwxrwxr-x 1 1002 1002 4096 juin 18 10:35 Musiques
drwxrwxr-x 1 1002 1002 4096 juin 18 10:34 Photos
kubu@kubu-System-Product-Name:~$
mais j’ai la même chose et les mêmes accès sans l’ajout des 2 lignes au fstab et avec le démarrage automatique du script
point de vue facilité je trouve plus pratique d’avoir 2 scripts faciles à sauvegarder plutôt qu’un fstab avec des lignes qui me semble moins parlantes
Il y a juste ces déconnections intempestives que je constate et qui pourraient être résolus par le fstab.
Je vais essayé cela pour vérifier si je constate la même chose.
et ces incremental-DocumentsPartages qui sont toujours vides malgré les modifications du fichier ScriptSauvegarde ??
à partir de quel degré de modification de fichier ou de dossier cela fonctionne-t-il ???
j’ai pas essayé les scripts v3.3 et 3.4 de steph810 je compare pour l’instant avec son premier script
kubu@kubu-System-Product-Name:~$ /home/kubu/Documents/PartagesEtSauvegardes/ScriptSauvegarde.sh[2025-06-19 12:44:18] [INFO] === DÉBUT DE LA SAUVEGARDE ===
[2025-06-19 12:44:18] [INFO] Configuration:
[2025-06-19 12:44:18] [INFO] - Point de montage: /media/kubu/JEUX8T
[2025-06-19 12:44:18] [INFO] - UUID partition: 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
[2025-06-19 12:44:18] [INFO] - Date: 2025-06-19_12h44
[2025-06-19 12:44:18] [INFO] Vérification du disque externe...
[2025-06-19 12:44:18] [ERROR] Disque non reconnu ou éteint
[2025-06-19 12:44:18] [ERROR] UUID trouvé: ''
[2025-06-19 12:44:18] [ERROR] UUID attendu: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
échec
ctrlID
partition35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
[2025-06-19 12:44:30] [INFO] Attente du montage du disque...
ctrlID
partition 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
ctrlID 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
partition 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
[2025-06-19 12:44:47] [INFO] Disque monté avec succès après 3 tentatives
[2025-06-19 12:44:47] [INFO] Affichage de la boîte de dialogue de sélection...
[2025-06-19 12:45:09] [INFO] Sélections utilisateur: 8
[2025-06-19 12:45:09] [INFO] === TRAITEMENT SAUVEGARDE 1 ===
[2025-06-19 12:45:09] [INFO] Sauvegarde DocumentsCommuns sélectionnée
DocumentsCommuns
[2025-06-19 12:45:09] [INFO] Configuration sauvegarde DocumentsCommuns:
[2025-06-19 12:45:09] [INFO] - Source: Multimedias@192.168.1.128:/home/Multimedias/DocumentsPartages
[2025-06-19 12:45:09] [INFO] - Destination: /media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/
[2025-06-19 12:45:09] [INFO] - Répertoire de sauvegarde: incremental-DocumentsPartages/2025-06-19_12h44/
[2025-06-19 12:45:10] [INFO] Connexion SSH vers Multimedias@192.168.1.128: OK
[2025-06-19 12:45:10] [INFO] Début de la sauvegarde DocumentsCommuns...
[2025-06-19 12:45:11] [INFO] Sauvegarde DocumentsCommuns réussie en 1s
[2025-06-19 12:45:11] [INFO] === RÉSUMÉ FINAL ===
[2025-06-19 12:45:11] [INFO] Sauvegardes traitées: 1
[2025-06-19 12:45:11] [INFO] Réussites: 1
[2025-06-19 12:45:11] [INFO] Échecs: 0
[2025-06-19 12:45:11] [INFO] Toutes les sauvegardes ont réussi !
[2025-06-19 12:45:25] [INFO] === FIN DE LA SAUVEGARDE ===
[2025-06-19 12:45:25] [INFO] Logs disponibles dans: ~/log/backup-script
kubu@kubu-System-Product-Name:~$
Dernière modification par eric63 (Le 19/06/2025, à 13:05)
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
#172 Le 19/06/2025, à 13:25
- iznobe
Re : script d’automatisation sauvegardes
donc c’est
kubu@kubu-System-Product-Name:~$ ls -l /home/kubu/VMMultimedias/VMMultimediasCommuns total 12 drwxrwxr-x 1 1002 1002 4096 juin 18 10:35 Images drwxrwxr-x 1 1002 1002 4096 juin 18 10:35 Musiques drwxrwxr-x 1 1002 1002 4096 juin 18 10:34 Photos kubu@kubu-System-Product-Name:~$
il faudrait montrer le script que tu as utilisé .
Mais dejà on voit :
... [2025-06-19 12:45:09] [INFO] Sauvegarde DocumentsCommuns sélectionnée DocumentsCommuns [2025-06-19 12:45:09] [INFO] Configuration sauvegarde DocumentsCommuns: [2025-06-19 12:45:09] [INFO] - Source: Multimedias@192.168.1.128:/home/Multimedias/DocumentsPartages [2025-06-19 12:45:09] [INFO] - Destination: /media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/ [2025-06-19 12:45:09] [INFO] - Répertoire de sauvegarde: incremental-DocumentsPartages/2025-06-19_12h44/ [2025-06-19 12:45:10] [INFO] Connexion SSH vers Multimedias@192.168.1.128: OK ...
Maintenant que tu as tes repertoires partagés de la VM montés au demarrage sur ton ordi , il faudrait remplacer par :
8)
log_info "Sauvegarde DocumentsCommuns sélectionnée"
echo DocumentsCommuns
user=Multimedias
ip=192.168.1.128
src=/home/kubu/VMMultimedias/VMMultimediasCommuns/ # ce qui change !
# ou bien :
#src=/home/kubu/VMMultimedias/VMDocumentsPartages # je ne sais pas trop lequel des 2 tu desires sauvegarder .
dst=/media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/
bkp=incremental-DocumentsPartages/$date/
backup_name="DocumentsCommuns"
;;
Note que maintenant plutôt que de faire :
# Exécution de rsync avec capture des logs if rsync --progress -a -v --delete-after -e ssh $user@$ip:"$src" "$dst" --backup --backup-dir="$bkp" >> "$LOG_FILE" 2>> "$ERROR_FILE"; then end_time=$(date +%s) duration=$((end_time - start_time)) log_info "Sauvegarde $backup_name réussie en ${duration}s" successful_backups=$((successful_backups + 1)) else
tu pourrais simplement remplacer par :
if rsync --progress -a -v --delete-after "$src" "$dst" --backup --backup-dir="$bkp" >> "$LOG_FILE" 2>> "$ERROR_FILE"; then
...
ce qui simplifie , allège le script , et permet d' optimiser les débits en se passant d' une connexion ssh supplémentaire et inutile.
A condition bien sur de modifier $src dans chaque bloc case/esac
Pour aller plus loin , on pourrait même se passer de verifier que la connexion ssh est fonctionnelle , en ramplaçant juste par une verification que le dossier $src est bien accessible , comme je l' avais indiqué dans un message précedent .
# Exécution de rsync avec capture des logs
if [[ -d "$src" ]]; then
if rsync --progress -a -v --delete-after -e ssh $user@$ip:"$src" "$dst" --backup --backup-dir="$bkp" >> "$LOG_FILE" 2>> "$ERROR_FILE"; then
ce qui simplifie et allege encore plus .
Dernière modification par iznobe (Le 19/06/2025, à 13:57)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#173 Le 19/06/2025, à 14:09
- iznobe
Re : script d’automatisation sauvegardes
alors , a toi de reprendre , je n' ai pas modifié le case 16 , j' ai supprimé le contrôle de connexion SSH , et remplacer par un test d' accessibilité au dossier source ( celui à sauvegarder ) .
pour le case 8 , j' ai indiqué 2 possibilités , car j' ai l' impression que même toi tu t ' y perds avec tes chemins ...
J ' ai passé le code sur : https://www.shellcheck.net/
corrigé toutes les erreurs de echo que tu avais ajoutées .. + 2 3 autres bricoles , le script pas parfait , mais sans erreur au moins :
#!/bin/bash
####6b) Créer le service d'exécution de la sauvegarde avec logging
###script de base geole modifié par iznobe et Watael de remplacement (plus simple) merci à eux
###voir https://forum.kubuntu-fr.org/viewtopic.php?id=2091380&p=5
### modifier les 2 premières variables du script
# Configuration des logs
LOG_DIR="$HOME/log/backup-script"
LOG_FILE="$LOG_DIR/backup_$(date +%Y%m%d).log"
DEBUG_FILE="$LOG_DIR/debug_$(date +%Y%m%d).log"
ERROR_FILE="$LOG_DIR/error_$(date +%Y%m%d).log"
# Création du répertoire de logs s'il n'existe pas
mkdir -pv "$LOG_DIR"
# Mode debug (mettre à 1 pour activer le debug verbeux)
DEBUG_MODE=1
# Fonctions de logging
log_info() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [INFO] $message" | tee -a "$LOG_FILE"
}
log_error() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [ERROR] $message" | tee -a "$LOG_FILE" | tee -a "$ERROR_FILE"
}
log_debug() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
if [ "$DEBUG_MODE" -eq 1 ]; then
echo "[$timestamp] [DEBUG] $message" | tee -a "$DEBUG_FILE"
fi
}
log_warning() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [WARNING] $message" | tee -a "$LOG_FILE"
}
# Fonction pour nettoyer les anciens logs (garde les 30 derniers jours)
cleanup_old_logs() {
log_debug "Nettoyage des anciens logs (> 30 jours)"
find "$LOG_DIR" -name "*.log" -type f -mtime +30 -delete 2>/dev/null
}
# Gestion des erreurs et interruptions
trap 'log_error "Script interrompu par signal"; exit 130' INT TERM
# Début du script
log_info "=== DÉBUT DE LA SAUVEGARDE ==="
log_debug "Répertoire des logs: $LOG_DIR"
log_debug "Mode debug: $DEBUG_MODE"
# Nettoyage des anciens logs
cleanup_old_logs
###Paramètres
MountPoint="/media/$USER/JEUX8T"
PartitionUID="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa"
date=$(date +%F_%Hh%M)
log_info "Configuration:"
log_info " - Point de montage: $MountPoint"
log_info " - UUID partition: $PartitionUID"
log_info " - Date: $date"
log_debug "Utilisateur: $USER"
###controle validité disque solution#125 Watael
log_info "Vérification du disque externe..."
ctrlID=$(findmnt -n --output UUID "$MountPoint") ### controle si le disque est monté
log_debug "UUID trouvé: '$ctrlID'"
log_debug "UUID attendu: '$PartitionUID'"
#controle validité disque ancienne version
if [[ "$ctrlID" != "$PartitionUID" ]]
then
log_error "Disque non reconnu ou éteint"
log_error "UUID trouvé: '$ctrlID'"
log_error "UUID attendu: '$PartitionUID'"
echo échec
echo "ctrlID = $ctrlID"
echo "partition = $PartitionUID"
kdialog --error "Aucun disque reconnu ou disque éteint \n ALLUMER LE DISQUE EXTERNE \n AVANT de sélectionner «OK»"
log_info "Attente du montage du disque..."
sleep 5
# conditions de détection disque non monté (ctrlID vide)
attempt=1
while [[ "$ctrlID" != "$PartitionUID" ]]
do
log_debug "Tentative $attempt - Vérification du montage..."
sleep 2
#si le montage est reconnu mettre ctrlID à la bonne valeur
ctrlID=$(findmnt -n --output UUID "$MountPoint")
sleep 2
log_debug "Ligne $LINENO"
echo "ctrlID = $ctrlID"
echo "partition = $PartitionUID"
log_debug "UUID vérifié: '$ctrlID'"
sleep 2
((attempt++))
if [ $attempt -gt 60 ]; then
log_error "Timeout: Disque non monté après 60 tentatives"
kdialog --error "Timeout: Impossible de détecter le disque"
exit 1
fi
done
log_info "Disque monté avec succès après $attempt tentatives"
else
log_info "Disque correctement monté"
echo réussite
echo "ctrlID = $ctrlID"
echo "partition = $PartitionUID"
kdialog --error " le disque est monté \n la sauvegarde peut être faite maintenant "
fi
### choix des sauvegardes
log_info "Affichage de la boîte de dialogue de sélection..."
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)
if [ $? -ne 0 ]; then
log_warning "Utilisateur a annulé la sélection"
exit 0
fi
log_info "Sélections utilisateur: $resultats"
backup_count=0
successful_backups=0
failed_backups=0
for i in $resultats
###choix façon Watael
do
backup_count=$((backup_count + 1))
log_info "=== TRAITEMENT SAUVEGARDE $backup_count ==="
log_debug "Valeur sélectionnée: $i"
case $i in
1)
log_info "Sauvegarde Photos sélectionnée"
echo Photos
src=/home/kubu/VMMultimedias/VMMultimediasCommuns/Photos
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Photos/$date/
backup_name="Photos"
;;
2)
log_info "Sauvegarde Images sélectionnée"
echo Images
src=/home/kubu/VMMultimedias/VMMultimediasCommuns/Images
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Images/$date/
backup_name="Images"
;;
4)
log_info "Sauvegarde Musiques sélectionnée"
echo Musiques
src=/home/kubu/VMMultimedias/VMMultimediasCommuns/Musiques
dst=/media/kubu/JEUX8T/SAUVEGARDES/
bkp=incremental-Musiques/$date/
backup_name="Musiques"
;;
8)
log_info "Sauvegarde DocumentsCommuns sélectionnée"
echo DocumentsCommuns
src=/home/kubu/VMMultimedias/VMMultimediasCommuns/ # ce qui change !
# ou bien :
#src=/home/kubu/VMMultimedias/VMDocumentsPartages # je ne sais pas trop lequel des 2 tu desires sauvegarder .
dst=/media/kubu/JEUX8T/SAUVEGARDES/SauvegardesDocumentsCommuns/
bkp=incremental-DocumentsPartages/$date/
backup_name="DocumentsCommuns"
;;
16)
###################################################
# je n' ai pas modifié cette section ,car je n' ai pas toutes les infos : quoi faire precisément , et les chemins montés sur ton ordi .
log_info "Sauvegarde DocumentsEricFanou sélectionnée"
echo DocumentsEricFanou
# Première partie - sauvegarde locale
log_debug "Sauvegarde locale Documents kubu"
if rsync --progress -a -v --delete-after /home/kubu/Documents/ /home/kubu/VMSauvegardesDocuments/ --backup --backup-dir="incremental-DocumentsEric/$date/" >> "$LOG_FILE" 2>> "$ERROR_FILE"; then
log_info "Sauvegarde locale Documents kubu réussie"
else
log_error "Échec sauvegarde locale Documents kubu"
fi
src=/home/fanou/Documents
dst=/home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/
bkp=incremental-DocumentsFanou/$date/
backup_name="DocumentsEricFanou"
;;
*)
log_warning "Valeur inconnue ignorée: $i"
continue
;;
esac
log_info "Configuration sauvegarde $backup_name:"
log_info " - Source: $user@$ip:$src"
log_info " - Destination: $dst"
log_info " - Répertoire de sauvegarde: $bkp"
# Vérification de l'existence du répertoire de destination
if [ ! -d "$dst" ]; then
log_warning "Répertoire destination n'existe pas: $dst"
log_info "Tentative de création..."
if mkdir -p "$dst" 2>> "$ERROR_FILE"; then
log_info "Répertoire créé avec succès: $dst"
else
log_error "Impossible de créer le répertoire: $dst"
failed_backups=$((failed_backups + 1))
continue
fi
fi
kdialog --passivepopup "Sauvegarde $backup_name en cours..." 10 &
log_info "Début de la sauvegarde $backup_name..."
start_time=$(date +%s)
# Exécution de rsync avec capture des logs
if [[ -d "$src" ]]; then
if rsync --progress -a -v --delete-after "$src" "$dst" --backup --backup-dir="$bkp" >> "$LOG_FILE" 2>> "$ERROR_FILE"; then
end_time=$(date +%s)
duration=$((end_time - start_time))
log_info "Sauvegarde $backup_name réussie en ${duration}s"
successful_backups=$((successful_backups + 1))
else
end_time=$(date +%s)
duration=$((end_time - start_time))
log_error "Échec sauvegarde $backup_name après ${duration}s"
failed_backups=$((failed_backups + 1))
fi
else
log_warning "Répertoire destination n'existe pas: $src"
log_error "Impossible d ' acceder au répertoire: $src"
failed_backups=$((failed_backups + 1))
fi
done
# Résumé final
log_info "=== RÉSUMÉ FINAL ==="
log_info "Sauvegardes traitées: $backup_count"
log_info "Réussites: $successful_backups"
log_info "Échecs: $failed_backups"
if [ $failed_backups -eq 0 ]; then
log_info "Toutes les sauvegardes ont réussi !"
kdialog --msgbox "FIN des sauvegardes $resultats - TOUTES RÉUSSIES !"
else
log_warning "Certaines sauvegardes ont échoué. Consultez les logs."
kdialog --msgbox "FIN des sauvegardes $resultats - $failed_backups échec(s) détecté(s)\nConsultez les logs: $LOG_FILE"
fi
log_info "=== FIN DE LA SAUVEGARDE ==="
log_info "Logs disponibles dans: $LOG_DIR"
il reste donc a déterminer le bon chemin du dossier source à sauvegarder pour le cas 8.
Pour le cas 16 :
modifier la commande rsync , modifier les 2 chemins des dossiers sources au minimum .
Verifier que je n ' ai pas fait d' erreur dans les nouveaux chemins src ( cas 1 2 et 4 ) et que les sauvegardes pour ces cas là fonctionnent .
Dernière modification par iznobe (Le 19/06/2025, à 14:30)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#174 Le 19/06/2025, à 19:35
- eric63
Re : script d’automatisation sauvegardes
ok j’ai comparé le ScriptSauvegarde avec les derniers scripts v3.3 et v3.4 et modifié ce dernier en fonction des 2 autres
j’ai recherché les ips et créé 2 ipVM et ipPortable pour remplacer les ip adéquats
j’ai vérifié les sources et destinations des case/esac
et fait mes essais uniquement sur le case 8) DocumentsPartages pour l’instant
j’ai pas encore tenu compte des #172 et #173
ce sera la prochaine étape
le script version V3.4 modifié
#!/bin/bash
####6b) Créer le service d'exécution de la sauvegarde avec logging
###script de base geole largement modifié par iznobe et Watael et steph810 pour la partie debug de remplacement (plus simple) merci à eux
###voir https://forum.kubuntu-fr.org/viewtopic.php?id=2091380&p=5
### modifier les 2 premières variables des #paramètres (ligne 72) du script suivant vos emplacements disque et UUID
###script utilisé v3.4 modifié /v3.3/v146/
# Configuration des logs
LOG_DIR="~/log/backup-script"
LOG_FILE="$LOG_DIR/backup_$(date +%Y%m%d).log"
DEBUG_FILE="$LOG_DIR/debug_$(date +%Y%m%d).log"
ERROR_FILE="$LOG_DIR/error_$(date +%Y%m%d).log"
# Création du répertoire de logs s'il n'existe pas
mkdir -pv "$LOG_DIR"
# Mode debug (mettre à 1 pour activer le debug verbeux)
DEBUG_MODE=1
# Fonctions de logging
log_info() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [INFO] $message" | tee -a "$LOG_FILE"
}
log_error() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [ERROR] $message" | tee -a "$LOG_FILE" | tee -a "$ERROR_FILE"
}
log_debug() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
if [ "$DEBUG_MODE" -eq 1 ]; then
echo "[$timestamp] [DEBUG] $message" | tee -a "$DEBUG_FILE"
fi
}
log_warning() {
local message="$1"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$timestamp] [WARNING] $message" | tee -a "$LOG_FILE"
}
# Fonction pour nettoyer les anciens logs (garde les 30 derniers jours)
cleanup_old_logs() {
log_debug "Nettoyage des anciens logs (> 30 jours)"
find "$LOG_DIR" -name "*.log" -type f -mtime +30 -delete 2>/dev/null
}
# Gestion des erreurs et interruptions
trap 'log_error "Script interrompu par signal"; exit 130' INT TERM
# Début du script
log_info "=== DÉBUT DE LA SAUVEGARDE ==="
log_debug "Répertoire des logs: $LOG_DIR"
log_debug "Mode debug: $DEBUG_MODE"
# Nettoyage des anciens logs
cleanup_old_logs
###Paramètres
MountPoint="/media/$USER/JEUX8T"
PartitionUID="35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa"
date=$(date +%F_%Hh%M)
ipVM="192.168.1.128"
ipPortable="192.168.1.60"
log_info "Configuration:"
log_info " - Point de montage: $MountPoint"
log_info " - UUID partition: $PartitionUID"
log_info " - Date: $date"
log_debug "Utilisateur: $USER"
# Fonction pour obtenir l'UUID du disque monté
get_disk_uuid() {
local uuid=$(findmnt -n --output UUID "$MountPoint" 2>/dev/null)
echo "$uuid"
}
###controle validité disque solution#125 Watael
log_info "Vérification du disque externe..."
# Mise à jour initiale de ctrlID - CORRECTION: une seule fois
ctrlID=$(get_disk_uuid)
log_debug "UUID trouvé: '$ctrlID'"
log_debug "UUID attendu: '$PartitionUID'"
if [[ "$ctrlID" != "$PartitionUID" ]]
then
log_error "Disque non reconnu ou éteint"
log_error "UUID trouvé: '$ctrlID'"
log_error "UUID attendu: '$PartitionUID'"
echo "échec"
echo "ctrlID: '$ctrlID'"
echo "partition: '$PartitionUID'"
kdialog --error "Aucun disque reconnu ou disque éteint \n ALLUMER LE DISQUE EXTERNE \n AVANT de sélectionner «OK»"
log_info "Attente du montage du disque..."
sleep 5
# Boucle de détection du disque
attempt=1
while [[ "$ctrlID" != "$PartitionUID" ]]
do
log_debug "Tentative $attempt - Vérification du montage..."
sleep 2
# Mise à jour de ctrlID avec la fonction
ctrlID=$(get_disk_uuid)
log_debug "Ligne $LINENO"
echo "ctrlID: '$ctrlID'"
echo "partition: '$PartitionUID'"
log_debug "UUID vérifié: '$ctrlID'"
sleep 2
((attempt++))
if [ $attempt -gt 60 ]; then
log_error "Timeout: Disque non monté après 60 tentatives"
kdialog --error "Timeout: Impossible de détecter le disque"
exit 1
fi
done
log_info "Disque monté avec succès après $((attempt-1)) tentatives"
echo "réussite"
echo "ctrlID: '$ctrlID'"
echo "partition: '$PartitionUID'"
kdialog --info "Le disque est monté \n La sauvegarde peut être faite maintenant"
else
log_info "Disque correctement monté"
echo "réussite"
echo "ctrlID: '$ctrlID'"
echo "partition: '$PartitionUID'"
kdialog --info "Le disque est monté \n La sauvegarde peut être faite maintenant"
fi
### choix des sauvegardes
log_info "Affichage de la boîte de dialogue de sélection..."
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)
if [ $? -ne 0 ]; then
log_warning "Utilisateur a annulé la sélection"
exit 0
fi
log_info "Sélections utilisateur: $resultats"
backup_count=0
successful_backups=0
failed_backups=0
for i in $resultats
###choix façon Watael
do
backup_count=$((backup_count + 1))
log_info "=== TRAITEMENT SAUVEGARDE $backup_count ==="
log_debug "Valeur sélectionnée: $i"
case $i in
1)
log_info "Sauvegarde Photos sélectionnée"
echo Photos
user=Multimedias
ip=$ipVM
src=/home/Multimedias/MultimediasCommuns/Photos
dst=$MountPoint/SAUVEGARDES/
bkp=incremental-Photos/$date/
backup_name="Photos"
;;
2)
log_info "Sauvegarde Images sélectionnée"
echo Images
user=Multimedias
ip=$ipVM
src=/home/Multimedias/MultimediasCommuns/Images
dst=$MountPoint/SAUVEGARDES/
bkp=incremental-Images/$date/
backup_name="Images"
;;
4)
log_info "Sauvegarde Musiques sélectionnée"
echo Musiques
user=Multimedias
ip=$ipVM
src=/home/Multimedias/MultimediasCommuns/Musiques
dst=$MountPoint/SAUVEGARDES/
bkp=incremental-Musiques/$date/
backup_name="Musiques"
;;
8)
log_info "Sauvegarde DocumentsCommuns sélectionnée"
echo DocumentsCommuns
user=Multimedias
ip=$ipVM
src=/home/Multimedias/DocumentsPartages
dst=$MountPoint/SAUVEGARDES/SauvegardesDocumentsCommuns/
bkp=incremental-DocumentsPartages/$date/
backup_name="DocumentsCommuns"
;;
16)
log_info "Sauvegarde DocumentsEricFanou sélectionnée"
echo DocumentsEricFanou
# Première partie - sauvegarde locale
log_debug "Sauvegarde locale Documents kubu"
if rsync --progress -a -v --delete-after /home/kubu/Documents/ /home/kubu/VMSauvegardesDocuments/ --backup --backup-dir="incremental-DocumentsEric/$date/" >> "$LOG_FILE" 2>> "$ERROR_FILE"; then
log_info "Sauvegarde locale Documents kubu réussie"
else
log_error "Échec sauvegarde locale Documents kubu"
fi
user=fanou
ip=$ipPortable
src=/home/fanou/Documents
dst=/home/kubu/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/
bkp=incremental-DocumentsFanou/$date/
backup_name="DocumentsEricFanou"
;;
*)
log_warning "Valeur inconnue ignorée: $i"
backup_count=$((backup_count - 1)) # Correction: décrémenter le compteur
continue
;;
esac
log_info "Configuration sauvegarde $backup_name:"
log_info " - Source: $user@$ip:$src"
log_info " - Destination: $dst"
log_info " - Répertoire de sauvegarde: $bkp"
# Test SSH avant rsync - CORRECTION: logique simplifiée
log_debug "Test de connexion SSH vers $user@$ip..."
if timeout 10 ssh -o ConnectTimeout=5 -o BatchMode=yes "$user@$ip" exit 2>/dev/null; then
log_info "Connexion SSH vers $user@$ip: OK"
else
log_error "Connexion SSH vers $user@$ip: ÉCHEC"
failed_backups=$((failed_backups + 1))
continue
fi
# Vérification de l'existence du répertoire de destination
if [ ! -d "$dst" ]; then
log_warning "Répertoire destination n'existe pas: $dst"
log_info "Tentative de création..."
if mkdir -p "$dst" 2>> "$ERROR_FILE"; then
log_info "Répertoire créé avec succès: $dst"
else
log_error "Impossible de créer le répertoire: $dst"
failed_backups=$((failed_backups + 1))
continue
fi
fi
# Affichage popup
kdialog --passivepopup "Sauvegarde $backup_name en cours..." 10 &
popup_pid=$!
log_info "Début de la sauvegarde $backup_name..."
start_time=$(date +%s)
# Exécution de rsync avec capture des logs - CORRECTION: guillemets ajoutés
if rsync --progress -a -v --delete-after -e ssh "$user@$ip:$src" "$dst" --backup --backup-dir="$bkp" >> "$LOG_FILE" 2>> "$ERROR_FILE"; then
end_time=$(date +%s)
duration=$((end_time - start_time))
log_info "Sauvegarde $backup_name réussie en ${duration}s"
successful_backups=$((successful_backups + 1))
else
end_time=$(date +%s)
duration=$((end_time - start_time))
log_error "Échec sauvegarde $backup_name après ${duration}s"
failed_backups=$((failed_backups + 1))
fi
# Fermer le popup s'il existe encore
if [ -n "$popup_pid" ]; then
kill "$popup_pid" 2>/dev/null
fi
done
# Résumé final
log_info "=== RÉSUMÉ FINAL ==="
log_info "Sauvegardes traitées: $backup_count"
log_info "Réussites: $successful_backups"
log_info "Échecs: $failed_backups"
if [ $failed_backups -eq 0 ]; then
log_info "Toutes les sauvegardes ont réussi !"
kdialog --msgbox "FIN des sauvegardes $resultats - TOUTES RÉUSSIES !"
else
log_warning "Certaines sauvegardes ont échoué. Consultez les logs."
kdialog --msgbox "FIN des sauvegardes $resultats - $failed_backups échec(s) détecté(s)\nConsultez les logs: $LOG_FILE"
fi
log_info "=== FIN DE LA SAUVEGARDE ==="
log_info "Logs disponibles dans: $LOG_DIR"
Dernière modification par eric63 (Le 19/06/2025, à 19:38)
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
#175 Le 19/06/2025, à 19:43
- iznobe
Re : script d’automatisation sauvegardes
les IP ne servent en fait plus à rien puisque c' est censé être monté en local sur ton ordi maintenant . un contrôle de l' existence du dossier source est suffisant pour confirmer qu ' il est monté . sinon , et bien la source n' existe pas et le script renvoie une erreur .
Pas regardé les scripts V3.3 et 3.4 , mais je part du principe que moins y a de choses dans un script et mieux c' est . et aussi qu ' il reste simple , surtout plus tard pour modification après 2 3 ans d' abstinence ...
il vaut mieux décrire avec des commentaires utiles le déroulement du script . toujours très utile lorsque tu y remettras le nez dedans .
Dernière modification par iznobe (Le 19/06/2025, à 19:46)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne