#! /bin/sh
SOURCE="/"
MONTAGE="/mnt/sauvegarde"
DESTINATION1="/mnt/sauvegarde/BANK1"
DESTINATION2="/mnt/sauvegarde/BANK2"
BANKSTATUS="/mnt/sauvegarde/BANK.status"
JOURNAL="/root/backup/rsync-backup.log"
LASTDATE="/root/backup/rsync-backup.date"
NBJOUR=$((($(date -u +%s) - $(date -ur $LASTDATE  +%s))/86400))
APPELUSER="/usr/local/sauvegarde/rsync-backup-user.date"
NBJOURUSER=$((($(date -u +%s) - $(date -ur $APPELUSER +%s))/86400))

# test si la date d'échéance est arrivée
if [ $NBJOUR -lt 7 ]; 
then
	echo "`date`	Pas le moment" >> $JOURNAL
	if [ $NBJOURUSER -lt 7 ]; 
	then	
		touch -t 201701010000 $APPELUSER
	else
		exit
	fi
fi
# Essaye de monter le disque dur et recherche dans quel conteneur enregistrer la sauvegarde
#A-CORRIGER
mount UUID=8498c62b-ad6f-4966-990e-822f729a01c3 $MONTAGE # A modifier avec l'UUID de votre de disque de sauvegarde
#A-CORRIGER
if [ -f $BANKSTATUS ]; then
	echo "`date`	Montage disque OK" >> $JOURNAL
	VALSAUVEGARDE=`cat $BANKSTATUS`
	if [ "$VALSAUVEGARDE" = "BANK1"  ]; then
		DESTINATION=$DESTINATION2
		VALSAUVEGARDE="BANK2"
	elif [ "$VALSAUVEGARDE" = "BANK2"  ]; then
		DESTINATION=$DESTINATION1
		VALSAUVEGARDE="BANK1"
	else
		echo "`date`	Echec sauvegarde SYSTEME:	Contenu $BANKSTATUS non conforme" >> $JOURNAL
		umount $MONTAGE
		exit
	fi
else
	echo "`date`	Echec sauvegarde SYSTEME:	fichier $BANKSTATUS introuvable" >> $JOURNAL
	exit
fi

# Sauvegarde du système
if [ -d $DESTINATION ] ;
then
	rsync_backup_include='/root/backup/rsync-backup-include'
	dpkg --get-selections "*" > $DESTINATION/dpkg-selections.list
	debconf-get-selections > $DESTINATION/debconf-selections
	/usr/bin/rsync -a --delete-after $SOURCE $DESTINATION --exclude-from=$rsync_backup_include --exclude='**' 
	touch $LASTDATE
	echo "`date`	Sauvegarde SYTEME OK:	sur $DESTINATION" >> $JOURNAL
	echo $VALSAUVEGARDE > $BANKSTATUS
#	umount $MONTAGE
else
	echo "`date`	Echec sauvegarde SYSTEME:	répertoire $DESTINATION introuvable" >> $JOURNAL
	umount $MONTAGE
	exit 
fi

# Variables d'environnement
SOURCE="/home"
DESTINATION="/mnt/sauvegarde"
ACTUEL="/mnt/sauvegarde/backuphome/Actuel"
BACKUP="/mnt/sauvegarde/backuphome/$(date +'%d-%m-%Y')"
T="$DESTINATION/backuphome/.superpointeur.txt"
LISTEEXCLUSIONS="/root/backup/rsync-backup-include2"

# Codes d'erreur
E_REPABSENT=65
E_POINTEURABSENT=66

# test 1
if [ -d $DESTINATION/backuphome ] && [ -d $DESTINATION/.backuphome ]  ; 
	then # les répertoires existent 
		echo "répertoires trouvés"		

	else 

		echo "`date`	Echec sauvegarde HOME: 		répertoires de sauvegarde introuvables." >> $JOURNAL
		# Vérifier si le support de sauvegarde est monté
		umount $MONTAGE
		exit $E_REPABSENT
fi # fin test 1

# Test 2
if [ -e "$T" ] ;
	then # le répertoire d'archivage sécurisé est déjà monté
		echo "`date`	Echec sauvegarde HOME	Le dossier sécurisé est déjà monté." >> $JOURNAL
		# Démonter le répertoire sécurisé avant l'utilisation du script."
		umount $MONTAGE
		exit $E_POINTEURABSENT

	else # Il faut monter le répertoire d'archivage sécurisé
		chmod 750 $DESTINATION/backuphome
		#Déchiffrage du répertoire
                #Remplacer <USER> par l'utilisateur de confiance où est stocké le mot de passe
                #A-CORRIGER
		cat /home/<USER>/Documents/.clefsauvegarde | encfs --stdinpass -v "$DESTINATION/.backuphome" "$DESTINATION/backuphome"
                #A-CORRIGER
		# Coffre ouvert la sauvegarde sécurisée va démarrer!
		# crée le répertoire Backup du jour
		mkdir -p "$BACKUP"
		# crée la sauvegarde
		/usr/bin/rsync -a --delete --exclude-from $LISTEEXCLUSIONS --backup --backup-dir="$BACKUP" "$SOURCE" "$ACTUEL" --exclude='**'
		# supprime le répertoire backup s'il est vide
		rmdir --ignore-fail-on-non-empty "$BACKUP"
		# démonte le répertoire en clair
		fusermount -u "$DESTINATION/backuphome"
		chmod 440 $DESTINATION/backuphome
		echo "`date`	Sauvegarde HOME OK" >> $JOURNAL
		umount $MONTAGE
fi # fin test 2 

exit 0