-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharchivage.bash
More file actions
executable file
·99 lines (92 loc) · 2.94 KB
/
archivage.bash
File metadata and controls
executable file
·99 lines (92 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/bash
REPERTOIRE_SOURCE=""
RACINE_DESTINATION="/media/5211529A04099FF7/sauvegarde"
REPERTOIRE_CONFIGURATION="/home/alban/.config/archivage"
SOFTWARE_CONFIGURATION="$RACINE_DESTINATION/software_config"
#Fonction d'aide : affichage de l'aide
function aide
{
echo "NOM"
echo "archivage.bash : sauvegarde du home"
echo "SYNOPSIS"
echo "archivage.bash [OPTIONS] [USER] [DOSSIER]"
echo "DESCRIPTION"
echo "Le script archivage permet d'archiver le dossier DOSSIER de l'utilisateur USER vers un disque dur amovible sous sauvegarde/USER."
echo "Le paramètre USER permet de choisir le USER dont on veut sauvegarder un dossier. Par défaut, si il n'y a que le paramètre DOSSIER, c'est le home de l'utilisateur courant qui est sauvegardé"
echo "Le paramètre DOSSIER permet de choisir le dossier à sauvegarder"
echo "Les sous-dossiers TMP sont ignorés"
echo "Les options possible sont :"
echo "-h ou --help : pour afficher cette aide"
}
#Fonction d'archivage proprement dite
function archive
{
#Synchronisation des dossiers sources et destination
echo $REPERTOIRE_SOURCE
echo $REPERTOIRE_DESTINATION
rsync -rtD --del --stats --progress $REPERTOIRE_SOURCE $REPERTOIRE_DESTINATION
echo "La commande de sauvegarde a terminé son travail..."
}
#Fonction permettant de s'assurer que le disque dur est en place avant l'archivage
function ready
{
# Détecter la présence du volume de destination et interrompre l'opération si nécessaire
while [ ! -e "$RACINE_DESTINATION" ]
do
#Si le volume de sauvegarde n'est pas présent on affiche un message demandant quoi faire
echo "Le dossier de sauvegarde $RACINE_DESTINATION n'existe pas. Insère le disque dur de sauvegarde si tu veux sauvegarder. Disque monté? y/n"
read answer
if [ "$answer" != "y" ]
then
#On demande de repousser la sauvegarde
echo "Attention la sauvegarde du dossier est repoussée"
exit 3
fi
done
if [ ! -e "$REPERTOIRE_CONFIGURATION" ]
then
echo "Le fichier de configuration est absent. Créer le pour définir quoi sauvegarder"
exit 4
fi
}
#Fonction permettant de parser le fichier de configuration
function parse
{
#Parsing du fichier de configuration
for line in $(cat $HOME/bin/archivage/config)
do
nb=$(echo $line | grep -c "#")
#Ignore comments
if [ $nb -eq 0 ]
then
#Set le repertoire source a sauvegarder
REPERTOIRE_SOURCE=$(echo $line)
end_path=$(echo $line | sed 's/\/[^\/]*$//')
#Set le repertoire du depertoire de sauvegarde
REPERTOIRE_DESTINATION=$(echo $RACINE_DESTINATION$end_path)
#Archivage via rsync
archive
fi
done
}
#Back-up liste de software installes
function software
{
echo "pacman -Qe" >> $SOFTWARE_CONFIGURATION
pacman -Qe >> $SOFTWARE_CONFIGURATION
echo "pacman -Qm" >> $SOFTWARE_CONFIGURATION
pacman -Qm >> $SOFTWARE_CONFIGURATION
}
#Give status of git repositories
function gitupdate
{
cd $HOME/dev
if [ $(git-all.bash status) == "" ]
then
echo "GIT repository is not up to date !!!"
fi
}
ready
parse
software
gitupdate