[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-09-04 (世界標準時間)。"],[[["\u003cp\u003eLiveClone Backup and DR Workflows can utilize pre- and post-processing scripts to run operations before or after mounting/unmounting backup images, such as data scrubbing, generating reports, or warehousing data.\u003c/p\u003e\n"],["\u003cp\u003ePre- and post-scripts must be stored in the \u003ccode\u003e/act/scripts\u003c/code\u003e directory on the server hosting the mounted image, and a timeout duration must be specified for each script to complete its execution.\u003c/p\u003e\n"],["\u003cp\u003eEnvironment variables prefixed with \u003ccode\u003eACT_\u003c/code\u003e, such as \u003ccode\u003eACT_JOBTYPE\u003c/code\u003e, \u003ccode\u003eACT_PHASE\u003c/code\u003e, and \u003ccode\u003eACT_APPNAME\u003c/code\u003e, can be used within scripts to tailor operations to specific jobs, phases, or applications.\u003c/p\u003e\n"],["\u003cp\u003eFor workflows involving both a database and its logs, the pre- and post-script operations should be configured to avoid being applied to the database's logs, which can be achieved using the \u003ccode\u003eACT_MULTI_END\u003c/code\u003e variable in the script.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eTIMEOUT\u003c/code\u003e variable is used to define the duration of the script, in other words, the amount of time the script is allowed to run.\u003c/p\u003e\n"]]],[],null,["# Custom scripts\n\nWhen defining a LiveClone Backup and DR Workflow that performs pre-scrubbing you can\nselect from Optim privacy data masking or custom scripts.\n\nFor custom scripts, specify at least one pre- or post-processing script.\n\n- Specify a pre-script as needed. The pre-script is used to configure the environment prior to mounting or unmounting the application. This script must reside in a folder named `/act/scripts` on the server that hosts the mounted image.\n- In the corresponding **Timeout in Seconds**, specify the time that is needed for the script to complete.\n- Specify a post-script as needed. The post-script used to perform an operation on the data after it is mounted or unmounted. This script must reside in a folder named `/act/scripts` on the server that hosts the mounted image.\n- In the corresponding **Timeout in Seconds**, specify the time that is needed for the script to complete.\n\nBackup and DR Workflow Pre and Post Scripts\n-------------------------------------------\n\nBackup and DR Workflows mount and unmount backup images according to a schedule\nor on-demand. In a Backup and DR Workflow you can call the following:\n\n- A pre-script that runs before an image is mounted or unmounted\n- A post-script that runs after an image is mounted or unmounted\n\nThe ability to run a script before and after data is mounted or\nunmounted lets you do the following:\n\n- Scrub for sensitive information\n- Generate reports\n- Warehouse data, especially for extract, transform, and load---ETL--- operations\n\nScripts must reside in a folder named `/act/scripts` on the server\nthat hosts the mounted Backup and DR Workflow image.\n| **Note:** For Backup and DR Workflows that involve both a database and its logs, you must configure scripts in such as way that pre- and post-script operations are not applied to the database's logs. See *Example Script* for a script example that contains a command that skips a database's log.\n\n### Environment variables\n\nEnvironment variables allow you to invoke commands that apply to specific jobs,\njob types, or applications. Environment variables are prefixed with `ACT_`. For\nexample, an environment variable for a database could look like: \n\n [$ACT_APPNAME ==\"productiondb\"]\n\nor an environment variable for a mount operation could look like: \n\n [$ACT_JOBTYPE == \"mount\"]\n\nThe following is a list of common environment variables with sample values:\n\n- **JOBNAME**: The name of the job---for example, Job_0123456.\n- **APPID**: The ID of the application---for example, 4186.\n- **APPNAME**: Name of the application---for example, My-DB.\n- **HOSTNAME**: The name of the host which is the target of this job---for example, Jupiter.\n- **SOURCEHOST**: The name of the host that was the source for this application---for example, Saturn.\n- **JOBTYPE**: A text version of the job class---for example, mount or unmount.\n- **PHASE**: A text string that describes the job phase---for example, pre or post.\n- **TIMEOUT**: Define the duration of the script, how long the script is allowed to run.\n- **OPTIONS**: Policy options that apply to this job.\n\n### Example script\n\nThe following script example uses three environment variables:\n\n- **ACT_JOBTYPE**: Identifies whether the job is a mount or unmount operation.\n- **ACT_PHASE**: Identifies whether the phase is either pre or post.\n- **ACT_MULTI_END**: Used only if both a database and its\n log are mounted. When this is true, the database is in a state where it\n can be accessed.\n\n **Note:** The following example script is not meant to be used in a production environment, has not been tested, and is not warranted by Backup and DR Service. \n\n ```sh\n #!/bin/sh\n set +x\n echo \"*** Running user script: Job - $ACT_JOBNAME Type - $ACT_JOBTYPE Phase - $ACT_PHASE***\"\n\n #Use the first if clause to perform application specific operations during mount and in this example scrub-mount operation.\n\n #Use the second if clause to perform any application specific operation during unmount and in this example, #scrub-unmount operation.\n\n #if [[ $ACT_JOBTYPE == \"mount\" ]] || [[ $ACT_JOBTYPE == \"scrub-mount\" ]]; then\n if [[ $ACT_JOBTYPE == \"unmount\" ]] || [[ $ACT_JOBTYPE == \"scrub-unmount\" ]]; then\n echo \"NO-OP for job type $ACT_JOBTYPE\"\n exit 0\n fi\n\n #Use the first if clause to perform application specific operations during the pre phase.\n\n #Use the second if clause to perform application specific operations during the post phase.\n\n #if [[ $ACT_PHASE == \"post\" ]]; then\n if [[ $ACT_PHASE == \"pre\" ]]; then\n echo \"NO-OP for phase $ACT_PHASE\"\n exit 0\n fi\n\n #For multi-phase jobs (database and logs) check if the database has been mounted and the logs applied then #skip logs.\n\n #If the operation needs to be performed in phases other than the last phase, modify the clause.\n\n if [[ -z \"$ACT_MULTI_END\" ]] && [[ $ACT_MULTI_END != \"true\" ]]; then\n echo \"NO-OP for multi-phase operation\"\n exit 0\n fi\n\n cd /act/scripts\n\n echo \"**** Running application specific logic: Job - $ACT_JOBNAME Type - $ACT_JOBTYPE Phase - $ACT_PHASE *\"\n\n Any application specific commands will go here\n\n echo \"** Finished running application specific logic : Job - $ACT_JOBNAME Type - $ACT_JOBTYPE Phase - $ACT_PHASE*\"\n exit $?\n ```"]]