Question Comment faire des sauvegardes silencieuses lors du branchement d'un disque USB et lors de l'utilisation de Back In Time


En fait, j'ai déjà répondu à cette question, même si je ne sais pas si la réponse est bonne. Alors, qu'est-ce que tu en penses:

  • Tâche: laisser l'ordinateur démarrer une sauvegarde en utilisant BIT (Back In Time) aussi silencieusement et aussi facilement que possible pour obtenir le WAF le plus élevé possible *
  • Solution: utilisez udev pour lancer un script de sauvegarde comme celui-ci lorsqu'un disque USB spécifique est branché:

.

#!/bin/bash
# usage: backup_userdata.sh username

export _USER=$1

# config file, Xauthoriy and DISPLAY    
export BIT_CONFIG=/home/$_USER/.config/backintime/config
if ! test -e $BIT_CONFIG ; then exit 1;fi

# set DISPLAY
export XAUTHORITY=/home/$_USER/.Xauthority
export $(cat /proc/$(pgrep -o -u $_USER unity)/environ | tr '\0' '\n' | grep '^DISPLAY=').0

# dont auto-open backup USB disk - couldnt find a better solution for this  
su $_USER -c 'gsettings set org.gnome.desktop.media-handling automount-open false'          
{ sleep 10; su $_USER -c 'gsettings set org.gnome.desktop.media-handling automount-open true' ; }&

# send the rest to the background so udev doesnt wait for the backup to end
{   
    export BIT_LOG=/home/$_USER/.local/share/backintime/takesnapshot_.log

    # strings for pop ups
    export STARTTEXT="Backup started"
    export SUCCESSTEXT="Backup completed"
    export WARNINGTEXT="Backup completed with errors\nRevise results\nExternal disk still mounted"
    export ERRORTEXT="Backup aborted\nRevise results\nExternal disk still mounted"
    export BIT="Back In Time"   

    # back up media     
    export BIT_MEDIA="/media/backup"


    # start backup
    su $_USER -c 'notify-send "$BIT" "$STARTTEXT"'
    if su $_USER -c 'backintime -b --config $BIT_CONFIG'; then
        if ! grep -iq "error: " $BIT_LOG; then 
            # no errors in log file
            umount $BIT_MEDIA # umount before confirmation
            su $_USER -c 'notify-send "$BIT" "$SUCCESSTEXT"'
            su $_USER -c 'zenity --no-wrap --info --title "$BIT" --text "\n$SUCCESSTEXT"'
        else    
            # errors in log file
            su $_USER -c 'notify-send "$BIT" "$WARNINGTEXT"'
            su $_USER -c 'zenity --no-wrap --warning --title "$BIT" --text "\n$WARNINGTEXT"'
            su $_USER -c backintime-gnome # open BIT for error analysis 
        fi
    else    
        # backup aborted
        su $_USER -c 'notify-send "$BIT" "$ERRORTEXT"'
        su $_USER -c 'zenity --no-wrap --error --title "$BIT" --text "\n$ERRORTEXT"'
        su $_USER -c backintime-gnome # open BIT for error analysis
    fi  
}&

Le scipt fonctionne. Le seul problème qui subsiste, pour autant que je sache, est que la version de BIT que j'utilise sur mon 12.04 n'utilise pas toujours un statut de sortie. Mais la dernière version devrait faire l'affaire (je ne peux pas la tester pour le moment).

Des commentaires?

"*" Facteur d'acceptation de la femme


2
2018-01-09 12:31


origine


+1 Certainement pas une question, mais un script complètement écrit. Cela aidera certains à apprendre que même pour des tâches simples, les scripts peuvent être élégants ... - Cbhihe


Réponses:


À partir de la version 1.0.28 Prise en charge de BackInTime udev les horaires par ses propres moyens. Il suffit de sélectionner When drive get connected (udev) dans Settings > Schedule et tu as fini...

Disclaimer: Je suis le principal développeur de BIT


1
2018-01-11 02:08



Mec, ça m'a pris des heures pour faire fonctionner ce petit script ... et maintenant tu viens juste pour dire ça ... Lol! Merci beaucoup pour un programme aussi incroyable! J'ai déjà fait un don! Merci beaucoup! - JLTD
Il m'a fallu des jours pour ajouter cette fonctionnalité dans BIT, p Merci pour le don. Même si ça ne va pas pour moi mais pour Dan, qui a quitté le projet - Germar