Ajouter des scripts à un modèle de sauvegarde dans la console de gestion de l'appliance

Cette page explique comment ajouter des scripts à un modèle de sauvegarde. Il décrit les différentes phases qu'un script exécute lors d'un job de sauvegarde.

Vous pouvez écrire vos scripts et les exécuter pour effectuer une action au début, pendant ou à la fin d'un job de sauvegarde. On les appelle également scripts avant et après.

Emplacement des scripts

Un dossier de script est créé automatiquement lors de l'installation de l'agent, là où le système de fichiers ou la base de données à protéger sont en cours d'exécution. Pour exécuter les scripts, vous devez les placer dans les dossiers suivants :

  • Pour un hôte Windows : \Program Files\Google Cloud Backup and DR\scripts
  • Pour un hôte Linux : /act/scripts et définissez le script comme exécutable (chmod 755 *.sh).

Phases de script

Les scripts s'exécutent dans les phases suivantes. Si votre script ne s'exécute pas, vérifiez qu'il se trouve dans le dossier des scripts.

  • INIT : cette phase commence lorsque l'appliance de sauvegarde/récupération se connecte à l'agent. Au cours de cette phase, le job est initialisé et les identifiants sont validés.
  • PRE : cette phase commence juste avant l'opération principale du job. Pour les snapshots, cette phase commence avant que l'application ne soit figée. Pour les tâches de type "mount", cela se produit après le mappage des appareils à l'hôte, mais avant le démarrage des opérations basées sur l'agent, telles que l'analyse, l'importation et le montage des systèmes de fichiers.
  • POST : cette phase commence immédiatement après la fin de l'opération principale du job. Pour les jobs de type sauvegarde, cela se produit après le dégel de l'application. Pour les jobs de type "mount", cette phase commence une fois que toutes les opérations d'importation, de montage ou de mise en ligne des applications sont terminées.
  • FINAL : cette phase correspond à la fin de la tâche. À moins que le script ne renvoie un code différent de zéro qui entraîne l'échec du job, celui-ci est terminé.
  • ABORT : cette phase gère les jobs abandonnés en cas d'échec.

Exemple : scripts

L'exemple suivant montre comment exécuter un script côté hôte à différentes phases du processus de job de sauvegarde. Il comporte cinq scripts qui affichent la date ou l'heure, le nom de l'application (nom du système de fichiers ou de la base de données), le type de job, le nom du job, la valeur de conservation des journaux en jours et le texte indiquant la phase du job de sauvegarde en cours de traitement.

    ```sh
    $ cat /act/scripts/init.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:INIT" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:INIT" >> /tmp/backup_status.log
        fi

        $ cat /act/scripts/pre.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:PRE" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:PRE" >> /tmp/backup_status.log
        fi

        $ cat /act/scripts/post.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:POST" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:POST" >> /tmp/backup_status.log
        fi

        $ cat /act/scripts/fini.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:FINAL" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:FINAL" >> /tmp/backup_status.log
        fi

        $ cat /act/scripts/abort.sh
        #!/bin/sh
        if [ "${ACT_JOBTYPE}" = "logbackup" ]; then
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:ABORT" >> /tmp/backup_status.log
        else
          echo `date` "${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:ABORT" >> /tmp/backup_status.log
        fi
        ```

Dans l'exemple précédent, ACT_JOBTYPE = logbackup indique que le job en cours d'exécution est une tâche de sauvegarde des journaux, et non une tâche de sauvegarde complète de la base de données.

Vous n'aurez peut-être pas besoin d'exécuter les cinq phases pour obtenir le résultat de journal souhaité. Vous ne pouvez utiliser que les phases "init" et "final" pour indiquer le début et la fin du processus de sauvegarde.

Vous pouvez également personnaliser les scripts pour effectuer d'autres tâches, comme arrêter un service ou exécuter d'autres commandes.

Ajouter des scripts à un modèle de sauvegarde

Suivez les instructions ci-dessous pour ajouter les scripts à un modèle de sauvegarde.

  1. Cliquez sur Plans de sauvegarde, puis sélectionnez Modèles dans la liste déroulante.
  2. Sélectionnez un modèle qui inclut une règle OnVault. La page Modèles s'ouvre avec le modèle de sauvegarde sélectionné.
  3. Dans la zone Règles de la page Modèles, cliquez sur + Ajouter à côté de Instantané.
  4. Cliquez sur Paramètres avancés de la règle.
  5. Faites défiler l'écran jusqu'à Nom du script, puis copiez et collez le script suivant :

    path=init.sh:phase=init;path=pre.sh:phase=pre;path=post.sh:phase=post;path=fini.sh:phase=final:timeout=300;path=abort.sh:phase=abort
    
  6. Cliquez sur Enregistrer les modifications.

  7. Exécutez un job à la demande.

    La sortie s'affiche pour deux bases de données différentes. L'un est un job de sauvegarde des journaux et l'autre est un instantané incrémentiel.

    $ cat /tmp/backup_status.log Wed Nov 22 06:11:49 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:INIT Wed Nov 22 06:13:52 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:PRE Wed Nov 22 06:15:01 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:POST Wed Nov 22 06:15:01 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:FINAL Wed Nov 22 06:18:00 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:INIT Wed Nov 22 06:20:15 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:PRE Wed Nov 22 06:22:06 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:POST Wed Nov 22 06:22:06 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:FINAL

Transmettre des variables d'environnement dans un fichier journal

Vous pouvez exporter les informations sur l'environnement du job vers le script à l'aide des variables d'environnement de la liste suivante, qui sont précédées de ACT_. Toutes les variables d'environnement ne s'appliqueront pas à tous les types de mission.

  • ACT_APPID : ID de la base de données de l'application.
  • ACT_APPNAME : nom de l'application.
  • ACT_HOSTNAME : nom de l'hôte qui est la cible de ce job.
  • ACT_JOBNAME : nom du job.
  • ACT_JOBTYPE : version texte de la classe de job.
  • ACT_LOGSMART_TYPE : la seule valeur valide est "db". Ce paramètre doit être présent pour que les journaux de base de données soient capturés.
  • ACT_OPTIONS : options de règles qui s'appliquent à ce job
  • ACT_PHASE : chaîne de texte décrivant la phase du job.
  • ACT_POLICY : nom de la règle associée à ce job.
  • ACT_POLICYOPT_logbackupretention : nombre de jours de conservation des jobs de sauvegarde des journaux. Cette option n'apparaît que dans les jobs de sauvegarde des journaux de base de données.
  • ACT_PROFILE : nom du profil.
  • ACT_SCRIPT_TMOUT : délai d'expiration de la mise en exposant. Si la réponse n'est pas reçue dans le délai d'attente (60 secondes par défaut), le script échoue.
  • ACT_SOURCEHOST : nom de l'hôte qui était la source de cette application.
  • ACT_TEMPLATE : nom du modèle associé au job.
  • ACT_TIMEOUT : durée définie du script, en secondes. Si le script ne se termine pas dans le délai imparti, le job échouera.
  • ACT_VOLUMES : pour les applications génériques, liste des volumes configurés pour la sauvegarde. Si vous avez besoin d'aide pour connaître les variables d'environnement que vous pouvez utiliser, ajoutez cette ligne à votre script.

    echo printenv >> /tmp/backup_status.log