Créez un script de sauvegarde automatisé

Vos outils de diagnostic sont désormais opérationnels et l'équipe technique a retrouvé le sourire grâce à vos synthèses instantanées. Vous avez réussi à dompter le flux massif d'informations généré par nos serveurs !

Avoir des outils performants est une excellente chose, mais s'assurer de ne jamais rien perdre est le véritable pilier d'une infrastructure saine. Votre nouvelle mission est donc d'assurer les arrières de l'équipe. Vous allez maintenant concevoir un script de sauvegarde robuste, capable d'archiver vos dossiers critiques, de laisser une trace de ses actions, et d'être planifié pour s'exécuter de manière totalement autonome.

Analysez les besoins d’un script de sauvegarde

Avant de vous précipiter sur votre clavier pour taper des commandes de copie, prenez un instant pour réfléchir. Arthur, votre référent technique, rappelle souvent une réalité de notre métier :

Une sauvegarde n'a aucune valeur en soi. Ce qui a de la valeur, c'est la restauration. Si l'archive est introuvable, mal nommée ou corrompue, c'est comme si on n'avait rien fait.

La conception de votre script ne doit pas être dictée uniquement par la technique, mais avant tout par le besoin métier. Dans notre cas, ce besoin est très concret : l'équipe compte sur vous pour mettre à l'abri votre dossier de travail, celui-là même qui contient les précieux scripts d'automatisation que vous venez de créer, ainsi que les logs du serveur.

Pour que votre outil soit véritablement utile à l'équipe en cas de crise, vous devez définir son comportement en amont :

  • La sauvegarde doit être reproductible et compréhensible : Tous les membres de l'équipe doivent pouvoir relancer l'outil et identifier instantanément le contenu d'une archive rien qu'en lisant son nom.

  • Le script doit gérer les chemins et les noms : Vous devez définir clairement d'où proviennent les données et où elles atterrissent. Une bonne pratique consiste à dater le nom de l'archive pour éviter d'écraser la sauvegarde de la veille.

  • Le script doit anticiper les erreurs : Que se passe-t-il si le disque de destination est déconnecté ou plein ? Le script doit gérer ces situations pour ne pas vous laisser croire à tort que vos données sont en sécurité.

Prendre le temps de définir ces critères garantit que votre outil fera exactement ce qu'on attend de lui le jour où le système s'effondre. Retenez bien cette première règle : un bon script commence par une analyse du besoin.

Archivez et compressez des données automatiquement

Votre manager vous a chargé de protéger votre dossier de travail, celui-là même qui contient les précieux scripts d'automatisation que vous venez de développer et les historiques d'activité (imaginons un répertoire nommé  scripts/  ). Maintenant que la cible est concrètement identifiée, il faut passer à l'action pour empaqueter vos données.

La méthode la plus courante sous Linux pour regrouper plusieurs fichiers et répertoires en un seul fichier de sauvegarde est d'utiliser la commande tar. La commande tar combine plusieurs options pour définir l’action à effectuer, comme la création de l’archive, sa compression ou le nom du fichier généré. En y ajoutant une option de compression, vous générez une archive (souvent avec l'extension  .tar.gz  ) qui occupe beaucoup moins d'espace sur votre disque, optimisant ainsi le stockage de vos historiques

Voyons comment écrire cela proprement dans un script.

Dans cette vidéo, on a :

  • automatisé la création et la compression d'une archivetar, idéale pour figer un instantané de vos fichiers à un instant T,

  • utilisérsyncpour maintenir une copie à jour de manière incrémentale (en ne copiant que les éléments modifiés), parfaite pour des synchronisations régulières.

 Votre manager tient à faire un rappel de sécurité crucial à toute l'équipe :

Ici, on automatise la création d'une archive, et c'est un excellent début. Mais attention : une vraie sauvegarde ne doit jamais rester sur le même disque que les données d'origine. Si le disque plante ou se fait compromettre, on perd la donnée ET l'archive ! Il faut toujours externaliser sa sauvegarde.

Enregistrez des logs et affichez un message clair

L’archive est générée et compressée, c'est parfait ! 

Mais que se passe-t-il si ce script s'exécute de manière autonome en pleine nuit et échoue en raison d'un espace disque insuffisant ?

Une sauvegarde qui échoue silencieusement n’est pas un bon scénario. Le jour où l'on cherche l'archive en urgence, on découvre qu'elle n'existe pas. Un script doit toujours laisser une trace de son exécution pour faciliter le suivi et le diagnostic.

Pour conserver un historique fiable, les redirections (  >,   >>  ,  2>) permettent d’enregistrer la sortie standard et la sortie d’erreur de vos commandes critiques directement dans un fichier log.

​​En combinant ces éléments, le script doit pouvoir vérifier le code de retour de la sauvegarde, afficher un message clair indiquant le succès ou l’échec à l'écran, et retourner un code cohérent pour l'automatisation.

Voici comment mettre cela en place :

#!/bin/bash

DOSSIER_SOURCE="scripts/"
NOM_ARCHIVE="sauvegarde_scripts.tar.gz"

tar -czf "$NOM_ARCHIVE" "$DOSSIER_SOURCE"
echo "La sauvegarde a été créée"

 Et voici le résultat : 

Grâce à cette structure, l'équipe ne naviguera plus jamais à l'aveugle. Un script utile doit fournir un retour clair à l’utilisateur et, si nécessaire, conserver une trace de son exécution. 

Rendez la sauvegarde relançable et automatisable

Votre script crée des archives et journalise ses actions. C'est un excellent outil ! Mais pour l'instant, c'est encore vous qui devez le lancer manuellement. La véritable automatisation consiste à le rendre capable de s'exécuter tout seul, par exemple en pleine nuit.

Pour qu'un script puisse être confié à un planificateur système, il doit respecter trois règles d'or :

  1. Être autonome : Il doit fonctionner sans aucune interaction utilisateur. Une commandereadqui attendrait une saisie au clavier bloquerait indéfiniment un script lancé en arrière-plan.

  2. Être idempotent (ou relançable) : Il doit pouvoir être exécuté plusieurs fois de suite sans provoquer de catastrophes (comme écraser une sauvegarde existante par erreur ou produire des résultats incohérents). C'est précisément pour cela que l'ajout d'un horodatage ($DATE) dans le nom de l'archive est crucial.

  3. Être vérifiable : L'équipe doit pouvoir confirmer que la sauvegarde s'est bien déroulée et que l'archive finale n'est pas vide, d'où l'importance vitale du fichierlogque vous venez de mettre en place.

  4. Une fois ces conditions remplies, votre script est prêt à être planifié ! Sous Linux, l'outil pour cette tâche s'appelle  cron. Il s'agit d'un planificateur qui permet de programmer l'exécution de votre script à des intervalles précis. Par exemple, tous les jours à 3h00 du matin : 

0 3 * * * /chemin/vers/votre/backup.sh

Gardez toujours cet objectif en tête lorsque vous concevez un outil pour votre infrastructure : un script prêt à être planifié est un script vraiment automatisé. Dans un environnement professionnel, on s’appuie souvent sur des outils de sauvegarde spécialisés pour aller plus loin, mais le script que vous venez de créer permet déjà de comprendre concrètement les principes essentiels d’une sauvegarde automatisée.

À vous de jouer 

Contexte 

Vous devez sécuriser des données de travail critiques pour l'équipe en mettant en place une sauvegarde reproductible. Un répertoire contenant quelques fichiers texte, nommé dossier_a_sauvegarder/, vous est fourni et servira de cible pour votre script. 

Préparation de l’environnement 

Avant de commencer, assurez-vous que le dossier est bien disponible (et décompressé) sur votre machine virtuelle et que votre terminal est positionné dans votre dossier personnel. Si besoin, référez-vous à la procédure de téléchargement décrite dans l'activité du chapitre “Créez des scripts Bash exécutables et réutilisables”.

Consignes 

Pour accomplir cette tâche et protéger le travail de l'équipe, suivez ces étapes :

  • À partir de ce répertoire, créez un script Bash réalisant sa sauvegarde.

  • Utilisez la commande taravec une option de compression afin de générer une archive unique du répertoire.

  • Assurez-vous d’indiquer un chemin correct vers le dossier à sauvegarder et vers l’emplacement de l’archive afin que la sauvegarde soit compréhensible et réutilisable.

  • Redirigez les sorties standard et d’erreur vers un fichier de log (par exemplehistorique_sauvegardes.log) afin de conserver une trace de l’exécution du script.

  • Affichez un message clair indiquant si la sauvegarde s’est déroulée correctement ou si une erreur est survenue.

En résumé 

  • La conception d’un script de sauvegarde commence par l’analyse des besoins afin de garantir des archives claires, datées, reproductibles et stockées dans un emplacement approprié pour faciliter leur restauration.

  • La commandetarpermet d’archiver et de compresser automatiquement des dossiers en un seul fichier, tandis quersyncconstitue une alternative efficace pour des sauvegardes incrémentales et régulières.

  • La journalisation avec les redirections>>et2>permet d’enregistrer les succès et les erreurs dans un fichier log, tandis que l’analyse du code de retour$?garantit un retour fiable sur l’état de la sauvegarde.

  • L’ajout d’un horodatage dans le nom des archives rend le script relançable sans écrasement des sauvegardes précédentes et facilite l’identification des versions.

  • Un script de sauvegarde devient pleinement automatisé lorsqu’il est autonome, fiable et planifié aveccron, ce qui permet d’exécuter les sauvegardes à intervalles réguliers sans intervention humaine.

 Au départ, les tâches chronophages s'accumulaient et des dizaines de commandes devaient être tapées manuellement dans le terminal chaque jour. Aujourd'hui, vous êtes capable de transformer ces actions répétitives en de véritables scripts Bash autonomes, intelligents et sécurisés.

Grâce à vous, Arthur et toute l'équipe technique gagnent un temps précieux. Vos outils permettent désormais d'analyser d'immenses fichiers d'activité en un clin d'œil, de réagir proprement face aux imprévus, et de sauvegarder les données critiques de manière automatisée. L'informatique travaille enfin pour l'équipe, et non l'inverse !

L'automatisation est une expertise qui s'affine avec la pratique. Ne vous découragez pas si vous oubliez un espace dans une condition ou si un script ne fonctionne pas du premier coup. Même avec de l'expérience, il arrive d’être bloqué par le système simplement après avoir oublié de rendre un nouveau fichier exécutable avec la commande  chmod +x! C'est tout à fait normal. L'important est d'avoir acquis cette logique implacable qui vous permet désormais de concevoir, de faire dialoguer et de corriger vos propres utilitaires.

Ever considered an OpenClassrooms diploma?
  • Up to 100% of your training program funded
  • Flexible start date
  • Career-focused projects
  • Individual mentoring
Find the training program and funding option that suits you best