自定义脚本

在定义执行预处理的 LiveClone 备份和灾难恢复工作流时,您可以选择 Optim 隐私数据脱敏或自定义脚本。

对于自定义脚本,请至少指定一个预处理脚本或后处理脚本。

  • 根据需要指定预脚本。预脚本用于在挂载或卸载应用之前配置环境。此脚本必须位于托管已挂载映像的服务器上名为 /act/scripts 的文件夹中。
  • 在相应的超时(以秒为单位)中,指定脚本完成所需的时间。
  • 根据需要指定脚本。用于在数据挂载或卸载后对数据执行操作的后置脚本。此脚本必须位于托管已挂载映像的服务器上名为 /act/scripts 的文件夹中。
  • 在相应的超时(以秒为单位)中,指定脚本完成所需的时间。

Backup and DR 工作流前置和后置脚本

Backup and DR 工作流会按计划或按需挂载和卸载备份映像。在备份和灾难恢复工作流中,您可以调用以下内容:

  • 在挂载或卸载映像之前运行的预脚本
  • 在映像挂载或卸载后运行的后续脚本

借助在挂载或卸载数据之前和之后运行脚本的功能,您可以执行以下操作:

  • 清除敏感信息
  • 生成报告
  • 仓库数据,尤其是提取、转换和加载 (ETL) 操作

脚本必须位于托管已挂载备份和灾难恢复工作流程映像的服务器上名为 /act/scripts 的文件夹中。

环境变量

借助环境变量,您可以调用适用于特定作业、作业类型或应用的命令。环境变量的前缀为 ACT_。例如,数据库的环境变量可能如下所示:

    [$ACT_APPNAME =="productiondb"]

或者,装载操作的环境变量可能如下所示:

    [$ACT_JOBTYPE == "mount"]

以下是常见环境变量及其示例值的列表:

  • JOBNAME:作业的名称,例如 Job_0123456。
  • APPID:应用的 ID,例如 4186。
  • APPNAME:应用名称,例如 My-DB。
  • HOSTNAME:此作业的目标主机的名称,例如 Jupiter。
  • SOURCEHOST:此应用的来源主机的名称,例如 Saturn。
  • JOBTYPE:作业类的文本版本,例如挂载或卸载。
  • PHASE:用于描述作业阶段(例如前置或后置)的文本字符串。
  • TIMEOUT:指定脚本的持续时间,即允许脚本运行的时长。
  • OPTIONS:适用于此作业的政策选项。

示例脚本

以下脚本示例使用三个环境变量:

  • ACT_JOBTYPE:用于标识作业是挂载还是卸载操作。
  • ACT_PHASE:标识相应阶段是前置还是后置。
  • ACT_MULTI_END:仅当数据库及其日志都已挂载时才使用。如果为 true,则表示数据库处于可访问状态。

    ```sh
    #!/bin/sh
    set +x
    echo "*** Running user script: Job - $ACT_JOBNAME Type - $ACT_JOBTYPE Phase - $ACT_PHASE***"
    
    #Use the first if clause to perform application specific operations during mount and in this example scrub-mount operation.
    
    #Use the second if clause to perform any application specific operation during unmount and in this example, #scrub-unmount operation.
    
    #if [[ $ACT_JOBTYPE == "mount" ]] || [[ $ACT_JOBTYPE == "scrub-mount" ]]; then
    if [[ $ACT_JOBTYPE == "unmount" ]] || [[ $ACT_JOBTYPE == "scrub-unmount" ]]; then
        echo "NO-OP for job type $ACT_JOBTYPE"
        exit 0
    fi
    
    #Use the first if clause to perform application specific operations during the pre phase.
    
    #Use the second if clause to perform application specific operations during the post phase.
    
    #if [[ $ACT_PHASE == "post" ]]; then
    if [[ $ACT_PHASE == "pre" ]]; then
        echo "NO-OP for phase $ACT_PHASE"
        exit 0
    fi
    
    #For multi-phase jobs (database and logs) check if the database has been mounted and the logs applied then #skip logs.
    
    #If the operation needs to be performed in phases other than the last phase, modify the clause.
    
    if [[ -z "$ACT_MULTI_END" ]] && [[ $ACT_MULTI_END != "true" ]]; then
        echo "NO-OP for multi-phase operation"
        exit 0
    fi
    
    cd /act/scripts
    
    echo "**** Running application specific logic: Job - $ACT_JOBNAME Type - $ACT_JOBTYPE Phase - $ACT_PHASE *"
    
    Any application specific commands will go here
    
    echo "** Finished running application specific logic : Job - $ACT_JOBNAME Type - $ACT_JOBTYPE Phase - $ACT_PHASE*"
    exit $?
    ```