#201 Le 20/06/2025, à 20:49
- Watael
Re : script d’automatisation sauvegardes
# Fonctions de logging
log() {
local message=$1 level=$2 logFile=$3
printf '[%(%Y-%m-%d %H:%M:%S)T] [%s] %s\n' -1 "$level" "$message"
}
log_info() {
log "$1" INFO "$LOG_FILE"
}
log_warning() {
log "$1" WARNING "$LOG_FILE"
}
log_error() {
log "$1" ERROR "$ERROR_FILE"
}
log_debug() {
if (( DEBUG_MODE ))
then
log "$1" DEBUG "$DEBUG_FILE"
fi
}
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#202 Le 20/06/2025, à 21:03
- eric63
Re : script d’automatisation sauvegardes
, les clé ssh sont elle encore valide ?
oui y‘a pas de raisons qu’elle ne le soit pas
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
#203 Le 20/06/2025, à 21:33
- eric63
Re : script d’automatisation sauvegardes
il doit y avoir un problème sur les logs de Watael
je n’ai plus de retour sur les 3 logs depuis 19h
ok c’est bon pas cherché les bon logs nommée par jour désolé pour la fausse info
Dernière modification par eric63 (Le 20/06/2025, à 21:55)
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
#204 Le 20/06/2025, à 21:36
- steph810
Re : script d’automatisation sauvegardes
Bonsoir,
ajout variable pour les ip ca trotiner depuis un moment.
tout en haut
Rajout du choix debug activer ou non, poura etre modifier, juste a commenter les lignes 24 à 28, et decommenter la 29 pour rollback
L. 61-85 ajout 2 fonction de test ssh et ping
L.238 le test avnt rsync
#!/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/
# Variables IP et user en haut
ipVM="192.168.1.128"
ipPortable="192.168.1.60"
# Configuration des logs
LOG_DIR="$HOME/log/backup-script"
LOG_FILE="$LOG_DIR/backup_$(date +%Y%m%d_%H%M).log"
DEBUG_FILE="$LOG_DIR/debug_$(date +%Y%m%d_%H%M).log"
ERROR_FILE="$LOG_DIR/error_$(date +%Y%m%d_%H%M).log"
# Création du répertoire de logs s'il n'existe pas
mkdir -pv "$LOG_DIR"
# Choix du mode debug via kdialog
if kdialog --yesno "Voulez-vous activer le mode DEBUG (log verbeux) ?"; then
DEBUG_MODE=1
else
DEBUG_MODE=0
fi
#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
# Fonction test ping (pour vérifier si machine est accessible avant ssh)
test_ping() {
local ip="$1"
if ping -c 2 -W 2 "$ip" >/dev/null 2>&1; then
log_debug "Ping vers $ip réussi"
return 0
else
log_warning "Ping vers $ip échoué"
return 1
fi
}
# Fonction test ssh avant rsync avec timeout augmenté
test_ssh() {
local user="$1"
local ip="$2"
log_debug "Test de connexion SSH vers $user@$ip..."
if timeout 15 ssh -o ConnectTimeout=10 -o BatchMode=yes "$user@$ip" exit 2>/dev/null; then
log_info "Connexion SSH vers $user@$ip: OK"
return 0
else
log_error "Connexion SSH vers $user@$ip: ÉCHEC"
return 1
fi
}
# 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"
# 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/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsEric/ --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/VMMultimedias/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 ping avant test ssh
if ! test_ping "$ip"; then
log_error "Ping vers $ip a échoué, sauvegarde annulée"
failed_backups=$((failed_backups + 1))
continue
fi
# Test SSH avant rsync - CORRECTION: logique simplifiée avec timeout augmenté
if ! test_ssh "$user" "$ip"; then
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..." 30 &
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 de(s) sauvegarde(s) $resultats - TOUTES RÉUSSIES !"
else
log_warning "Certaines sauvegardes ont échoués. Consultez les logs."
kdialog --msgbox "FIN de(s) sauvegarde(s) $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 steph810 (Le 20/06/2025, à 21:41)
Hors ligne
#205 Le 20/06/2025, à 21:55
- Watael
Re : script d’automatisation sauvegardes
il y a peut-être des variables non définies ?
j'allais faire un EDIT :
#!/bin/bash
dateFmt='%Y%m%d_%H:%M'
logDir=~/log/backup-script #il ne faut pas mettre le tilde et le slash qui le suit entre guillemets
log()
{
local level=${1##*_}
local message=$2
[[ $level == ?(info|warning) ]] && local level='backup'
local logFile=${level,,}
printf "[%($dateFmt)T] [%s] %s" -1 $level "$message" | tee -a "$logDir/$logFile.log"
}
log_info()
{
log $FUNCNAME "$1"
}
log_warning()
{
log $FUNCNAME "$1"
}
log_error()
{
log $FUNCNAME "$1"
}
log_debug()
{
log $FUNCNAME "$1"
}
log_info "mon message d'information."
ce qui me fait penser qu'on pourait aussi bien faire
log info "mon message d'information"
en simplifiant log(), et en supprimant les autres fonctions
#!/bin/bash
dateFmt='%Y%m%d_%H:%M'
logDir=~/log/backup-script
log()
{
local level=$1 message=$2
[[ $level == ?(info|warning) ]] && local level='backup'
local logFile=$level
printf "[%($dateFmt)T] [%s] %s" -1 $level "$message" | tee -a "$logDir/$logFile.log"
}
log info "mon message d'information"
log warning "mon message d'alerte"
log error "mon message d'erreur"
c'est plus pour te montrer comment faire, que du code réellement utilisable tel quel.
il y a probablement des adaptations à appliquer...
Dernière modification par Watael (Le 20/06/2025, à 23:00)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#206 Le 20/06/2025, à 22:06
- iznobe
Re : script d’automatisation sauvegardes
tu as mis des passprhase a tes clés ? si oui , c' est pour cela que ça ne fonctionne pas dans le fstab .
je n' ai pas trouvé de moyen pour monter automatiquement dans le cas ou une passprhase est demandée .
d' apres ce que j' ai compris , pour etre plus precis , en fait c' est carrément impossible .
pourquoi avoir choisi ssh et pas NFS par exemple ?
avec NFS , il y a juste a configurer un export ( fichier /etc/exports ) , une ligne dans le fstab , et ca roule .
On est d' accord que tout ça , restera en local ?
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#207 Le 20/06/2025, à 22:23
- steph810
Re : script d’automatisation sauvegardes
edit:
j'ai aussi augmenter le timeout et ConnectTimeout si la connection est lent ....
c'est juste version de test. au dessus, ont peut rajouter un test de validation de cle rsa si il veut
Hors ligne
#208 Le 20/06/2025, à 22:25
- eric63
Re : script d’automatisation sauvegardes
On est d' accord que tout ça , restera en local ?
ben c’est pas si sûr que ça reste local
je comptais à terme mon fils m’a proposé d’utiliser son serveur mais je ne connais pas son serveur et ça traine dans les bacs depuis pas mal de temps
et c’est lui qui décidera quand.
tu as mis des passprhase a tes clés ? si oui , c' est pour cela que ça ne fonctionne pas dans le fstab .
j’ai pas de pass phrase pour l’accès à la Vm juste une clé ssh ed-25519
la clé se suffit à elle même normalement j’avais vu ça avec 20_100 quand on à créé la VM et les utilisateurs accédant à la VM et j’avais 3 clé pour les 3 utilisateurs
2 sessions sur le pc et une session portable
avec le nouveau script version240
kubu@kubu-System-Product-Name:~$ /home/kubu/ScriptsVMImportants/ScriptSauvegardes.sh
[2025-06-20 22:12:01] [INFO] === DÉBUT DE LA SAUVEGARDE ===
[2025-06-20 22:12:01] [DEBUG] Répertoire des logs: /home/kubu/log/backup-script
[2025-06-20 22:12:01] [DEBUG] Mode debug: 1
[2025-06-20 22:12:01] [DEBUG] Nettoyage des anciens logs (> 30 jours)
[2025-06-20 22:12:01] [INFO] Configuration:
[2025-06-20 22:12:01] [INFO] - Point de montage: /media/kubu/JEUX8T
[2025-06-20 22:12:01] [INFO] - UUID partition: 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
[2025-06-20 22:12:01] [INFO] - Date: 2025-06-20_22h12
[2025-06-20 22:12:01] [DEBUG] Utilisateur: kubu
[2025-06-20 22:12:01] [INFO] Vérification du disque externe...
[2025-06-20 22:12:01] [DEBUG] UUID trouvé: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-20 22:12:01] [DEBUG] UUID attendu: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-20 22:12:01] [INFO] Disque correctement monté
réussite
ctrlID: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
partition: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
kdialog: Option inconnue "info".
QThreadStorage: entry 4 destroyed before end of thread 0x632843d28f20
QThreadStorage: entry 3 destroyed before end of thread 0x632843d28f20
[2025-06-20 22:12:01] [INFO] Affichage de la boîte de dialogue de sélection...
[2025-06-20 22:12:15] [INFO] Sélections utilisateur: 16
[2025-06-20 22:12:15] [INFO] === TRAITEMENT SAUVEGARDE 1 ===
[2025-06-20 22:12:15] [DEBUG] Valeur sélectionnée: 16
[2025-06-20 22:12:15] [INFO] Sauvegarde DocumentsEricFanou sélectionnée
DocumentsEricFanou
[2025-06-20 22:12:15] [DEBUG] Sauvegarde locale Documents kubu
[2025-06-20 22:12:15] [INFO] Sauvegarde locale Documents kubu réussie
[2025-06-20 22:12:15] [INFO] Configuration sauvegarde DocumentsEricFanou:
[2025-06-20 22:12:15] [INFO] - Source: fanou@192.168.1.60:/home/fanou/Documents
[2025-06-20 22:12:15] [INFO] - Destination: /home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/
[2025-06-20 22:12:15] [INFO] - Répertoire de sauvegarde: incremental-DocumentsFanou/2025-06-20_22h12/
[2025-06-20 22:12:17] [DEBUG] Ping vers 192.168.1.60 réussi
[2025-06-20 22:12:17] [DEBUG] Test de connexion SSH vers fanou@192.168.1.60...
[2025-06-20 22:12:17] [ERROR] Connexion SSH vers fanou@192.168.1.60: ÉCHEC
[2025-06-20 22:12:17] [INFO] === RÉSUMÉ FINAL ===
[2025-06-20 22:12:17] [INFO] Sauvegardes traitées: 1
[2025-06-20 22:12:17] [INFO] Réussites: 0
[2025-06-20 22:12:17] [INFO] Échecs: 1
[2025-06-20 22:12:17] [WARNING] Certaines sauvegardes ont échoués. Consultez les logs.
[2025-06-20 22:12:30] [INFO] === FIN DE LA SAUVEGARDE ===
[2025-06-20 22:12:30] [INFO] Logs disponibles dans: /home/kubu/log/backup-script
kubu@kubu-System-Product-Name:~$
Donc le plus simple au final c’est que fanou ait un script pour sauvegarder ses documents depuis sa session vers la VM.
Dernière modification par eric63 (Le 20/06/2025, à 22:59)
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
#209 Le 20/06/2025, à 23:06
- steph810
Re : script d’automatisation sauvegardes
re,
L.93 Fonction validation clé SSH
L.318 Le test
#!/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/
# Variables IP et user en haut
ipVM="192.168.1.128"
ipPortable="192.168.1.60"
# Configuration des logs
LOG_DIR="$HOME/log/backup-script"
LOG_FILE="$LOG_DIR/backup_$(date +%Y%m%d_%H%M).log"
DEBUG_FILE="$LOG_DIR/debug_$(date +%Y%m%d_%H%M).log"
ERROR_FILE="$LOG_DIR/error_$(date +%Y%m%d_%H%M).log"
# Création du répertoire de logs s'il n'existe pas
mkdir -pv "$LOG_DIR"
# Choix du mode debug via kdialog
if kdialog --yesno "Voulez-vous activer le mode DEBUG (log verbeux) ?"; then
DEBUG_MODE=1
else
DEBUG_MODE=0
fi
#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
# Fonction test ping (pour vérifier si machine est accessible avant ssh)
test_ping() {
local ip="$1"
if ping -c 2 -W 2 "$ip" >/dev/null 2>&1; then
log_debug "Ping vers $ip réussi"
return 0
else
log_warning "Ping vers $ip échoué"
return 1
fi
}
# Fonction test ssh avant rsync avec timeout augmenté
test_ssh() {
local user="$1"
local ip="$2"
log_debug "Test de connexion SSH vers $user@$ip..."
if timeout 15 ssh -o ConnectTimeout=10 -o BatchMode=yes "$user@$ip" exit 2>/dev/null; then
log_info "Connexion SSH vers $user@$ip: OK"
return 0
else
log_error "Connexion SSH vers $user@$ip: ÉCHEC"
return 1
fi
}
# Fonction test validation clé SSH
test_ssh_key() {
local user="$1"
local ip="$2"
log_debug "Test de validation de la clé SSH pour $user@$ip..."
# Vérifier d'abord si une clé SSH existe localement
local ssh_key_found=0
for key_type in rsa ed25519 ecdsa dsa; do
if [ -f "$HOME/.ssh/id_$key_type" ] || [ -f "$HOME/.ssh/id_$key_type.pub" ]; then
log_debug "Clé SSH $key_type trouvée localement"
ssh_key_found=1
break
fi
done
if [ $ssh_key_found -eq 0 ]; then
log_warning "Aucune clé SSH trouvée dans $HOME/.ssh/"
return 1
fi
# Test de connexion SSH avec clé (sans mot de passe)
log_debug "Test de connexion avec clé SSH vers $user@$ip..."
if timeout 10 ssh -o ConnectTimeout=8 -o BatchMode=yes -o PasswordAuthentication=no -o PubkeyAuthentication=yes "$user@$ip" exit 2>/dev/null; then
log_info "Authentification par clé SSH vers $user@$ip: OK"
return 0
else
log_warning "Authentification par clé SSH vers $user@$ip: ÉCHEC"
log_warning "La clé SSH n'est peut-être pas configurée ou acceptée sur le serveur distant"
return 1
fi
}
# 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"
# 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/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsEric/ --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/VMMultimedias/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 ping avant test ssh
if ! test_ping "$ip"; then
log_error "Ping vers $ip a échoué, sauvegarde annulée"
failed_backups=$((failed_backups + 1))
continue
fi
# Test SSH avant rsync - CORRECTION: logique simplifiée avec timeout augmenté
if ! test_ssh "$user" "$ip"; then
failed_backups=$((failed_backups + 1))
continue
fi
# Test de validation de la clé SSH
if ! test_ssh_key "$user" "$ip"; then
log_warning "Clé SSH non configurée pour $user@$ip, la connexion utilisera probablement un mot de passe"
# Note: Ceci est juste un avertissement, la sauvegarde peut continuer
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..." 30 &
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 de(s) sauvegarde(s) $resultats - TOUTES RÉUSSIES !"
else
log_warning "Certaines sauvegardes ont échoués. Consultez les logs."
kdialog --msgbox "FIN de(s) sauvegarde(s) $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"
S'il le faut j'ai un script de test de simulation de clé ssh. Toujours utile j'avais eu des problème par le passé aussi.
Dernière modification par steph810 (Le 20/06/2025, à 23:09)
Hors ligne
#210 Hier à 07:53
- O_20_100_O
Re : script d’automatisation sauvegardes
Connexion SSH vers fanou@192.168.1.60: ÉCHEC
Donc le plus simple au final c’est que fanou ait un script pour sauvegarder ses documents depuis sa session vers la VM.
Ce n'est pas l'échec de la connexion SSH qui doit remettre en cause la procédure. C'est facile à arranger.
Mais c'est plus rationnel de sauvegarder une machine au fonctionnement épisodique à partir d'elle même qu'à partir d'une machine tierce. Cela supprime l'aléa de la période de fonctionnement du portable. Il pourrait arriver que chaque fois que kubu tente de faire la sauvegarde de fanou, son laptop ne soit jamais en marche.
D'autre part, pourquoi faire la sauvegarde des "documents perso" vers le disque 8To USB, alors que tu disposes d'assez de place sur la VM ?
La vie, pour moi elle est magnifique, pourquoi tu te la compliques ? (Zanini)
Hors ligne
#211 Hier à 08:05
- iznobe
Re : script d’automatisation sauvegardes
le fstab modifié
kubu@kubu-System-Product-Name:~$ grep sshfs /etc/fstab Multimedias@192.168.1.128:/home/Multimedias /home/kubu/VMMultimedias fuse.sshfs port=22,user,noauto,noatime,x-systemd.mount-timeout=3,_netdev fanou@192.168.1.60:/home/fanou/Documents /home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou fuse.sshfs port=22,user,noatime,x-systemd.mount-timeout=3,_netdev kubu@kubu-System-Product-Name:~$
pour que cela démarre automatiquement avec clés et sans passphrase , il te faut ajouter ces options aux lignes : "delay_connect,idmap=user,transform_symlinks,identityfile=/home/kubu/.ssh/id_ed25519,default_permissions,uid=1000,gid=1000,allow_other" .
selon les permissions , il se peut que root ( c est lui qui lis le fstab ) , ne puisse pas accéder a la clé ( identityfile=/home/kubu/.ssh/id_ed25519 ) .
La manip :
+ tu ajoutes le " tas " d ' options à tes 2 lignes SSHFS du fstab .
+ tu montres que pas d' erreur avec :
sudo mount -a
+ tu redémarres l ' ordi
+ tu verifies que c' est monté en donnant le retour de :
grep sshfs /etc/mtab
si cela n' est pas monté automatiquement
ce que j' ai trouvé de plus simple c' est de simplement copié le dossier utilisateur " .ssh " dans le root avec la maniere suivante ( ce qui permet de ne pas avoir besoin de modifier les permissions ) .
pour ce faire :
sudo -i
cp -r /home/kubu/.ssh/ /root
exit
Montage et verif :
sudo mount -a
grep sshfs /etc/mtab
Dernière modification par iznobe (Hier à 08:14)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#212 Hier à 08:22
- iznobe
Re : script d’automatisation sauvegardes
D'autre part, pourquoi faire la sauvegarde des "documents perso" vers le disque 8To USB, alors que tu disposes d'assez de place sur la VM ?
c' est une façon de voir les choses .
Comme le disque de sauvegarde est le 8T , perso je voyais plutot la chose dans l' autre sens .
Sur l' ordi de fanou , j ' aurais fais un script qui verifie l ' acces au disque de sauvegarde sur l' ordi de eric . si oui , alors je lance la sauvegarde ( une tache cron couplé a un script par exemple ) .
Ou encore mieux , ( ce que je disais des le départ ) , se servir tout les 2 , du disque dur en réseau via la VM et la BOX comme un NAS , ( puisque c' en est un ... en fin de compte ) et y stocker directement les documents dedans .
il ne reste alors qu ' a faire une sauvegarde du " tout " sur le disque de 8 T des que celui-ci se connecte ( ou avant de l ' arreter ) . hyper simple à mettre en place et inutile de faire de " détails " comme on le voit ici et toutes les complications ...
mise en place en 15 minutes .
Dernière modification par iznobe (Hier à 08:24)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#213 Hier à 08:37
- O_20_100_O
Re : script d’automatisation sauvegardes
se servir tout les 2 , du disque dur en réseau via la VM et la BOX
Au tout début de ce projet d'eric63, il a fait des tests pour voir comment le disque branché en USB peut être utilisé par la VM.
La procédure n'est pas claire et les essais étaient trop laborieux. Ça s'est terminé par un abandon. Il faudrait avoir cette Freebox Ultra à disposition pour approfondir.
Mais la VM a un disque de 1 To, et c'est suffisant, si j'ai bien compris, pour héberger à la fois les fichiers communs qui représentent la majorité du volume, et les fichiers "perso" qui ne pèsent pas grand chose.
Alors, pourquoi se compliquer la vie avec un disque USB. Il est utile, connecté au PC kubu, pour y sauvegarder les fichiers communs de la VM.
Dernière modification par O_20_100_O (Hier à 08:38)
La vie, pour moi elle est magnifique, pourquoi tu te la compliques ? (Zanini)
Hors ligne
#214 Hier à 09:08
- eric63
Re : script d’automatisation sauvegardes
pourquoi faire la sauvegarde des "documents perso" vers le disque 8To USB, alors que tu disposes d'assez de place sur la VM
dst=/home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/
les documents perso de chaque session sont sauvés sur la VM pour qu’ils puissent être récupérable à tous moments que j’ai mon ordi éteint ou pas
les autres c’est à dire les photos images et musiques sont sauvegardés sur le 8T car ils sont bien moins sollicités et ont besoin de place surtout les photos
et ils sont installés aussi sur la VM pour servir de base de travail et ca permet de vider des sessions ces dossiers qui prennent de la place et permettre une mutualisation des multimedias.
le dossier DocumentsPartages est du même tonneau puisqu’il est fait pour manipuler un dossier ou un fichier qui a besoin de changement de 2 utilisateurs
pour le fstab question sur uid=1000,gid=1000
ma session sur mon Pc à un uid de 1001 et la session fanou du pc a un uid de 1000 tout comme son portable
kubu@kubu-System-Product-Name:~$ id
uid=1001(kubu) gid=1001(kubu) groups=1001(kubu),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),119(lpadmin),129(sambashare),4242(nas-freebox)
kubu@kubu-System-Product-Name:~$
je dois modifier les uid et gid pour les 2 lignes ???
kubu@kubu-System-Product-Name:~$ grep sshfs /etc/mtab
Multimedias@192.168.1.128:/home/Multimedias /home/kubu/VMMultimedias fuse.sshfs rw,nosuid,nodev,noexec,noatime,user_id=0,group_id=0,default_permissions,allow_other 0 0
fanou@192.168.1.60:/home/fanou/Documents /home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou fuse.sshfs rw,nosuid,nodev,noexec,noatime,user_id=0,group_id=0,default_permissions,allow_other 0 0
kubu@kubu-System-Product-Name:~$
Dernière modification par eric63 (Hier à 09:17)
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
#215 Hier à 09:21
- eric63
Re : script d’automatisation sauvegardes
problème
kubu@kubu-System-Product-Name:~$ /home/kubu/ScriptsVMImportants/ScriptSauvegardes.sh
[2025-06-21 09:19:15] [INFO] === DÉBUT DE LA SAUVEGARDE ===
[2025-06-21 09:19:15] [DEBUG] Répertoire des logs: /home/kubu/log/backup-script
[2025-06-21 09:19:15] [DEBUG] Mode debug: 1
[2025-06-21 09:19:15] [DEBUG] Nettoyage des anciens logs (> 30 jours)
[2025-06-21 09:19:15] [INFO] Configuration:
[2025-06-21 09:19:15] [INFO] - Point de montage: /media/kubu/JEUX8T
[2025-06-21 09:19:15] [INFO] - UUID partition: 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
[2025-06-21 09:19:15] [INFO] - Date: 2025-06-21_09h19
[2025-06-21 09:19:15] [DEBUG] Utilisateur: kubu
[2025-06-21 09:19:15] [INFO] Vérification du disque externe...
[2025-06-21 09:19:15] [DEBUG] UUID trouvé: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-21 09:19:15] [DEBUG] UUID attendu: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-21 09:19:15] [INFO] Disque correctement monté
réussite
ctrlID: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
partition: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
kdialog: Option inconnue "info".
QThreadStorage: entry 4 destroyed before end of thread 0x651720007f20
QThreadStorage: entry 3 destroyed before end of thread 0x651720007f20
[2025-06-21 09:19:15] [INFO] Affichage de la boîte de dialogue de sélection...
[2025-06-21 09:19:27] [INFO] Sélections utilisateur: 16
[2025-06-21 09:19:27] [INFO] === TRAITEMENT SAUVEGARDE 1 ===
[2025-06-21 09:19:27] [DEBUG] Valeur sélectionnée: 16
[2025-06-21 09:19:27] [INFO] Sauvegarde DocumentsEricFanou sélectionnée
DocumentsEricFanou
[2025-06-21 09:19:27] [DEBUG] Sauvegarde locale Documents kubu
et ça bloque complet et j’ai pas de retour au prompt ??? le portable est éteint
ha ouf après un looooooong moment c’est ok avec toujours 1 erreur
dolphin rame à mort
je doit m’absenter a+
Dernière modification par eric63 (Hier à 09:30)
Kubuntu 25.04 wayland Plasma 6.3.4 KDE Qt 6.12.0 noyau 6.14.0-15 Asus B760+D4 i5-12400F 4.4Ghz DDR4 32Go nvidia RTX 3060 12GB
Utilisez les drivers libres avant d’ installer une brother avec le script de demonipuch
J’utilise le clavier french AFNOR
Hors ligne
#216 Hier à 09:29
- iznobe
Re : script d’automatisation sauvegardes
pour le fstab question sur uid=1000,gid=1000
ma session sur mon Pc à un uid de 1001 et la session fanou du pc a un uid de 1000 tout comme son portable
c' est toi qui a besoin d' avoir l' acces a ces fichiers là et apres montage.
Si ton U/G ID est 1001 alors , il faut mettre 1001 ( dans les 2 lignes oui ) pour que tu puisses acceder au fichiers montés comme si c' etait les tiens .
Avant de tester le script , teste que le montage SSHFS fonctionne correctement .
PS : après vérification , chez moi , il a fallu impérativement que je copie en root le dossier .ssh .
-----------------------------------------
Pour verifier la validité d' un script => https://www.shellcheck.net/
Mais deja on peut dire qu ' il y un soucis avec " log info " ou kdialog , vu :
kdialog: Option inconnue "info".
Mais , donné le retour du script n ' est pas suffisant .
il faut montrer le script utilisé ...
Dernière modification par iznobe (Hier à 09:35)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#217 Hier à 13:04
- eric63
Re : script d’automatisation sauvegardes
le script c’est celui du #209 de steph810 pas de modif
le portable est allumé
le shellcheck
$ shellcheck monscript
Ligne 35 :
horodatage local=$(date '+%Y-%m-%d %H:%M:%S')
^-- SC2155 (avertissement) : Déclarez et attribuez séparément pour éviter de masquer les valeurs de retour.
Ligne 41 :
horodatage local=$(date '+%Y-%m-%d %H:%M:%S')
^-- SC2155 (avertissement) : Déclarez et attribuez séparément pour éviter de masquer les valeurs de retour.
Ligne 47 :
horodatage local=$(date '+%Y-%m-%d %H:%M:%S')
^-- SC2155 (avertissement) : Déclarez et attribuez séparément pour éviter de masquer les valeurs de retour.
Ligne 55 :
horodatage local=$(date '+%Y-%m-%d %H:%M:%S')
^-- SC2155 (avertissement) : Déclarez et attribuez séparément pour éviter de masquer les valeurs de retour.
Ligne 148 :
uuid local=$(findmnt -n --output UUID "$MountPoint" 2>/dev/null)
^-- SC2155 (avertissement) : Déclarez et attribuez séparément pour éviter de masquer les valeurs de retour.
Ligne 216 :
si [ $? -ne 0 ]; alors
^-- SC2181 (style) : Vérifiez le code de sortie directement avec par exemple 'if ! mycmd;', pas indirectement avec $?.
$
le dernier backup.old
[2025-06-21 12:22:06] [INFO] === DÉBUT DE LA SAUVEGARDE ===
[2025-06-21 12:22:06] [INFO] Configuration:
[2025-06-21 12:22:06] [INFO] - Point de montage: /media/kubu/JEUX8T
[2025-06-21 12:22:06] [INFO] - UUID partition: 35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa
[2025-06-21 12:22:06] [INFO] - Date: 2025-06-21_12h22
[2025-06-21 12:22:06] [INFO] Vérification du disque externe...
[2025-06-21 12:22:06] [ERROR] Disque non reconnu ou éteint
[2025-06-21 12:22:06] [ERROR] UUID trouvé: ''
[2025-06-21 12:22:06] [ERROR] UUID attendu: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-21 12:22:18] [INFO] Attente du montage du disque...
[2025-06-21 12:22:31] [INFO] Disque monté avec succès après 2 tentatives
[2025-06-21 12:22:31] [INFO] Affichage de la boîte de dialogue de sélection...
[2025-06-21 12:22:46] [INFO] Sélections utilisateur: 16
[2025-06-21 12:22:46] [INFO] === TRAITEMENT SAUVEGARDE 1 ===
[2025-06-21 12:22:46] [INFO] Sauvegarde DocumentsEricFanou sélectionnée
building file list ...
0 files...
100 files...
200 files...
300 files...
400 files...
500 files...
600 files...
700 files...
800 files...
900 files...
1000 files...
1100 files...
1144 files to consider
…
deleting incremental-DocumentsEric/2025-06-21_12h03/incremental-DocumentsEric/2025-06-21_09h18/incremental-DocumentsEric/
…
deleting incremental-DocumentsEric/2025-06-21_12h03/incremental-DocumentsEric/2025-06-21_09h18/
deleting incremental-DocumentsEric/2025-06-21_12h03/incremental-DocumentsEric/
deleting incremental-DocumentsEric/2025-06-21_12h03/
cannot delete non-empty directory: incremental-DocumentsEric
sent 34.602 bytes received 11 bytes 69.226,00 bytes/sec
total size is 23.133.077.721 speedup is 668.334,95
[2025-06-21 12:22:47] [INFO] Sauvegarde locale Documents kubu réussie
[2025-06-21 12:22:47] [INFO] Configuration sauvegarde DocumentsEricFanou:
[2025-06-21 12:22:47] [INFO] - Source: fanou@192.168.1.60:/home/fanou/Documents
[2025-06-21 12:22:47] [INFO] - Destination: /home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/
[2025-06-21 12:22:47] [INFO] - Répertoire de sauvegarde: incremental-DocumentsFanou/2025-06-21_12h22/
[2025-06-21 12:22:48] [ERROR] Connexion SSH vers fanou@192.168.1.60: ÉCHEC
[2025-06-21 12:22:48] [INFO] === RÉSUMÉ FINAL ===
[2025-06-21 12:22:48] [INFO] Sauvegardes traitées: 1
[2025-06-21 12:22:48] [INFO] Réussites: 0
[2025-06-21 12:22:48] [INFO] Échecs: 1
[2025-06-21 12:22:48] [WARNING] Certaines sauvegardes ont échoués. Consultez les logs.
le dernier error.log
[2025-06-21 12:22:06] [ERROR] Disque non reconnu ou éteint
[2025-06-21 12:22:06] [ERROR] UUID trouvé: ''
[2025-06-21 12:22:06] [ERROR] UUID attendu: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-21 12:22:48] [ERROR] Connexion SSH vers fanou@192.168.1.60: ÉCHEC
le dernier debug.log
2025-06-21 12:22:06] [DEBUG] Répertoire des logs: /home/kubu/log/backup-script
[2025-06-21 12:22:06] [DEBUG] Mode debug: 1
[2025-06-21 12:22:06] [DEBUG] Nettoyage des anciens logs (> 30 jours)
[2025-06-21 12:22:06] [DEBUG] Utilisateur: kubu
[2025-06-21 12:22:06] [DEBUG] UUID trouvé: ''
[2025-06-21 12:22:06] [DEBUG] UUID attendu: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-21 12:22:23] [DEBUG] Tentative 1 - Vérification du montage...
[2025-06-21 12:22:25] [DEBUG] Ligne 184
[2025-06-21 12:22:25] [DEBUG] UUID vérifié: ''
[2025-06-21 12:22:27] [DEBUG] Tentative 2 - Vérification du montage...
[2025-06-21 12:22:29] [DEBUG] Ligne 184
[2025-06-21 12:22:29] [DEBUG] UUID vérifié: '35bb9ca2-2022-4dfa-a201-1a2dde7ce1aa'
[2025-06-21 12:22:46] [DEBUG] Valeur sélectionnée: 16
[2025-06-21 12:22:46] [DEBUG] Sauvegarde locale Documents kubu
[2025-06-21 12:22:48] [DEBUG] Ping vers 192.168.1.60 réussi
[2025-06-21 12:22:48] [DEBUG] Test de connexion SSH vers fanou@192.168.1.60...
mon incremental-DocumentsEric ne semble pas être reconnu à coté du dossier VMSauvegardesDocumentsEric
mais c’est éparpillé dedans
kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsEric/incremental-DocumentsEric/2025-06-21_12h22/incremental-DocumentsEric/2025-06-21_12h03/incremental-DocumentsEric/2025-06-21_09h18/incremental-DocumentsEric/
le dossier incremental doit être créé à coté ou cherche t il un ancien dossier nommé incremental ??
Dernière modification par eric63 (Hier à 13:13)
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
#218 Hier à 13:20
- steph810
Re : script d’automatisation sauvegardes
re,
je crois il manque peut etre underscore
%d_%H
horodatage local=$(date '+%Y-%m-%d _%H:%M:%S')
Dernière modification par steph810 (Hier à 14:11)
Hors ligne
#219 Hier à 13:26
- eric63
Re : script d’automatisation sauvegardes
ok c’est remplacé
teste que le montage SSHFS fonctionne correctement .
PS : après vérification , chez moi , il a fallu impérativement que je copie en root le dossier .ssh
mon .ssh est dans mon dossier perso
tu fais cela comment en ligne de commande ??
et tu le recopie où ??
les lignes 93 à 124 ne sont elles pas sensées faire cela ??
mais je ne vois rien en konsole d’affiché quand j’exécute le script
Dernière modification par eric63 (Hier à 13: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
#220 Hier à 14:06
- geole
Re : script d’automatisation sauvegardes
je crois il manque peut être underscore
%d_%Hhorodatage local=$(date '+%Y-%m-%d _%H:%M:%S')
Bonjour
Certainement pas très utile de mettre un espace devant le underscore
Dernière modification par geole (Hier à 14:07)
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
#221 Hier à 14:11
- steph810
Re : script d’automatisation sauvegardes
steph810 a écrit :je crois il manque peut être underscore
%d_%Hhorodatage local=$(date '+%Y-%m-%d _%H:%M:%S')
Bonjour
Certainement pas très utile de mettre un espace devant le underscore
horodatage local=$(date '+%Y-%m-%d_%H:%M:%S')
MERCI
Dernière modification par steph810 (Hier à 14:12)
Hors ligne
#222 Hier à 14:31
- O_20_100_O
Re : script d’automatisation sauvegardes
les documents perso de chaque session sont sauvés sur la VM
Ah ! désolé je m'étais arrêté à
/home/kubu/
et j'oubliais un épisode, tu montes d'abord le répertoire cible de la VM sur kubu. Y aller directement serait trop simple.
Et si tu veux utiliser ton PC, avec des scripts comme un serveur de sauvegardes, de la VM (pour les fichiers communs), vers le disque USb 8To, et aussi du PC kubu et du portable fanou (pour les fichiers personnels), vers la VM, rclone est ton ami.
C'est rclone qui s'occupe des montages si tu as bien partagé les clés publiques.
Dernière modification par O_20_100_O (Hier à 14:32)
La vie, pour moi elle est magnifique, pourquoi tu te la compliques ? (Zanini)
Hors ligne
#223 Hier à 14:52
- iznobe
Re : script d’automatisation sauvegardes
kubu@kubu-System-Product-Name:~$ grep sshfs /etc/mtab Multimedias@192.168.1.128:/home/Multimedias /home/kubu/VMMultimedias fuse.sshfs rw,nosuid,nodev,noexec,noatime,user_id=0,group_id=0,default_permissions,allow_other 0 0 fanou@192.168.1.60:/home/fanou/Documents /home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou fuse.sshfs rw,nosuid,nodev,noexec,noatime,user_id=0,group_id=0,default_permissions,allow_other 0 0 kubu@kubu-System-Product-Name:~$
Pour ma part , je trouve ça problématique . je sais je me repete encore ...
mais d' apres ce que je comprends , tu montes un dossier sur le point de montage : " /home/kubu/VMMultimedias " .
cela sous-entend que , si jamais cette sous-arborescence est existante sur ton ordi avant le montage , une fois monté , elle devient inaccessible .
Pour le 2eme montage , tu montes les documents de fanou dans : " /home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou " .
Sauf que " /home/kubu/VMMultimedias " est dejà un montage , et que tout ce qui est dans la sous-arborescence est donc monté .
un montage sur un montage , c' est pas tres propre cette histoire . surtout qu ' on ne sait meme pas ( vu que tu n' as pas donné les retours ) si dans le 1er montage il existe un dossier " /home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou " . Meme si il existe , c' est à mon avis pas conseillé de faire de la sorte ...
il faut forcément faire la distinction et " decoupler " les 2 montages . surtout que les documents de fanou ( directement de son ordi donc ) ne font pas parti de la VM que je sache .
tu crees un dossier /home/kubu/VM .
tu crees un dossier /home/kubu/fanou .
Dans le fstab , tu modifies tes 2 lignes :
Multimedias@192.168.1.128:/home/Multimedias /home/kubu/VM ...........
fanou@192.168.1.60:/home/fanou/Documents /home/kubu/fanou ...........
Pour tes sauvegardes , soit tu met tout en vrac dans : /media/$USER/JEUX8T/SAUVEGARDES
soit tu recrées la structure des dossiers sauvegardés à l' identique :
/media/$USER/JEUX8T/SAUVEGARDES/incremental-Photos
/media/$USER/JEUX8T/SAUVEGARDES/incremental-Images
/media/$USER/JEUX8T/SAUVEGARDES/incremental-Musiques
/media/$USER/JEUX8T/SAUVEGARDES/incremental-DocumentsPartages
/media/$USER/JEUX8T/SAUVEGARDES/incremental-DocumentsFanou
/media/$USER/JEUX8T/SAUVEGARDES/incremental-DocumentsEric
c' est la variable date qui vient ensuite faire la difference à l' interieur du dossier de stockage .
mon incremental-DocumentsEric ne semble pas être reconnu à coté du dossier VMSauvegardesDocumentsEric
de toute façon c ' est mal fait ce case 16 !
un " cas " , ce n' est pas prévu pour en traiter 2 à la fois ...
donc , et bien , c' est tres simple :
il faut modifier la ligne 214 , car je n' ai pas compris a quoi sert les " on " " off "
#!/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/
# Variables IP et user en haut
ipVM="192.168.1.128"
ipPortable="192.168.1.60"
# Configuration des logs
LOG_DIR="$HOME/log/backup-script"
LOG_FILE="$LOG_DIR/backup_$(date +%Y%m%d_%H%M).log"
DEBUG_FILE="$LOG_DIR/debug_$(date +%Y%m%d_%H%M).log"
ERROR_FILE="$LOG_DIR/error_$(date +%Y%m%d_%H%M).log"
# Création du répertoire de logs s'il n'existe pas
mkdir -pv "$LOG_DIR"
# Choix du mode debug via kdialog
if kdialog --yesno "Voulez-vous activer le mode DEBUG (log verbeux) ?"; then
DEBUG_MODE=1
else
DEBUG_MODE=0
fi
#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
# Fonction test ping (pour vérifier si machine est accessible avant ssh)
test_ping() {
local ip="$1"
if ping -c 2 -W 2 "$ip" >/dev/null 2>&1; then
log_debug "Ping vers $ip réussi"
return 0
else
log_warning "Ping vers $ip échoué"
return 1
fi
}
# Fonction test ssh avant rsync avec timeout augmenté
test_ssh() {
local user="$1"
local ip="$2"
log_debug "Test de connexion SSH vers $user@$ip..."
if timeout 15 ssh -o ConnectTimeout=10 -o BatchMode=yes "$user@$ip" exit 2>/dev/null; then
log_info "Connexion SSH vers $user@$ip: OK"
return 0
else
log_error "Connexion SSH vers $user@$ip: ÉCHEC"
return 1
fi
}
# Fonction test validation clé SSH
test_ssh_key() {
local user="$1"
local ip="$2"
log_debug "Test de validation de la clé SSH pour $user@$ip..."
# Vérifier d'abord si une clé SSH existe localement
local ssh_key_found=0
for key_type in rsa ed25519 ecdsa dsa; do
if [ -f "$HOME/.ssh/id_$key_type" ] || [ -f "$HOME/.ssh/id_$key_type.pub" ]; then
log_debug "Clé SSH $key_type trouvée localement"
ssh_key_found=1
break
fi
done
if [ $ssh_key_found -eq 0 ]; then
log_warning "Aucune clé SSH trouvée dans $HOME/.ssh/"
return 1
fi
# Test de connexion SSH avec clé (sans mot de passe)
log_debug "Test de connexion avec clé SSH vers $user@$ip..."
if timeout 10 ssh -o ConnectTimeout=8 -o BatchMode=yes -o PasswordAuthentication=no -o PubkeyAuthentication=yes "$user@$ip" exit 2>/dev/null; then
log_info "Authentification par clé SSH vers $user@$ip: OK"
return 0
else
log_warning "Authentification par clé SSH vers $user@$ip: ÉCHEC"
log_warning "La clé SSH n'est peut-être pas configurée ou acceptée sur le serveur distant"
return 1
fi
}
# 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"
# 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 DocumentsFanou sélectionnée"
echo DocumentsFanou
user=fanou
ip=$ipPortable
src=/home/fanou/Documents
dst=/home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/
bkp=incremental-DocumentsFanou/$date/
backup_name="DocumentsFanou"
;;
32)
log_info "Sauvegarde DocumentsEric sélectionnée"
echo DocumentsEric
user=Multimedias
ip=$ipVM
src=/home/kubu/Documents
dst=/home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou/
bkp=incremental-DocumentsEric/$date/
backup_name="DocumentsEric"
;;
*)
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 ping avant test ssh
if ! test_ping "$ip"; then
log_error "Ping vers $ip a échoué, sauvegarde annulée"
failed_backups=$((failed_backups + 1))
continue
fi
# Test SSH avant rsync - CORRECTION: logique simplifiée avec timeout augmenté
if ! test_ssh "$user" "$ip"; then
failed_backups=$((failed_backups + 1))
continue
fi
# Test de validation de la clé SSH
if ! test_ssh_key "$user" "$ip"; then
log_warning "Clé SSH non configurée pour $user@$ip, la connexion utilisera probablement un mot de passe"
# Note: Ceci est juste un avertissement, la sauvegarde peut continuer
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..." 30 &
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 de(s) sauvegarde(s) $resultats - TOUTES RÉUSSIES !"
else
log_warning "Certaines sauvegardes ont échoués. Consultez les logs."
kdialog --msgbox "FIN de(s) sauvegarde(s) $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"
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#224 Hier à 14:55
- iznobe
Re : script d’automatisation sauvegardes
teste que le montage SSHFS fonctionne correctement .
PS : après vérification , chez moi , il a fallu impérativement que je copie en root le dossier .sshmon .ssh est dans mon dossier perso
tu fais cela comment en ligne de commande ??
et tu le recopie où ??les lignes 93 à 124 ne sont elles pas sensées faire cela ??
mais je ne vois rien en konsole d’affiché quand j’exécute le script
les lignes 93 a 124 du script de steph 810 ? absolument rien à voir . ( je l ' ai deja dis , cela ne sert à rien , c' est bien pour cela que j ' avais enlevé du script ) , mais bon , on va pas se battre continuellement , alors que son objectif est d' en mettre le plus possible , alors que moi , c' est l' inverse , moins y en a mieux c' est , avec 4 lignes c' est largement suffisant . je t' ai donné le script que j' aurais utilisé deja ( j ' ai juste ajouté le controle pour les sources a celui que j' utilise vu que toi tu ajoutes la couche SSH alors que moi ca se passe entièrement en local ) .
donne les retours :
sudo -i cp -r /home/kubu/.ssh/ /root exit
Montage et verif :
sudo mount -a grep sshfs /etc/mtab
Dernière modification par iznobe (Hier à 14:59)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#225 Hier à 15:17
- eric63
Re : script d’automatisation sauvegardes
kubu@kubu-System-Product-Name:~$ sudo -i
[sudo] password for kubu:
root@kubu-System-Product-Name:~# cp -r /home/kubu/.ssh/ /root
root@kubu-System-Product-Name:~# sudo mount -a
root@kubu-System-Product-Name:~# grep sshfs /etc/mtab
Multimedias@192.168.1.128:/home/Multimedias /home/kubu/VMMultimedias fuse.sshfs rw,nosuid,nodev,noexec,noatime,user_id=0,group_id=0,default_permissions,allow_other 0 0
fanou@192.168.1.60:/home/fanou/Documents /home/kubu/VMMultimedias/VMSauvegardesDocuments/VMSauvegardesDocumentsFanou fuse.sshfs rw,nosuid,nodev,noexec,noatime,user_id=0,group_id=0,default_permissions,allow_other 0 0
root@kubu-System-Product-Name:~#
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