Réaliser des backups encryptés facilement à l’aide de ce script 3

harddrive

Cela faisait plus d’un an que je n’avais pas posté d’article (le temps passe vite..), malgré le fait que je fasse plein de trucs qui pourraient vous intéresser.

Aujourd’hui, je tiens à partager avec vous un script que j’ai repris, puis amélioré (pour ne pas dire refait). Il permet de réaliser simplement et rapidement des backups encryptés avec TrueCrypt.

TrueCrypt est un programme qui permet de créer des « containers » encryptés, pour protéger vos fichiers. Il s’agit d’un outil multi-plateformes et gratuit.

TrueCrypt a été au coeur de l’actualité il y a peu de temps (voir ici, et ) concernant la fiabilité du logiciel Trucrypt, car plusieurs failles de sécurité s’y trouvaient et le site conseillait à ses utilisateurs de passer à BitLocke… Néanmoins, une campagne Indiegogo avait été financée quelques mois avant ces nouvelles (voir ici) afin d’auditer le code de Truecrypt pour y découvrir d’éventuelles failles. Jusqu’à maintenant, rien de sérieux n’a été découvert. Le site officiel de TrueCrypt a fermé depuis, mais les sources et les binaires (de la version 7.1a, pas la 7.2) sont toujours disponibles sur truecrypt.ch.

Tant que le groupe de la campagne Indiegogo n’a pas totalement fini d’auditionner le code de TrueCrypt, je pense qu’il faut rester vigilants, mais je continue malgré tout à utiliser cet outil magnifique, multi-plateformes et d’une aussi bonne qualité (n’hésitez pas à partager vos solutions dans les commentaires).

Le script suivant permet de synchroniser deux emplacements (la/les sources et la destination) en ne copiant/déplaçant/supprimant que les éléments qui ont été changés.

Qu’est-ce que cela veut dire ?

Cela veut dire plusieurs choses. La première, c’est que la première fois que l’on réalise la sauvegarde, cela risque de prendre plus de temps que les suivantes, car le script doit tout copier de la source à la destination. Par contre, la seconde fois, selon le nombre de fichiers modifiés, cela ira beaucoup plus vite, car le script ne synchronisera que les éléments qui ont changé ! Plus obligé de faire des « Remplacer tout » et des « Fusionner », le script gère que les fichiers dont il y a une modification !

La seconde chose, c’est qu’il faut être conscient que c’est un script qui synchronise deux emplacements. Cela veut dire que s’il y a trois fichiers lorsque l’on réalise le premier backup, que l’on supprime le premier fichier de la source, que l’on crée un quatrième fichier et qu’on relance le script, il n’y aura dans la destination que le deuxième, le troisième et le quatrième fichier. La destination est une copie parfaite de la source à un moment t. Il ne gardera pas tous les fichiers (même s’il est possible de modifier le fonctionnement du script pour, mais ce n’était pas le résultat que je souhaitais).

Un exemple authentique

Pour vous donner un exemple plus concret, je vous présente ma façon d’utiliser le script que j’ai réalisé.

J’ai un ordinateur fixe contenant tout mes fichiers personnels. Il s’agit de ma source pour le script.

J’ai deux disques durs externes, DDE1-1000GB et DDE2-1000GB, que j’utilise pour mes sauvegardes avec chacun un container TrueCrypt de 900GB. Il s’agit de mes destinations pour mon script.

J’ai d’abord réalisé une sauvegarde complète (premier lancement du script) sur les deux disques durs externes, afin d’avoir les mêmes bases. Puis je garde un des disques durs dans un autre lieu que celui où j’ai mon ordinateur fixe, de tel façon à ce qu’il soit à l’abri en cas de vol ou de désastre.

Ensuite, tous les X temps, je lance mon script qui synchronise mon ordinateur fixe avec un des deux disques durs externes que j’échange avec l’autre disque dur (gardé en lieu sûr) pour l’avoir sous la main si j’ai perdu quelque chose et réaliser la prochaine sauvegarde.

Avec ce système, j’ai donc mon ordinateur fixe qui a ses données à l’instant t, un disque dur avec la copie des données de l’ordinateur fixe à l’instant t-1 et un autre disque dur avec la copie des données de l’ordinateur fixe à l’instant t-2 que je garde dans un autre lieu que les deux autres.

Cela me permet en tout temps de récupérer des données que j’aurais perdues ou effacées, et tout cela, encrypté !

Compatibilités

Mon système principal étant Linux (Debian), le script a principalement été testé sur ce système. Mais j’ai quand même fait mes tests sur Windows 7. Il faudrait faire des tests plus poussés sur Mac, mais je n’ai pas ce genre de configuration sous la main pour tester.

Le principe étant très simple, le script devrait fonctionner sur tous les systèmes juste en le modifiant un peu.

Mettre le système en place

Windows

Installer TrueCrypt

Pour cela, simplement se rendre sur truecrypt.ch/downloads et télécharger la version pour Windows.

Puis installer TrueCrypt.

Installer Cygwin

Cygwin est un programme qui fournit « une large collection d’outils open source qui permettent de fournir des fonctionnalités similaires à une distribution Linux sur Windows » (« Cygwin is a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows. »).

Le script utilisant des outils disponibles sur Linux, il est nécessaire d’installer ce programme pour pouvoir l’exécuter (mais c’est très facile :) )

Pour le télécharger, se rendre sur cygwin.com/install.html puis télécharger la version pour votre version de Windows (32bit/64bit – Pour vérifier cela, ouvrir le menu « Start », clic droit sur « Ordinateur » -> « Propriétés », puis « Type du système »).

Puis, lancer l’installation. Sélectionner « Install from Internet ».

cygwin-install1

Choisir le dossier d’installation et pour qui l’installer (laisser par défaut, sauf si vous savez ce que vous faîtes).

cygwin-install2

Choisir le dossier où sera téléchargé Cygwin avant l’installation.

cygwin-install3

Ensuite, « Direct Connection », sauf si vous souhaitez/devez utiliser un proxy.

cygwin-install4

Ensuite, sélectionner un site de téléchargement. Il s’agit là que d’un endroit où Cygwin devra télécharger ses fichiers, mais plus le serveur est proche de vous, plus ça sera rapide, en théorie. En ce qui me concerne, habitant en Suisse, je choisis le site de téléchargement http://mirror.switch.ch dans la liste puis « Suivant ».

cygwin-install5

Là, il faudra chercher un paquet à installer, « rsync ». Cliquer sur le petit ‘+’ de « Net », puis cliquer une fois sur rsync, puis « Suivant ».

cygwin-install6

Encore une fois « Suivant ».

cygwin-install7

Les fichiers se téléchargent (cela peut prendre du temps) et l’installation de Cygwin se poursuit. Cliquer sur « Terminer »

cygwin-install8

Récupérer le script

Le script est disponible sur GitHub, ici même: https://github.com/ludelafo/backup2tc

Pour récupérer le script, le plus simple est d’aller sur la page ci-dessus, puis en bas à droit, « Download ZIP », il suffit ensuite de décompresser l’archive quelque part sur l’ordinateur.

Le script est divisé en quatre fichiers: backup2tc, include_to_backup.conf, exclude_from_backup.conf et Backup.bat.

Le fichier backup2tc est à mettre dans sont à mettre dans C:\cygwin\usr\local\bin (emplacement par défaut de Cygwin pour Windows 32bit)

Les fichiers include_to_backup.conf et exclude_from_backup.conf sont à mettre dans C:\cygwin\usr\local\etc (emplacement par défaut de Cygwin pour Windows 32bit)

Le fichier Backup.bat est à mettre à portée de main, c’est lui qu’on lancera dès que l’on voudra faire un backup ! Le mettre donc sur le Bureau me paraît pas mal :)

Linux

Installer TrueCrypt

Pour cela, simplement se rendre sur truecrypt.ch/downloads et télécharger la version pour Linux (la version correspondant à votre machine (32bit/64 bit, en mode GUI (avec interface graphique)).

Ouvrir un terminal puis rendez-vous dans le dossier où il y a l’archive de TrueCrypt. Décompresser l’archive à l’aide de la commande suivante:

tar -xvf truecrypt-*-linux-x86.tar.gz

Puis exécuter le script à l’aide de la commande suivante:

./truecrypt-*-setup-*.sh

Une fenêtre s’ouvre, accepter la licence puis TrueCrypt est installé.

Récupérer le script

Le script est disponible sur GitHub, ici même: https://github.com/Tweak-Man/backup2tc

Pour récupérer le script, le plus simple est d’aller sur la page ci-dessus, puis en bas à droit, « Download ZIP », il suffit ensuite de décompresser l’archive quelque part sur l’ordinateur.

Le script est divisé en quatre fichiers: backup2tc, include_to_backup.conf, exclude_from_backup.conf et Backup.bat.

Le fichier backup2tc est à mettre dans sont à mettre dans /usr/local/bin

Les fichiers include_to_backup.conf et exclude_from_backup sont à mettre dans /usr/local/etc

Le fichier Backup.bat est à supprimer, il est nécessaire pour Windows, mais pas pour nous linuxiens.

Puis rendez le script exécutable à l’aide de la commande

chmod +x /usr/local/bin/backup2tc

Créer un container TrueCrypt

Maintenant que le système est mise en place, il faut créer un container TrueCrypt. Pour cela, lancer TrueCrypt puis « Create Volume ».

Une fenêtre s’affiche indiquant les différentes possibilités de TrueCrypt. Dans notre cas, la première est celle qui nous intéresse.

truecrypt1

Ensuite, il est possible de créer un container Standard ou Hidden (Caché). Un standard ira très bien (je n’ai pas encore eu l’occasion d’essayer ce type de container).

truecrypt2

Il s’agit maintenant de sélectionner l’endroit où l’on va créer le fameux container. Il faudra s’en souvenir, on en aura besoin plus tard.

truecrypt3

Viens la partie un peu plus technique. Il s’agit du type d’encryption que l’on souhaite utiliser pour notre container. En ce qui me concerne, j’ai toujours utilisé l’algorithm d’encryption Serpent-Twofish-AES et Whirlpool, me paraissant les plus sûrs et les plus difficiles à cracker (sauf si le mot de passe du container est ‘password’ bien sûr).

truecrypt4

Il s’agit maintenant de définir la taille du container. Utilisant une clé USB pour l’exemple, je créerai un container de 1GB, après, c’est selon les besoins.

truecrypt5

Vient le moment du mot de passe. Il y a plusieurs possibilités: le simple mot de passe ou le keyfile. Le keyfile est en fait un fichier qui permettra d’ouvrir le container. Par exemple, le fichier pourrait se trouver sur une clé USB. De cette façon, afin d’ouvrir le container, il faudra le disque dur et la clé USB contenant le keyfile.

Le plus simple restant le mot de passe, parce que si vous perdez le keyfile, vous ne pouvez plus du tout accéder au container.

truecrypt6

Il faut maintenant définir le type de système de fichiers que le container sera. Pour les personnes sous Windows, NTFS est sans doute la meilleure solution. Avant d’appuyer sur « Format », il faut bouger la souris pendant 2 à 3 minutes. Cela augmente la force cryptographique (et non cryptonite) de l’encryption. Puis « Format ».

truecrypt7

Le volume se formate et se crée !

truecrypt9

Modifier le script

Maintenant que nous avons tout ce qu’il nous faut (Cygwin pour Windows, TrueCrypt, le script et un container TrueCrypt), on peut passer à la configuration du script.

Comme dit plus haut, le script est divisé en quatre fichiers: backup2tc, include_to_backup.conf, exclude_from_backup.conf et Backup.bat.

Le fichier backup2tc est le script principal. C’est lui qu’il faut modifier pour l’emplacement du container TrueCrypt, la source à sauvegarder et la destination.

Les chemins sont différents selon si vous êtes sous Windows, Linux ou MacOS.

Sous Windows, utilisant Cygwin, il est nécessaire d’utiliser la syntaxe suivante:

/cygdrive/lettre de votre disque dur externe/un\ dossier/le_fichier_truecrypt.tc

Ce qui pourrait donner ça:

TRUECRYPT_FILE_PATH = "/cygdrive/d/Mes\ Fichiers/MonBackup.tc"

Et sur Linux, ça donnerait ça (varie selon les distributions):

TRUECRYPT_FILE_PATH = "/media/ludovic/Mon-DDE/Mes\ Fichiers/MonBackup.tc"

Les fichiers à sauvegarder et à exclure sont dans deux fichiers différents: include_to_backup.conf et exclude_from_backup.conf.

C’est dans ces fichiers qu’il faudra ajouter des dossiers à inclure ou à exclure selon vos besoins.

Par exemple, le fichier include_to_backup.conf pourrait contenir ceci:

# Formatage pour Windows 
/cygdrive/c/Users/Ludovic/Desktop
/cygdrive/c/Users/Ludovic/Documents
/cygdrive/c/Users/Ludovic/Downloads
/cygdrive/c/Users/Ludovic/Music
/cygdrive/c/Users/Ludovic/Pictures
/cygdrive/c/Users/Ludovic/Videos

Et le fichier exclude_from_backup.conf, ceci:

# Formatage pour Windows
/cygdrive/c/Users/Ludovic/Desktop/Tmp

De cette façon, le script sauvegardera tous les fichiers personnels de l’utilisateur, mais exclura, parmi les fichiers inclus, le dossier ‘Tmp’ du dossier Desktop.

Sous Linux par exemple, il serait possible de définir le fichier include_to_backup.conf de cette sorte:

# Formatage pour Linux
/home/ludovic

Et le fichier exclude_from_backup.conf ceci:

# Formatage pour Windows
/home/ludovic/.config
/home/ludovic/Downloads

Le fichier Backup.bat est nécessaire pour les environnements Windows afin d’exécuter le script. Il n’y a rien à modifier ou toucher (en principe).

Si l’on reprend mon exemple d’avant (mon container de 1GB), voici à quoi devra ressembler le script:

[...]
TRUECRYPT_FILE_PATH="/cygdrive/f/Backup.tc" # File path to the TrueCrypt container

MOUNT_POINT="/media/TrueCrypt" # TrueCrypt container's mount destination
WINDOWS_MOUNT_POINT="Z:" # Windows's mount point's letter

FOLDERS_TO_BACKUP="/usr/local/etc/include_to_backup.conf" # Sources
FOLDERS_TO_EXCLUDE="/usr/local/etc/exclude_from_backup.conf" # Folders to exclude inside the sources folders
DEST_FOLDER="Backups" # Destination

# Change the path to TrueCrypt
LINUX_TRUECRYPT_LOCATION="/usr/bin/truecrypt" # Linux - File path to Truecrypt
WINDOWS_TRUECRYPT_LOCATION="/cygdrive/c/Program\ Files/TrueCrypt/TrueCrypt.exe" # Windows - File path to Truecrypt
MAC_TRUECRYPT_LOCATION="/Applications/TrueCrypt.app" # Mac OS - File path to Truecrypt
[...]

Mon fichier se situe dans /cygdrive/f/Backup.tc et je souhaite le monter sur la lettre Z: de Windows.

Mes fichiers include_to_backup.conf et exclude_from_backup.conf contiennent respectivement:

# include_to_backup.conf
/cygdrive/c/Users/Ludovic/TrueCryptDemo

et

# exclude_from_backup.conf
/cygdrive/c/Users/Ludovic/TrueCryptDemo/Exclude

Et voici le contenu du dossier:

$ ls -R TrueCryptDemo/
TrueCryptDemo/:
Exclude  file1  file2  file3

TrueCryptDemo/Exclude:
efile1

Je lance ensuite mon script à l’aide de Backup.bat pour Windows et à la ligne de commande pour Linux. Le mot de passe du container TrueCrypt est automatiquement demandé. Une fois entré, il suffit d’attendre quelques secondes avant d’appuyer sur ‘Enter’:

backup2tc1

Ensuite, supprimons un fichier ainsi que la ligne du fichier exclude_from_backup.conf pour voir ce qu’il se passe:

backup2tc2

Tout se synchronise !

Il suffit ensuite d’exécuter ce script de temps à autre, selon le nombre de données qui varie (car cela ne sert à rien d’exécuter le script tous les mois si le nombre de données modifiées est de plusieurs centaines par semaines) et vous deviez être tranquille concernant vos backups !

J’espère que ce script vous aura été utile afin de mettre en place, améliorer et/ou simplifier vos backups. N’hésitez pas à apporter des remarques, des commentaires ou encore à améliorer le script sur GitHub !

Pour être informé lorsque un nouvel article est publié, abonnez vous !

3 commentaires sur “Réaliser des backups encryptés facilement à l’aide de ce script

  1. Répondre m-systemes Le 4 / 05 / 2015 à 10 h 10 min

    Article très riche et à contenu très utile mais sa mise en application demande un niveau d’initiation plus avancé que celui d’un simple utilisateur informatique.

  2. Répondre Matieu Le 11 / 09 / 2015 à 17 h 11 min

    Merci pour le infos .
    Bonne continuation !!!

Laisser un commentaire