Secuencias de comandos en una plantilla de copia de seguridad
Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
En esta página se explica cómo añadir secuencias de comandos a una plantilla de copia de seguridad. Describe las diferentes fases por las que pasa una secuencia de comandos durante una tarea de copia de seguridad.
Puedes escribir tus secuencias de comandos y ejecutarlas para realizar una acción al inicio de un trabajo de copia de seguridad, durante el proceso o después de que se haya completado. También se denominan pre-scripts y post-scripts.
Ubicación de las secuencias de comandos
Una carpeta de secuencias de comandos se crea automáticamente durante la instalación del agente, donde se ejecuta el sistema de archivos o la base de datos que necesita protección. Para ejecutar las secuencias de comandos, debes colocarlas en las siguientes carpetas:
En el caso de los anfitriones de Windows: \Program Files\Google Cloud Backup and DR\scripts
En el host Linux: /act/scripts y configura la secuencia de comandos como ejecutable (chmod 755 *.sh).
Fases de la secuencia de comandos
Las secuencias de comandos se ejecutan en las siguientes fases. Si tu secuencia de comandos no se ejecuta, comprueba si está en la carpeta de secuencias de comandos.
INIT esta fase se inicia cuando el dispositivo de copia de seguridad o recuperación se conecta al agente. En esta fase, se inicializa el trabajo y se verifican las credenciales.
PRE: esta fase empieza justo antes de la operación principal del trabajo.
En el caso de las copias de seguridad, esta fase comienza antes de que se congele la aplicación. En el caso de las tareas de tipo de montaje, esto ocurre después de que los dispositivos se hayan asignado al host, pero antes de que se inicien las operaciones basadas en agentes, como el nuevo análisis, la importación y el montaje de sistemas de archivos.
POST: esta fase empieza inmediatamente después de que se complete la operación principal del trabajo. En el caso de los trabajos de tipo copia de seguridad, esto ocurre después de que se descongele la aplicación. En las tareas de tipo montaje, esta fase comienza una vez que se han completado todas las operaciones de importación, montaje o puesta en línea de aplicaciones.
FINAL: esta fase es el final del trabajo. A menos que la secuencia de comandos devuelva un código distinto de cero que provoque un error en el trabajo, este se completará.
ABORT: esta fase gestiona las tareas anuladas cuando fallan.
Ejemplo: secuencias de comandos
En el siguiente ejemplo se muestra cómo ejecutar una secuencia de comandos del host en varias fases del proceso de trabajo de copia de seguridad. Tiene cinco secuencias de comandos que muestran la fecha o la hora, el nombre de la aplicación (nombre del sistema de archivos o de la base de datos), el tipo de tarea, el nombre de la tarea, el valor de conservación de registros en días y el texto que indica la fase de la tarea de copia de seguridad que se está procesando.
```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```
En el ejemplo anterior, ACT_JOBTYPE = logbackup indica que el trabajo que se está ejecutando es una tarea de copia de seguridad de registros, no una tarea de copia de seguridad completa de la base de datos.
Puede que no tengas que ejecutar las cinco fases para conseguir el resultado de registro que quieras.
Solo puedes usar las fases init y final para indicar el inicio y el final del proceso de copia de seguridad.
También puedes personalizar las secuencias de comandos para que realicen otras tareas, como detener un servicio o ejecutar otros comandos.
Añadir secuencias de comandos a una plantilla de copia de seguridad
Sigue estas instrucciones para añadir las secuencias de comandos a una plantilla de copia de seguridad.
Haz clic en Planes de copia de seguridad y selecciona Plantillas en la lista desplegable.
Selecciona una plantilla que incluya una política OnVault.
Se abrirá la página Plantillas con la plantilla de copia de seguridad seleccionada.
En el área Políticas de la página Plantillas, haga clic en +Añadir junto a Snapshot.
Haz clic en Configuración avanzada de la política.
Desplázate hasta Nombre de la secuencia de comandos y, a continuación, copia y pega la siguiente secuencia de comandos:
El resultado se muestra para dos bases de datos diferentes. Una es una tarea de copia de seguridad de registros y la otra es una instantánea incremental.
$ 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
Transferir variables de entorno a un archivo de registro
Puedes exportar la información del entorno del trabajo a la secuencia de comandos mediante las variables de entorno de la siguiente lista que tengan el prefijo ACT_.
No todas las variables de entorno se aplicarán a todos los tipos de trabajo.
ACT_APPID: el ID de la base de datos de la aplicación.
ACT_APPNAME: el nombre de la aplicación.
ACT_HOSTNAME: el nombre del host de destino de este trabajo.
ACT_JOBNAME: el nombre del puesto.
ACT_JOBTYPE: una versión de texto de la clase de trabajo.
ACT_LOGSMART_TYPE: el único valor válido es "db". Debe estar presente para que se capturen los registros de la base de datos.
ACT_OPTIONS: las opciones de política que se aplican a este trabajo
ACT_PHASE: cadena de texto que describe la fase del trabajo.
ACT_POLICY: el nombre de la política relacionada con este trabajo.
ACT_POLICYOPT_logbackupretention: el número de días de conservación de los trabajos de copia de seguridad de registros. Esto solo aparece en los trabajos de copia de seguridad de registros de bases de datos.
ACT_PROFILE: el nombre del perfil.
ACT_SCRIPT_TMOUT: tiempo de espera de la superíndice. Si no se recibe la respuesta en el plazo del tiempo de espera (60 segundos de forma predeterminada), el script fallará.
ACT_SOURCEHOST: el nombre del host que fue la fuente de esta aplicación.
ACT_TEMPLATE: el nombre de la plantilla relacionada con el trabajo.
ACT_TIMEOUT: duración definida de la secuencia de comandos, en segundos. Si la secuencia de comandos no se completa en el periodo de tiempo de espera, el trabajo fallará.
ACT_VOLUMES: en el caso de las aplicaciones genéricas, la lista de volúmenes configurados para la copia de seguridad. Si necesitas ayuda para conocer las variables de entorno que puedes usar, añade esta línea a tu secuencia de comandos.
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-08-21 (UTC)."],[[["\u003cp\u003eThis guide details how to add and use scripts within a backup template to perform actions during different phases of a backup job, such as at the start, during, or after completion.\u003c/p\u003e\n"],["\u003cp\u003eScripts must be placed in specific folders depending on the host operating system: \u003ccode\u003e\\Program Files\\Google Cloud Backup and DR\\scripts\u003c/code\u003e for Windows, and \u003ccode\u003e/act/scripts\u003c/code\u003e for Linux, where the Linux scripts also need to be executable.\u003c/p\u003e\n"],["\u003cp\u003eScripts can execute in five different phases: INIT (job initialization), PRE (before the main job operation), POST (after the main job operation), FINAL (job completion), and ABORT (job failure), allowing for tailored actions at each stage.\u003c/p\u003e\n"],["\u003cp\u003eEnvironment variables prefixed with \u003ccode\u003eACT_\u003c/code\u003e can be used within the scripts to pass job-specific information like job name, job type, and application details into the script for conditional logic and logging purposes.\u003c/p\u003e\n"],["\u003cp\u003eScripts can be added to a backup template through the "Advanced Policy Settings" section, using a specific syntax to define the path and phase of each script, and a timeout can be defined for each script phase to prevent scripts from running indefinitely.\u003c/p\u003e\n"]]],[],null,["# Scripts to a backup template\n\nThis page explains how to add scripts to a backup template. It describes\nthe different phases that a script executes during a backup job.\n\nYou can write your scripts and run them to perform an action at the start of\na backup job, during it, or after it's completed. These are also called pre\nand post scripts.\n\nScripts location\n----------------\n\nA script folder is created automatically during agent installation where\nthe file system or database that needs protection is running. You need to place\nthe scripts in the following folders in order to execute them:\n\n- For Windows host: `\\Program Files\\Google Cloud Backup and DR\\scripts`\n- For Linux host: `/act/scripts` and set the script to executable (chmod 755 \\*.sh)\n\nScript phases\n-------------\n\nScripts execute in the following phases. If your script isn't executing,\ncheck if it is in the [scripts folder](#location).\n\n- **INIT**: This phase starts when the backup/recovery appliance connects to the agent, In this phase, the job is initialized and the credentials are verified.\n- **PRE**: This phase starts just before the major operation of the job. For snapshots, this phase starts before the application is frozen. For mount type jobs, this is after devices are mapped to the host but before agent based operations like rescan, import, and mounting of file systems is started.\n- **POST**: This phase starts immediately after the major operation of the job is completed. For backup type jobs, this is after the application is unfrozen. For mount type jobs this phase starts after all import, mount, or bring applications online operations are complete.\n- **FINAL**: This phase is the end of the job. Unless the script returns a non-zero code that causes the job to fail, the job is complete.\n- **ABORT**: This phase handles aborted jobs when they fail.\n\nExample: scripts\n----------------\n\nThe following example shows how to run a host side script at various phases\nof the backup job process. It has five scripts that output the date or time,\napp name (file system or database name), job type, job name, log retention value\nin days, and text to indicate the phase of the backup job that is processing. \n\n ```sh\n $ cat /act/scripts/init.sh\n #!/bin/sh\n if [ \"${ACT_JOBTYPE}\" = \"logbackup\" ]; then\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:INIT\" \u003e\u003e /tmp/backup_status.log\n else\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:INIT\" \u003e\u003e /tmp/backup_status.log\n fi\n\n $ cat /act/scripts/pre.sh\n #!/bin/sh\n if [ \"${ACT_JOBTYPE}\" = \"logbackup\" ]; then\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:PRE\" \u003e\u003e /tmp/backup_status.log\n else\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:PRE\" \u003e\u003e /tmp/backup_status.log\n fi\n\n $ cat /act/scripts/post.sh\n #!/bin/sh\n if [ \"${ACT_JOBTYPE}\" = \"logbackup\" ]; then\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:POST\" \u003e\u003e /tmp/backup_status.log\n else\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:POST\" \u003e\u003e /tmp/backup_status.log\n fi\n\n $ cat /act/scripts/fini.sh\n #!/bin/sh\n if [ \"${ACT_JOBTYPE}\" = \"logbackup\" ]; then\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:FINAL\" \u003e\u003e /tmp/backup_status.log\n else\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:FINAL\" \u003e\u003e /tmp/backup_status.log\n fi\n\n $ cat /act/scripts/abort.sh\n #!/bin/sh\n if [ \"${ACT_JOBTYPE}\" = \"logbackup\" ]; then\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_ARCHIVELOG_BACKUP JobPhase:ABORT\" \u003e\u003e /tmp/backup_status.log\n else\n echo `date` \"${ACT_JOBNAME}_${ACT_APPNAME}_INCREMENTAL_BACKUP JobPhase:ABORT\" \u003e\u003e /tmp/backup_status.log\n fi\n ```\n\nIn the preceding example, `ACT_JOBTYPE = logbackup` indicates the job being run\nis a log backup task, rather than a full database backup task.\n\nYou might not need to run all five phases to achieve your chosen log output.\nYou can use only the init and final phases to indicate the start and end of\nthe backup process.\n\nYou can also customize the scripts to perform other tasks, such as stopping a\nservice or running other commands.\n\nAdd scripts to a backup template\n--------------------------------\n\nUse the following instructions to add the [scripts](#phases) to a backup\ntemplate.\n\n1. Click **Backup plans** and select **Templates** from the drop-down list.\n2. Select a template that includes an OnVault policy. The **Templates** page opens with the selected backup template.\n3. In the **Policies** area of the **Templates** page, click **+Add** next to **Snapshot**.\n4. Click **Advanced Policy Settings**.\n5. Scroll to **Script Name**, then copy and paste the following script:\n\n 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\n\n | **Note:** The use of timeout and arguments is not mandatory, but they can be used for each different phase where required. We added a timeout of 300 seconds to the final phase for this example, but you are able to add timeout values to any phase of the script. If the timeout is reached and the script is still running, the script will exit. The default timeouts for pre, post, and final scripts are 60 seconds, while init scripts have a default timeout of 120 seconds.\n6. Click **Save Changes**.\n\n7. [Run an on-demand job](/backup-disaster-recovery/docs/monitor-reports/monitor-jobs#run).\n\n The output is displayed for two different databases. One is a log backup job, and one is an incremental snapshot.\n\n $ cat /tmp/backup_status.log\n Wed Nov 22 06:11:49 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:INIT\n Wed Nov 22 06:13:52 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:PRE\n Wed Nov 22 06:15:01 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:POST\n Wed Nov 22 06:15:01 UTC 2023 Job_0275501_ORCLCDB_ARCHIVELOG_BACKUP JobPhase:FINAL\n Wed Nov 22 06:18:00 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:INIT\n Wed Nov 22 06:20:15 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:PRE\n Wed Nov 22 06:22:06 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:POST\n Wed Nov 22 06:22:06 UTC 2023 Job_0275637_SMALL_INCREMENTAL_BACKUP JobPhase:FINAL\n\nPassing environment variables into a log file\n---------------------------------------------\n\nYou can export the environment information from the job to the script using\nthe environment variables in the following list that are prefixed with `ACT_`.\nNot all of the environment variables will be applicable to every job type.\n\n- `ACT_APPID`: the database ID of the application.\n- `ACT_APPNAME`: the name of the application.\n- `ACT_HOSTNAME`: the name of the host which is the target of this job.\n- `ACT_JOBNAME`: the name of the job.\n- `ACT_JOBTYPE`: a text version of the job class.\n- `ACT_LOGSMART_TYPE`: the only valid value is \"db\". This must be present for database logs to be captured.\n- `ACT_OPTIONS`: the policy options that apply to this job\n- `ACT_PHASE`: a text string that describes the job phase.\n- `ACT_POLICY`: the name of the policy related to this job.\n- `ACT_POLICYOPT_logbackupretention`: the number of days of retention for log backup jobs. This only appears in database log backup jobs.\n- `ACT_PROFILE`: the name of the profile.\n- `ACT_SCRIPT_TMOUT`: the superscripting timeout. If the response is not received within the timeout value (default 60 seconds), then the script will fail.\n- `ACT_SOURCEHOST`: the name of the host that was the source for this application.\n- `ACT_TEMPLATE`: the name of the template related to the job.\n- `ACT_TIMEOUT`: the defined duration of the script, in seconds. If the script does not complete within the timeout period, the job will fail.\n- `ACT_VOLUMES`: for generic applications, the list of volumes that are configured for backup. If you need help learning the possible environment variables you can use, add this line to your script.\n\n echo printenv \u003e\u003e /tmp/backup_status.log"]]