rsync.sh 4.57 KB
Newer Older
1 2
#!/bin/bash

Benoît Boudaud's avatar
Benoît Boudaud committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16
# Copyright © 2018 Benoît Boudaud <https://miamondo.org>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>

Benoît Boudaud's avatar
Benoît Boudaud committed
17 18 19
synchronisation ()

{
20 21 22 23 24
value=1
quit=

if [ "$value" = 1 ] && ! [[ $(hostname -I) = 192.168.178.25 ]]
then
Benoît Boudaud's avatar
Benoît Boudaud committed
25
    echo "Vous vous apprêtez à téléverser sur la Raspberry Pi, des répertoires ou fichiers modifiés."
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
    sed -i "/Documents/! s/value=1/value=0/" $HOME/Documents/config_files/synchronisation-automatique/rsync.sh
    rsync -e ssh -av --delete-after --progress --exclude='.*/' --exclude='VirtualBox*' $HOME $USER@192.168.178.25:/home
    
    if [ "$quit" = poweroff ]
    then
        systemctl poweroff
    elif [ "$quit" = reboot ]
    then
        systemctl reboot
    elif [ "$quit" = log_out ]
    then
        openbox --exit
    fi   
    
elif [ "$value" = 0 ] && ! [[ $(hostname -I) = 192.168.178.25 ]]
then
42 43 44 45
    echo "La Raspberry Pi va mettre à jour les répertoires et les fichiers de votre ordinateur."
    if [ "$quit" = reboot ]; then
        sleep 5
    fi
46 47 48 49
    rsync -e ssh -av --delete-after --progress --exclude=".*/" $USER@192.168.178.25:$HOME /home      
    sed -i "/Documents/! s/value=0/value=1/" $HOME/Documents/config_files/synchronisation-automatique/rsync.sh
    sed -i "/Documents/! s/quit=.*/quit=/" $HOME/Documents/config_files/synchronisation-automatique/rsync.sh
fi
Benoît Boudaud's avatar
Benoît Boudaud committed
50 51 52
}

synchronisation
53 54 55 56

: "
EXPLICATION DU CODE

Benoît Boudaud's avatar
Benoît Boudaud committed
57
- Ligne 17 : déclaration de la fonction synchronisation 
58
- Ligne 20 et 21: variables conditionnelles 
Benoît Boudaud's avatar
Benoît Boudaud committed
59
- De la ligne 23 à la ligne 38 : Ce bloc d'instructions s'exécute à l'EXTINCTION DE L'ORDINATEUR 
60
            grâce au fichier './.config/openbox/menu.xml'
Benoît Boudaud's avatar
Benoît Boudaud committed
61
- Ligne 23 : Si la variable 'value' est égale à 1 et que le nom d'hôte de l'ordinateur n'est pas 
62
            celui de ma Raspberry, le bloc d'instructions s'exécute.
Benoît Boudaud's avatar
Benoît Boudaud committed
63
- Ligne 26 : Grâce à 'sed', nous modifions la valeur contenue dans la variable 'value'. 
64 65 66 67
            Nous la faisons passer de 1 à 0 pour que ce soit l'autre bloc d'instructions qui 
            s'exécute au prochain démarrage de l'ordinateur. 
            '/Documents/!'permet de modifier uniquement la ligne 3, c'est-à-dire 
            celle où on ne trouve pas l'occurrence 'Documents' car il ne faut pas modifier les autres 'value='
Benoît Boudaud's avatar
Benoît Boudaud committed
68
- Ligne 27 : Je synchronise mon ordinateur avec ma raspberry en téléversant mes répertoires modifiés sur cette dernière. 
69 70
            J'exclue du téléversement, les répertoires cachés (--exclude='.*/')
            et le répertoire de ma machine virutelle (--exclude='./VirtualBox VMs')
Benoît Boudaud's avatar
Benoît Boudaud committed
71
- De la ligne 29 à la ligne 38 : des fichiers contenus dans le même répertoire sont susceptibles de modifier 
72 73 74
            la variable conditionnelle 'quit' et par conséquent, d'exécuter tel ou tel bloc d'instructions, à savoir extinction de 
            l'ordinateur, redémarrage ou déconnexion. Ces fichiers sont 'poweroff.sh', 'reboot.sh' et 'log_out.sh' exécutés par le 
            fichier './.config/openbox/menu.xml'.
Benoît Boudaud's avatar
Benoît Boudaud committed
75
- De la ligne 40 à la ligne 46 : Ce bloc d'instructions s'exécute au DÉMARRAGE DE L'ORDINATEUR 
76
            grâce au fichier ~/.config/openbox/autostart
Benoît Boudaud's avatar
Benoît Boudaud committed
77
- Ligne 40 : Si la variable 'value' est égale à 1 et que le nom d'hôte de l'ordinateur n'est pas 
78
            celui de ma Raspberry, le bloc d'instructions s'exécute.
79 80 81
- Ligne 43 et 44 : au reboot, je retarde l'exécution du programme pour laisser le temps à la connexion de s'établir
- Ligne 46 : Ma Raspberry téléverse les répertoires modifiés sur l'ordinateur cible => Synchronisation
- ligne 47 : Ensuite, grâce à 'sed', nous modifions la valeur contenue dans la variable 'value'. 
82 83 84 85
            Nous la faisons passer de 0 à 1 pour que ce soit l'autre bloc d'instructions qui 
            s'exécute à la prochaine extinction de l'ordinateur. 
            '/Documents/!'permet de modifier uniquement la ligne 3, c'est-à-dire 
            celle où on ne trouve pas l'occurrence 'Documents' car il ne faut pas modifier les autres 'value='
86 87
- Ligne 48 : Nous réinitialisons la variable 'quit' selon le même principe.
- Ligne 52 : Appel de fonction.
88
"