Dernière mise à jour : 02/03/2023 à 18h08
Table des matières
Je vais vous décrire cela sur un disque dur que j'ai à la maison, mais je l'ai autrefois fait sur un disque dur installé chez quelqu'un, cela fonctionne aussi. Il est juste nécessaire dans ce cas que la personne chez qui vous déposez le raspberry ait une ip fixe ou un nom de domaine et de rediriger les ports qui vont bien vers le raspberry.
Comme souvent, la majorité des commandes sont à faire en root ou avec sudo.
Etape 1 : accès SSH sans mot de passe
Je ne vais pas vous redécrire l'opération, vous trouverez cela facilement sur internet, j'ai également un article en cours de rédaction sur le sujet.
C'est important pour automatiser la sauvegarde.
Etape 2 : La création du volume chiffré sur son disque dur externe
Rendez-vous sur le raspberry où est branché votre disque dur externe, ou bien vous pouvez brancher le disque dur sur votre ordinateur.
Il sera nécessaire de supprimer les données du disque ou au moins de la partition que l'on veut chiffrer.
Il est d'abord nécessaire d'installer cryptsetup si ce n'est pas le cas, exemple sur une debian :
Code BASH :
apt install cryptsetup
On cherche notre disque dur :
Code BASH :
lsblk
On créé la partition qui sera chiffrée ensuite sur le disque trouvé (attention à ne pas se tromper de disque) :
Code BASH :
cfdisk /dev/sda
Vous arriverez sur l'interface de cfdisk qui vous permettra de supprimer la ou les partitions que vous souhaitez puis d'en créer une nouvelle à chiffrer.
On ne formate pas la partition nouvellement créée.
On chiffre la nouvelle partition :
Code BASH :
cryptsetup --verify-passphrase luksFormat /dev/sda1
Cherchez dans le manuel de cryptsetup mais on peut spécifier des paramètres :
Code BASH :
cryptsetup --verify-passphrase --cipher serpent-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sda1
On vous demandera confirmation pour effacer les données et d'entrer votre nouvelle passphrase (deux fois).
On ouvre ensuite le conteneur en lui donnant un nom (ici, je l'appelle cryptWD, on pourra le changer à chaque fois qu'on l'ouvrira) :
Code BASH :
cryptsetup luksOpen /dev/sda1 cryptWD
La partition sera alors accessible via /dev/mapper/cryptWD
Il suffit ensuite de formater la partition :
Code BASH :
mkfs.ext4 /dev/mapper/cryptWD
Enfin, on monte la partition :
Code BASH :
mount /dev/mapper/cryptWD /mnt
Etape 3 : Automatisation de l'ouverture du conteneur
Nous avons créé notre conteneur et vu comment l'ouvrir puis le monter.
Pour automatiser l'ouverture et le montage, rendez-vous sur cet article qui décrit toute la démarche.
Etape 4 : La sauvegarde
Tout est en place maintenant pour faire la sauvegarde :
- notre disque dur contient une partition chiffrée qui s'ouvre et se monte automatiquement au démarrage du système
- nous avons accès à notre système distant sans mot de passe
Nous allons maintenant passer au script de sauvegarde.
Je vous mets en exemple, le script bash que j'utilise. Il est à adapter :
- SOURCE >> les fichiers à sauvegarder
- LOGFILE >> où vous sauvegarder les logs de la sauvegarde
- SERVDEST >> ip de mon raspberry où est branché le disque dur chiffré
J'ai crée une fonction pour chaque dossier, cela me permet de bien séparer les choses et d'en ajouter ou supprimer facilement.
Mon fichier exclusions_rsync.txt contient les lignes suivantes :
Code BASH :
.recycle
@Recycle
.Trash
Code BASH :
#! /bin/bash #Variables PORT=22 EXCLUDEFILE="/srv/mergerfs/DATA/Informatique/Backups/Rsync_RPI/exclusions_rsync.txt" DATEFICHIER=$(date +%Y.%m.%d_%H.%M.%S) LOGFILE="/srv/mergerfs/DATA/Informatique/Backups/Rsync_RPI/logs/rsync_$DATEFICHIER.log" SOURCE="/srv/mergerfs/DATA/" USER="user" SERVDEST="192.168.1.51" PATHDEST="/mnt/cryptWD/" OPTIONS="-ah --ignore-existing --info=MISC2,PROGRESS2,STATS2 --exclude-from=$EXCLUDEFILE --log-file=$LOGFILE --log-file-format=" DATEDEBUT=$(date +%Y.%m.%d_%H.%M.%S) DebutFichier(){ echo "Début de la sauvegarde - $DATEDEBUT" >> $LOGFILE echo "" >> $LOGFILE } SauvegardeHomes(){ echo "Sauvegarde du dossier Homes" >> $LOGFILE rsync -e "ssh -p $PORT" $OPTIONS $SOURCE"Homes/" $USER@$SERVDEST:$PATHDEST"Homes/" echo "" >> $LOGFILE } SauvegardeInformatique(){ echo "Sauvegarde du dossier Informatique" >> $LOGFILE rsync -e "ssh -p $PORT" $OPTIONS $SOURCE"Informatique/" $USER@$SERVDEST:$PATHDEST"Informatique/" echo "" >> $LOGFILE } SauvegardeLivres(){ echo "Sauvegarde du dossier Livres" >> $LOGFILE rsync -e "ssh -p $PORT" $OPTIONS $SOURCE"Livres/" $USER@$SERVDEST:$PATHDEST"Livres/" echo "" >> $LOGFILE } SauvegardeMusique(){ echo "Sauvegarde du dossier Musique" >> $LOGFILE rsync -e "ssh -p $PORT" $OPTIONS $SOURCE"Musique/" $USER@$SERVDEST:$PATHDEST"Musique/" echo "" >> $LOGFILE } SauvegardePhotos(){ echo "Sauvegarde du dossier Photos" >> $LOGFILE rsync -e "ssh -p $PORT" $OPTIONS $SOURCE"Photos/" $USER@$SERVDEST:$PATHDEST"Photos/" echo "" >> $LOGFILE } SauvegardePublic(){ echo "Sauvegarde du dossier Public" >> $LOGFILE rsync -e "ssh -p $PORT" $OPTIONS $SOURCE"Public/" $USER@$SERVDEST:$PATHDEST"Public/" echo "" >> $LOGFILE } SauvegardeTelechargements(){ echo "Sauvegarde du dossier Telechargements" >> $LOGFILE rsync -e "ssh -p $PORT" $OPTIONS $SOURCE"Telechargements/" $USER@$SERVDEST:$PATHDEST"Telechargements/" echo "" >> $LOGFILE } SauvegardeVideos(){ echo "Sauvegarde du dossier Videos" >> $LOGFILE rsync -e "ssh -p $PORT" $OPTIONS $SOURCE"Videos/" $USER@$SERVDEST:$PATHDEST"Videos/" } FinFichier(){ DATEFIN=$(date +%Y.%m.%d_%H.%M.%S) echo "Fin de la sauvegarde - $DATEFIN" >> $LOGFILE } EnvoiMail(){ echo "La sauvegarde s'est terminée" | mutt -s "Sauvegarde réussie" -a $LOGFILE -- adressemail@fournisseur.fr } main(){ DebutFichier SauvegardeHomes SauvegardeInformatique SauvegardeLivres SauvegardeMusique SauvegardePhotos SauvegardePublic SauvegardeTelechargements SauvegardeVideos FinFichier EnvoiMail } main
Il vous suffit ensuite de tester le script avant de passer à l'étape suivante.
Planification de la sauvegarde
Enfin, on planifie la sauvegarde avec un petit crontab -e et on ajoute la ligne qui va bien, pour mon exemple :
Code BASH :
30 3 * * 7 bash /srv/mergerfs/DATA/Informatique/Backups/Rsync_RPI/sauvegarde.sh
Me permet de faire ma sauvegarde toutes les semaines le lundi matin à 3h30.