Cet article ne relate pas une intervention chez un client, mais plutôt mon étude sur ce qu’il y a de mieux comme solution pour sauvegarder ses fichiers avec les meilleurs outils du moment (Octobre 2022).

Détails sur l’espace de stockage en ligne Storj:

  • Cloud décentralisé: Un fichier uploadé sur Storj est divisé en 80 pièces qui sont réparties sur certains des 13500 nœuds (serveurs) du système eux-mêmes répartis dans 90 pays.
  • Rapidité de téléchargement: les segments du fichier téléchargé sont récupérés en parallèle sur les nœuds les plus rapides et les plus proches.
  • Résilience des données: seuls 29 segments du fichier sur 80 sont requis pour reconstituer le fichier, un audit continu des nœuds déplace automatiquement les segments de fichier vers un autre nœud en cas de défaillance.
  • Cout du download de 1TO = 7$ . Pas de surcoûts cachés lors d’opérations spéciales (I/O, suppressions etc.).
  • Choix géographique des nœuds (Europe etc..) pour respecter les exigences de conformité et de confidentialité des données.
 

Détails sur la solution de backup Duplicacy:

  • La seule solution à ce jour pour dédupliquer les données sur plusieurs PC.
  • Un backup en cours sur un PC n’empêche en rien les autres backups qui se lancent en même temps sur d’autres PC (ni d’ailleurs les nettoyages de versions ou vérification de backup (technologie Lock Free deduplication): Les différents accès sont réellement simultanés.
  • Sauvegarde les fichiers verrouillés en utilisant Volume Shadow Copy.
  • Pas de base de données: Backup plus robuste.
  • Comme beaucoup de solutions de sauvegarde, Duplicacy propose: le backup incrémental et basé sur des blocks dont seules les parties d’un fichier segmenté modifié sont traités (mode Delta), la compression, le chiffrage, la déduplication (mais plus poussée comme dit plus haut).

Environnement de test

  •  Sous Windows 11, avec un dossier de travail important à sauvegarder placé dans C:\SourceDuplicacy1.
  • Le dossier de sauvegarde principal est sur E:\ CibleDuplicacy1; Disque dur externe en USB3.
  • Le dossier de sauvegarde secondaire est en ligne sur l’espace cloud Storj https://www.storj.io/storj-home sur un compte gratuit de 150GO.
  • L’effet voulu ici n’est pas de sauvegarder le disque système en entier, comme Macrium, Ghost etc.. Duplicacy n’est pas fait pour ça; Mais de protéger ses fichiers personnels ( y compris des bases de données, les fichier eml ou pst d’Outlook ou Thunderbird).

Installer Duplicacy

Façon de parler car Duplicacy n’est pas un programme avec installeur.

Télécharger Duplicacy dans C:\Duplicacy Lien https://duplicacy.com/download.html . Les commandes sont expliquées ici Home · gilbertchen/duplicacy Wiki · GitHub.

Renommer L’exécutable en « Duplicacy » pour simplifier les manips.

Rajouter Duplicacy en tant que variable d’environnement (pour lancer Duplicacy depuis n’importe quel dossier) :
Clic droit sur menu Démarrer > Exécuter > Taper sysdm.cpl > Bouton Variables d’environnement
Et Dans « Variables système » , sélectionner « Path » puis bouton « Modifier » > Nouveau > Renseigner le chemin C:\Duplicacy.

Choisir le dossier à sauvegarder et le dossier de sauvegarde

Par commodité, je nommerais par la suite la « source » comme le dossier à sauvegarder et la « cible » comme le dossier de stockage qui accueillera les sauvegardes. 

Menu Démarrer> Taper CMD et choisir « Invite de commande en mode Administrateur »

Taper CD /D Chemin-vers-dossier-a-sauvegarder. Dans cet exemple:

				
					CD /D C:\SourceDuplicacy1
				
			
				
					Duplicacy init -storage-name cible1 travail E:\CibleDuplicacy1
				
			
  • /D: Pour rendre le dossier actif
  • init: Créé une liaison entre dossier source et dossier cible
  • -encrypt: L’option n’est pas comprise dans mon script car je fais un backup en local. Chiffre le backup avec une clef à rentrer manuellement après la commande
  • -storage-name: Le nom de la cible , Il vaut mieux utiliser un nom sans accent, espaces et caractères spéciaux
  • travail: est le nom unique (ID) de la source
  • E:\CibleDuplicacy1 est le chemin vers la cible

Première sauvegarde vers E:\CibleDuplicacy1:

				
					Duplicacy backup -storage cible1 -vss -stats

				
			
  • -storage: Cette option est suivie par le nom de la cible
  • -vss: Sauvegarde aussi les fichiers en cours d’utilisation (ex un document Excel ouvert dans le dossier sauvegardé sera traité)
  • -stats: Affiche le déroulement du backup dans le terminal 
 
NB: Si on doit fermer une base de données ou autres opérations avant et après le backup, il est possible de lancer des commandes pré/post script Pre Command and Post Command Scripts · gilbertchen/duplicacy Wiki · GitHub
Pour des pré/post scripts du backup les termes sont pre-backup et post-backup.

Deuxième sauvegarde de sécurité sur le stockage en ligne Storj:

Ajout du 2e dossier de sauvegarde à la configuration:

  • Créer un compte Storj ici: https://www.storj.io/storj-home
  • Pour accéder aux serveurs eu Europe, choisir le pool Eu1
  • Le nom du bucket sera cible2.
  • Clic sur Access> Create s3 Credentials, cocher Access Grant . Permissions: ALL Buckets; ALL Duration;  Puis clic sur Create Keys.
 
NB: Le guide de duplicacy montre une configuration basée sur un « Access » via une connexion « API Key »: J’ai testé et pour l’instant ça ne fonctionne pas. La méthode via « S3 Credentials »; Qui émule une liaison S3 type Amazon est -par contre- fonctionnelle. Storj chiffre par défaut les backup, donc là aussi il n’y aura pas l’utilité de rajouter la commande -encrypt au script.

Bien noter le PassPhrase, Access Key et Secret Key. 

La nomenclature pour renseigner l’accès au backup est s3c://<pool geographique>@gateway.storjshare.io/<nom-du bucket> ce qui donne dans l’exemple.

				
					Duplicacy add cible2 travail s3c://eu1@gateway.storjshare.io/syncusb
				
			

Explications: On rajoute (add) à la source (travail) une option de sauvegarde (cible2) dont la destination de backup est une url inspirée de celle donnée par Storj lors de la config de ce dernier.

L’invite propose de rentrer le S3 access key ID (Access key) puis la S3 secret key. Pour que Duplicacy mémorise les identifiants voilà comment faire: (NB Si les clefs contiennent des espace, les mettre en parenthèses)

				
					duplicacy set -storage cible2 -key s3_id -value "la clé Access Key"

				
			
				
					duplicacy set -storage cible2 -key s3_secret -value "La clef secrète"
				
			

Ainsi les clefs seront enregistrées dans le fichier de config de duplicacy (Pour cet exemple dans C:\SourceDuplicacy1\.duplicacy\preferences). Pour d’autres accès Cloud, si vous préférez sauvegarder en SFTP ou autres voilà la page d’explication:https://github.com/gilbertchen/duplicacy/wiki/Managing-Passwords.

Copier le backup local (cible1) sur le stockage cloud storj (cible2):

On pourrait lancer un « Duplicacy backup -storage cible2 » mais Duplicacy devrait alors relancer son algorithme.. Une opération potentiellement couteuse en temps CPU  qui -si on modifie les fichiers entre-temps- pourrait amener à une différence entre les backups.

Au lieu de ça Duplicacy à prévu l’option copy; beaucoup plus rapide. De plus copy est accompagnée d’une vérification du backup (« check »;  qu’on verra plus loin).

				
					Duplicacy copy -from cible1 -to cible2 -id travail -threads 4 -download-threads 4


				
			
  • -threads: Envoi en parallèle 4 segments de fichiers
  • -download-threads: Pareil mais pour la réception
 
Mes test avec la commande Benchmark indiquent qu’un parallélisme de 4 flux donnent les meilleurs résultats. cf l’option ici benchmark · gilbertchen/duplicacy Wiki · GitHub.

Lister et restaurer les fichiers

Un développeur externe a mis en ligne sur Github un moyen de monter une ou plusieurs révisions d’une sauvegarde: c’est un duplicacy modifié et non officiel . Un « montage » permet de créer un dossier virtuel dans l’explorateur Windows qui montre les dossiers et fichiers de telle ou telle révision: C’est plus ergonomique que de lister avec l’invite de commande.

Avant tout; Installer l’utilitaire WinFsp Download · WinFsp. L’installation se fera par défaut sans cocher les options additionnelles, en mode Admin bien sûr:

Télécharger la version de duplicacy qui permet le montage Releases · davidrios/duplicacy (github.com) (Rubrique Assets). Puis on dezippe le dossier compressé. On se retrouve avec un exécutable nommé simplement « Duplicacy.exe ».

On pourrait remplacer le duplicacy d’origine dans C:\Duplicacy par celui-ci mais je conseil de garder l’original et de simplement renommer le nouveau duplicacy en duplicacy-mount. Désormais dans C:\Duplicacy on a les deux exécutables. 

NB: Comme pour Duplicacy on peut « appeler » Duplicacy-mount depuis n’importe quel dossier en invite vu qu’il est lui aussi dans le dossier configuré en Variable système.

Au début j’ai eu des soucis pour faire fonctionner le montage; J’ai dû désactiver mon antivirus qui stoppait ou ralentissait l’exécution du script. Je conseille de ne monter qu’une seul révision de backup ou bien un nombre limité.

Cela impose de lister les révisions:

				
					CD /D C:\SourceDuplicacy1
Duplicacy list -id travail -storage cible1
				
			

NB: On peut remplacer « cible1 » par « cible2 » pour afficher les révisions du backup cloud sur Storj.

On a là 24 révisions datées: Imaginons qu’on veut monter la révision 10 et la révision 15 (on n’est pas certain du jours où une modif/suppression non souhaitée a été faite). 

Par contre on lance l’exécutable duplicacy-mount.exe cette fois.

Le point de montage sera E:\mount, pour l’occasion un dossier « mount » sera créé automatiquement sur E:\ avec dedans les sous-dossiers datés contenant les backups correspondants. La commande:

				
					Duplicacy-mount mount -revisions 10,15 -flat -storage cible1 E:\mount
				
			
  • revisions: c’est bien « revisions », et pas seulement r comme avec le duplicacy d’origine
  • -flat: classe chaque révision dans un seul dossier de nom « Année-mois-jour-heure-minute-n°X ». Sans cette option les révisions sont classées ainsi: Dossier Année> Sous-dossier mois> Sous dossier etc…
  • -storage: la cible1 qui correspond pour rappel au dossier de stockage E:\CibleDuplicacy1. Vous pouvez remplacer cible1 par cible2 pour monter les révisions sous Storj sans craindre de surcoût pour téléchargement (Cf explications plus loin)
  • E:\mount: le point de montage (attention qu’il y ait assez d’espace libre)

Et voilà dans l’explorateur Windows ce qui devrait apparaître; 

Les fichiers ne sont pas réellement téléchargés dans le point de montage; Malgré tout lorsqu’on clic droit sur un fichier pour en connaitre la taille, celle-ci est exacte, et l’espace pris par chaque dossier de révision est identique à la réalité; On peut comparer cette notion à la fonction de Onedrive « Fichiers à la demande ».

On comprend pourquoi il ne vaut mieux pas lancer la commande Mount sans préciser les révisions: Dans ce cas, Mount récupère toutes les révisions et le disque dur serait vite rempli ! 

Reste à copier-coller les fichiers perdus au bon endroit. A cette effet, les fichiers seront réellement téléchargés dans le dossier choisit pour les accueillir.

Pour supprimer les montages et vider les dossiers de révision: Fermer l’invite de commande ou taper Touches Windows+C.

NB: Pour comparer les dossiers vous avez WinMerge: gratuit, français et Open-Source.

Restaurer sur un autre PC

Imaginons que le PC a été volé ou que le disque est HS; On peut très bien lancer une restauration depuis un autre PC, mais seulement après avoir « réinstallé » Duplicacy sur le nouveau PC en suivant les chapitres 2 et 3 .

NB: Si on ne se souvient pas de l’ID du backup (ici c’est travail) ; il est visible dans E:\CibleDuplicacy1\snapshots.

Et si -en plus d’avoir le PC d’origine en rade ou subtilisé- le dossier cible1 est HS, alors, il faut en plus initialiser le stockage de backup secondaire Storj puis lancer la restauration (et voir un marabout après). 

				
					CD /D C:\SourceDuplicacy2
Duplicacy init -storage-name cible2 travail s3c://eu1@gateway.storjshare.io/syncusb
				
			

Evidemment la reconnexion au bucket Storj redemandera les clefs de sécurité.

				
					Duplicacy-mount mount -revisions 10,15 -flat -storage cible2 E:\mount
				
			
				
					Duplicacy restore -r 10
				
			

Alerte mail en cas de problème

Il faudrait que:

  • Si le backup se déroule bien, on ne soit pas prévenu par mail.
  • Si Duplicacy signale une erreur de backup, un mail d’alerte soit envoyé.
  • Si pendant un certain temps, aucune notification de backup, qu’il soit réussi ou pas n’est émis, on soit alerté. Exemple: Duplicacy n’arrive plus à se lancer suite à une MAJ Windows; le zèle de votre antivirus, Utilisateur qui a supprimé le dossier abritant Duplicacy, etc..
 

C’est exactement ce que propose le service en ligne HealthChecks.io ! Je créé un compte (gratuit pour 20 « Jobs ») et je créé un « Check ». Ici on suppose que le backup se déroule quotidiennement, et qu’une alerte mail doit être lancée au bout de 2 jours sans notification de backup réussi ou échoué.

Depuis le menu Intégration on choisit la notification par Email puis l’@ mail de notification. 

« A check go down » : Après deux jours sans que HealthChecks.io ne reçoive de notification de Duplicacy d’aucune sorte, un mail d’alerte est envoyé. 

« A check goes up » : Si, après deux jours sans notification de backup réussi ou raté, HealthCheks reçoit une notif de backup réussi, il envoie un mail d’alerte pour partager la bonne nouvelle.

A noter dans la section Intégration le nombre imposant d’autres méthodes de notification (SMS, pushover…).

Utiliser HealthCheks.io ajoute une grande robustesse au suivi du déroulement des sauvegardes, mais impose l’inconvénient suivant: Si le PC, serveur.. qui exécute Duplicacy est éteint (congés, réparation, etc..) la période de grâce (Grace Time) sera dépassée et vous recevrez des mails comme quoi le backup est en erreur; On peut mettre en pause HealthCheks mais ce sera de façon manuelle.

En revenant sur l’onglet Check, on remarque une URL de type https://hc-ping etc. C’est l’url qu’on va utiliser pour « pinger » le service Healthchecks.io au travers d’un script batch. Ce batch interprètera les stats et la variable errorlevel de duplicacy après backup.

Voilà pour le paramétrage de Healthcheks.io… Mais comment les notification arrivent dessus? C’est ce qu’on va voir.

Lancement automatique du backup et alertes

Script Batch

Duplicacy ne se concentre que sur la sauvegarde; Les fonctions annexes comme la notification mail ne sont pas suffisamment implémentées donc il faut coder un peu pour pallier cette lacune. Le script batch (Extension .bat) suivant est à placer où l’on veut mais dans l’exemple je l’enregistre dans Mes Documents. Je le nomme BackupSourceDuplicacy.bat.

Ce script utilise l’URL de notification HealthChecks.io: Si le backup s’est bien passé le script « ping » cette url et aucun mail n’est envoyé au responsable des sauvegardes. Si erreur, l’URL est modifiée en rajoutant  » /fail » à la fin de l’URL. HealthCheks comprend alors qu’il y a un problème et enverra un mail d’alerte.

NB: Pour utiliser la fonction curl comme ici, il faut un Windows 10 ou 11 à jour.

J’ai constaté des lenteurs lors de la 1ère sauvegarde; Et le log m’indiquait que certains fichiers n’avaient pas été sauvegardés.. Après investigation c’était l’antivirus Microsoft Defender qui ralentissait le backup et empêchait le traitement d’exécutables potentiellement malveillants ou vérolés, alors que les exécutables en question sont mes outils pour retrouver des identifiants oubliés; J’ai donc créé une exclusion dans Defender pour C:\Duplicacy\Duplicacy.exe.

				
					@echo off
REM pour que le script s execute sans s afficher

CD /D C:\SourceDuplicacy1
REM on se place en invite dans le dossier source

Set LogCible1="C:\Users\%USERNAME%\Documents\BackupLogCible1Duplicacy.txt"
REM Initialisation de la variabe LogCible1
REM le log du backup sera enregistre dans le dossier Document de l utilisateur

REM **************************************** Lancement du backup vers la cible 1 (E:\CibleDuplicacy1)

Duplicacy -log backup -threads 4 -storage cible1 -vss -stats > %LogCible1%
REM lance le backup vers cible1 et rempli le fichier texte de log avec les stats du backup


Set ErrorCible1Duplicacy=%Errorlevel%
REM Initialisation de la variable ErrorCible1Duplicacy qui prend la valeur de Errorlevel
REM Duplicacy cree automatiquement une variable nommee Errorlevel qui contient le code erreur au terme du backup
REM codes erreurs duplicacy:
REM 1:   Commande arretee par l utilisateur
REM 2:   Commandes malformees
REM 3:   Valeurs de commande invalides
REM 100: Limite de temps atteinte (generalement du à une erreur de connection)
REM 101: Erreur due a une dependance manquante du programme Duplicacy
REM 0:   Drole de code d erreur car 0 signal que le backup a reussi

REM On traite les codes erreurs de Duplicacy
REM Si la variable ErrorCible1Duplicacy est egale a un code d erreur, on lance un "ping" d alerte sur Healthcheck.io
REM en rajoutant a l URL de ping /fail
if %ErrorCible1Duplicacy%==1   curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur Backup cible1 arrete par utilisateur - Code erreur Duplicacy 1"
if %ErrorCible1Duplicacy%==2   curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur Backup cible1 sur script errone - Code erreur Duplicacy 2"
if %ErrorCible1Duplicacy%==3   curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur Backup cible1 sur valeurs des commandes - Code erreur Duplicacy 3"
if %ErrorCible1Duplicacy%==100 curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur Backup cible1 due a pbm connexion ou storage faux - Code erreur Duplicacy 100"
if %ErrorCible1Duplicacy%==101 curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur Backup cible1 due a une dependance manquante du programme Duplicacy - Code erreur Duplicacy 101"

REM Findstr est un outil qui va chercher du texte dans un fichier (ici BackupLogCible1Duplicacy.txt)
REM La recherche est insensible a la casse (/I) et aux variations ex. errors au lieu de error
findstr /I "failed failure error incomplete missing killed SKIP_FILE" "C:\Users\%USERNAME%\Documents\BackupLogCible1Duplicacy.txt"

REM Duplicacy et findstr utilisent la meme variable %Errolevel% pour memoriser le résultat de leur commande
REM je suis donc oblige de proteger sa valeur de l effacement en l enregistrant dans une variable 
REM nommee ErrorCible1Findstr pour créer la suite du script
Set ErrorCible1Findstr=%Errorlevel%
REM code erreurs de findstr:
REM 0: un ou plusieurs mots recherches ont etes trouves
REM 1: Aucun mot trouve

REM Si Duplicacy signale un backup reussi ET que findstr trouve un ou plusieurs mots recherches 
REM dans le log de duplicacy
if %ErrorCible1Duplicacy%==0 if %ErrorCible1Findstr%==0 curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur Backup cible1 - Le log contient des termes qui signalent un backup defaillant"

REM Si Duplicacy signale un backup reussi ET que findstr ne trouve pas les mots signalant des defaillances de backup
REM Alors le backup est reussi l URL de ping ne contiendra pas /fail
REM Les 2 conditions doivent etre reunies
if %ErrorCible1Duplicacy%==0 if %ErrorCible1Findstr%==1 curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec --User-Agent "%Computername%" --data "Succes Backup cible1 aucun probleme signale"




REM **************************************** Lancement du backup de copie vers la cible 2 (Cloud Storj)

REM la suite est simple c est presque un copier coller des commandes precedentes

Set LogCible2="C:\Users\%USERNAME%\Documents\BackupLogCible2Duplicacy.txt"
Duplicacy -log copy -from cible1 -to cible2 -id travail -threads 4 -download-threads 4 > %LogCible2%
REM la commande copy n accepte pas l option -stats
Set ErrorCible2Duplicacy=%Errorlevel%

if %ErrorCible2Duplicacy%==1   curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur copie cible2 arrete par utilisateur - Code erreur Duplicacy 1"
if %ErrorCible2Duplicacy%==2   curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur copie cible2 sur script errone - Code erreur Duplicacy 2"
if %ErrorCible2Duplicacy%==3   curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur copie cible2 sur valeurs des commandes - Code erreur Duplicacy 3"
if %ErrorCible2Duplicacy%==100 curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur copie cible2 due a pbm connexion ou storage faux - Code erreur Duplicacy 100"
if %ErrorCible2Duplicacy%==101 curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur copie cible2 due a une dependance manquante du programme Duplicacy - Code erreur Duplicacy 101"

findstr /I "failed failure error incomplete missing killed SKIP_FILE" "C:\Users\%USERNAME%\Documents\BackupLogCible2Duplicacy.txt"
Set ErrorCible2Findstr=%Errorlevel%

if %ErrorCible2Duplicacy%==0 if %ErrorCible2Findstr%==0 curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec/fail --User-Agent "%Computername%" --data "Erreur copie cible2 - Le log contient des termes qui signalent un backup defaillant"
if %ErrorCible2Duplicacy%==0 if %ErrorCible2Findstr%==1 curl https://hc-ping.com/45fc8152d-4d24-443f-8648-5c10deb0b2ec --User-Agent "%Computername%" --data "Succes copie cible2 aucun probleme signale"

				
			

A la fin du script on peut rajouter une commande qui efface les fichiers texte « BackupLogCible etc…txt ». Mais je n’ai pas mis ces lignes de code dans le script batch; Les fichiers de log sont utiles pour vérifier si tout se passe bien.

				
					DEL /F /Q "C:\Users\%USERNAME%\Documents\BackupLogCible1Duplicacy.txt"
DEL /F /Q "C:\Users\%USERNAME%\Documents\BackupLogCible2Duplicacy.txt"
				
			

Tâches planifiées Windows

Menu Démarrer puis rechercher « Tâches planifiées »> Créer une tâche. Les options principales que j’ai activées:

  • Onglet action: Chemin vers le script de backup BackupSourceDuplicacy.bat.
  • Général: Exécuter avec les autorisations maximales .
  • Général: Exécuter même si l’utilisateur n’est pas connecté (mot de passe compte Admin Windows demandé).
  • Conditions: Sortir le PC de la veille pour exécuter cette tâche .

Scripts pour vérifier le backup et nettoyer les révisions

Je place ces deux scripts dans le même dossier que le script de backup. Le script de vérification s’appelle DuplicacyCheckAllCibles.bat et celui de nettoyage DuplicacyDelRevsAllCibles.txt.

Et pour les deux tâches planifiées dont je ne détaille pas ici la création (il suffit de s’inspirer de la tâche de backup), je les paramètrent pour que le script de Check s’exécute avant le script de nettoyage. L’option « Exécuter avec les autorisations maximales » n’est pas requis.

Le script pour vérifier les deux backups à la suite.

				
					@echo off

CD /D C:\SourceDuplicacy1

REM On verifie les deux support de stockage de sauvegarde en local et sur Storj
Duplicacy check -id travail -storage cible1
Duplicacy check -id travail -storage cible2

				
			

Le script pour nettoyer les anciennes révisions des 2 backups.

Comme Duplicacy sauvegarde en mode incrémental, mode block delta et dédoublonne les fichiers, on peut garder un nombre considérable de révisions! Ici pour les deux backups je m’autorise à garder des versions sur un an.

				
					@echo off

CD /D C:\SourceDuplicacy1

Duplicacy prune -id travail -storage cible1 -keep 0:360 -keep 7:30 -keep 1:7

REM prune (oui..) est la commande de nettoyage
REM keep: Suivi des delais et nombre de rétention

REM explication de la commande -keep:
REM keep 0:360 Pour les versions de plus de 365 jours: effacer
REM keep 7:30  Pour les versions de + de 30 jours garder une seule révision tous les 7 jours
REM keep 1:7   Pour les versions de + de 7 jours garder une seule version par jour
REM l ordre chronologique du script est important

REM ne reste qu a faire de meme pour la cible 2

Duplicacy prune -id travail -storage cible2 -keep 0:360 -keep 7:30 -keep 1:7

				
			

Le plus important

Je voulais finir avec la notion la plus importante: Faites des tests en réel de l’intégrité du backup en le restaurant intégralement, une fois par quinzaine ou par mois: On ne compte plus le nombre de particuliers, Sociétés qui ont tout perdu car les sauvegardes automatiques ne se lançaient pas pour X raisons au bout de plusieurs mois (MAJ Windows, connexion réseau plus reconnue…). Rien ne dit que le service HealthCheks est 100% fonctionnel, mais c’est comme tout… Récupérer ses données vitales après crash est tellement important qu’on ne peut faire confiance à aucun service ni programme.

Et même la commande Duplicacy check n’est pas à 100% sûr car elle se contente de lire le nom des blocks sans se préoccuper de voir si les fichiers correspondants sont détériorés: Cette faiblesse n’est pas propre à Duplicacy; Tous les logiciels de backup (en tout cas basés sur le Cloud) font de même avec leur fonction de vérification, sinon il faudrait que le Check télécharge l’entièreté du backup!