De l’importance de l’encre
0Ici nous n’allons pas parler d’encre ou d’imprimante mais de sauvegarde. Car qu’est-ce que l’encre si ce n’est la sauvegarde de nos paroles ?
Le souvenir qui fait encore mal
Je ne sais pas si comme moi vous aimez le jeu vidéo et avez joué à des jeux comme Diablo. J’ai personnellement adoré ce jeu même si à l’époque, j’avoue n’avoir rien compris aux dialogues tout en anglais. Mais je me souviens très bien, j’étais tellement pris par l’atmosphère, les ténèbres, l’action, l’angoisse que je ne pensais pas à sauvegarder ou que très rarement. En même temps, pour sauvegarder c’était assez fastidieux : déjà il fallait trouver un endroit tranquille, pas en pleine bataille entouré d’une cinquantaine de monstre, ensuite il fallait mettre le jeu en pause, choisir Save game, surtout faire très attention de ne pas écraser n’importe quelle sauvegarde et confirmer qu’on voulait bien écraser celle qu’on ne voulait plus (ou en créer une nouvelle). Ce qui fait au total beaucoup de touches pour ce que j’appellerai une fonctionnalité essentielle d’un jeu moderne. Et je me revois désespéré de devoir recommencer deux ou trois heures de jeu un bon nombre de fois, tout ça parce que j’avais pas pris le temps de mettre le jeu en pause, et sauvegarder mon aventure.
Leçon de vie
Bref qu’est-ce que j’ai retenu de tout ça ? Que la sauvegarde c’est essentiel pour avancer ! Et c’est exactement la même chose dans nos vies de programmeur. Tous les jours, nous écrivons des lignes et des lignes de codes, des scripts, de superbe classes qui font le café à la température parfaite, qu’il nous faut absolument sauvegarder ! J’ajouterais aussi qu’il faut qu’elle soit la plus simple possible voir complètement transparente, automatique.
Je pense qu’on est d’accord, n’est-ce pas ? Car on a tous une histoire similaire que ce soit avec les jeux vidéos, un disque dur qui crash avant la fin du rendu du projet à l’université, ou encore la perte de la toute petite clé USB qui était peut être un peu trop petite. On a tous eu ce moment où on s’est bien mordu les doigts.
A noter qu’ici, nous n’allons pas traiter de sauvegarde de partition mais seulement de celle de vos données. Bien évidemment il existe beaucoup de solutions de sauvegarde toute faite gratuite ou payante. Mais je vais vous proposer la solution la plus simple de sauvegarde rapide, pas cher et qui requiert un brin de programmation, ou pas.
Passons à la technique
Qu’est-ce qu’on a besoin ? ou en tout cas, qu’est-ce qu’on veut ? Une copie parfaite (mirroir) de nos dossiers importants vers un dossier de sauvegarde.
Windows
XP
Pour les malheureux qui utilisent encore Windows XP, la solution que je vous propose tient en deux parties : xcopy, et un script maison en Visual Basic Script.
xcopy /source /destination /E /H /R /Y /I /D
Alors voyons chacun des paramètres en détail :
- E : comme empty, signifie que tous les fichiers et sous-répertoires même vide seront copiés dans la destination,
- H : comme hidden, signifie que même les fichiers cachés et systèmes seront copiés,
- R : comme read-only, signifie que même les fichiers en lecture seule seront remplacés,
- Y : comme yes, signifie que le remplacement de fichier dans la destination se fera sans confirmation,
- I : comme initial, signifie que si la destination n’existe pas, un dossier sera créé automatiquement pour y stocker la copie,
- D : comme date, signifie qu’il ne remplacera que les fichiers mis à jour, en comparant les dates de dernière modifications.
La première fois que vous allez sauvegarder, ça prendra un temps conséquent car tout à copier, mais les fois suivantes seront beaucoup plus rapide, car seulement les fichiers modifiés seront copiés.
Cependant il manque une fonctionnalité à xcopy. Car avec le temps, on supprime, on déplace des fichiers, on renomme. Mais tout ces changements ne seront pas appliqués au dossier destination. Par exemple, vous avez sauvegardé votre dossier de photo de vacances, et vous avez décidé de faire le tri et de les classer dans différents dossiers pour chaque bar… ville visitée, dans votre dossier de sauvegarde, vous allez vous retrouvez avec toujours vos photos à la racine en plus de la nouvelle copie dans les dossiers bien rangée. C’est pourquoi nous avons besoin de la deuxième partie qui suit.
Function VerifMiroir( repSource, repDest )
Dim oFSO, oFl, oFld
Set oFSO = CreateObject("Scripting.FileSystemObject")
' Si le répertoire source et destination existent
If (oFSO.FolderExists(repSource) and oFSO.FolderExists(repDest)) Then
' Pour chaque sous-répertoire de destination
For each oFld in oFSO.GetFolder(repDest).SubFolders
' Si le répertoire existe dans source, alors on fait une récursion sur ce répertoire
If oFSO.FolderExists( (repSource & "\" & oFld.Name) ) Then
VerifMiroir (repSource & "\" & oFld.Name), oFld
' Sinon on le supprime, car il n'existe plus dans la source
Else
Wscript.Echo oFld
oFld.Delete True
End If
Next
' Pour chaque fichier dans destination
For each oFl in oFSO.GetFolder(repDest).Files
' Si le fichier n'existe pas dans source alors on le supprime
If not oFSO.FileExists( (repSource & "\" & oFl.Name) ) Then
Wscript.Echo oFl
oFl.Delete True
End If
Next
End If
End Function
Cette fonction en VBS s’appelle de cette manière :
VerifMiroir /source /destination
Et si vous mettez le tout dans un même fichier appelé miroir par exemple, vous pourrez l’exécuter de cette manière :
cscript miroir.vbs
Et voilà, une fois c’est deux exécutés, vous devriez avoir une copie parfaite de votre dossier source.
Vista, 7 et 8
Sur ces systèmes cités, nous avons la chance d’avoir un outil formidable qui s’appelle robocopy, qui remplace les deux scripts précédents.
robocopy /source /destination /MIR
L’option MIR, comme mirror, remplace tout simplement la fonction en VBS, et permet d’avoir une copie miroir de votre dossier source très facilement. Et c’est tout !
Mac et Linux
rsync, est en quelque sorte un équivalent de robocopy.
rsync -a --progress --delete /source /destination
Ici l’option a, comme archive, est un équivalent de l’ensemble des options utilisées avec xcopy, et permet d’inclure dans la sauvegarde les sous-répertoire de source, les liens symbolique, etc. L’option delete est un équivalent du MIR, et a pour effet de supprimer les fichiers ou dossiers dans destination qui ne sont plus dans la source.
Et voilà le tour est joué ;) J’ajouterai que robocopy et rsync sont aussi capables de faire des copies à travers le réseau et font des mise à jours différentielles. Par exemple vous êtes en train de monter une video HD pour votre chaîne Youtube, vous en faites une première sauvegarde puis après vous retravaillez la vidéo en ajoutant dix minutes de plus, ce seront seulement les données de ces 10 nouvelles minutes qui seront envoyés lors de votre prochaine sauvegarde. Vous faisant gagner un temps très précieux !
Astuces
Pour terminer, quelques astuces que j’utilise personnellement lorsque je travaille pour sauvegarder mes projets et mes données très sensibles :
- Si vous utilisez SVN en local, j’imagine que vous connaissez aussi Dropbox, Google drive ou encore One drive, et bien ce sont aussi de très bonnes solutions de sauvegarde SVN. Couplé avec Tortoise SVN sur Windows, qui a la fonctionnalité de pouvoir créer un repository sur votre disque dur directement, cela devient très simple et très efficace pour faire du versionning en local, tout en ayant une sauvegarde. Ceci seulement en mettez votre repository dans votre dossier dropbox (ou autre) et vous aurez du versionning (grâce à Tortoise) et une backup, qui plus est que vous pourrez partager avec d’autres et accéder de partout. (Notez bien que cette solution n’est pas adapté pour du travail collaboratif !)
- Nous avons tous sur notre disque dur des données sensibles : photocopie de carte d’identité, de diplôme, RIB ou autre. L’outil TrueCrypt (multi-plateformes) vous permet de stocker toutes ces données dans une partition virtuelle crypté, qui n’est qu’un fichier sur votre disque dur. Vous pouvez crypter avec un ou plusieurs mot de passe, voir aussi un fichier ! J’ajouterais, dans la même philosophie que précédemment, qu’il vous suffit de stocker le fichier qui contient vos données cryptées sur votre cloud et c’est gagné ! Données cryptées et sauvegardées.
Voilà, je vous invite à participer et à poster vos propres astuces aussi en commentaires, que j’hésiterais pas à ajouter dans cet article.






