Contenu | Rechercher | Menus

Annonce

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

À propos de l'équipe du forum.

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

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

En 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 big_smile ) .

Avoue quand meme , que desuite , avec les chemins que j' ennonce , desuite on sait de quoi on parle roll
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 .

En 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

O_20_100_O a écrit :

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 big_smile en l ' inscrivant dans le fstab tongue 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 .

En 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 roll

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 .

En 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 Vm

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

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

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

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

En 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 smile ), 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 .

En 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 wink )
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 wink


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 .

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

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

En ligne