在設備管理控制台中,將指令碼新增至備份範本

本頁說明如何將指令碼新增至備份範本。說明備份工作期間指令碼執行的不同階段。

您可以編寫指令碼並執行,在備份工作開始時、期間或完成後執行動作。這些指令碼也稱為前置和後置指令碼。

指令碼位置

安裝代理程式時,系統會自動建立指令碼資料夾,其中包含需要保護的檔案系統或資料庫。如要執行指令碼,請將指令碼放在下列資料夾中:

  • Windows 主機:\Program Files\Google Cloud Backup and DR\scripts
  • Linux 主機:/act/scripts,並將指令碼設為可執行 (chmod 755 *.sh)

指令碼階段

指令碼會在下列階段執行。如果指令碼未執行,請檢查指令碼是否位於指令碼資料夾中。

  • INIT:備份/復原裝置連線至代理程式時,這個階段就會開始。在這個階段中,系統會初始化工作並驗證憑證。
  • PRE:這項階段會在作業的主要作業開始前啟動。 如果是快照,這個階段會在應用程式凍結前開始。如果是掛接類型的工作,則是在裝置對應至主機後,但在開始執行以代理程式為基礎的作業 (例如重新掃描、匯入及掛接檔案系統) 前。
  • POST:這項階段會在工作的主要作業完成後立即開始。如果是備份類型的工作,則是在應用程式解除凍結後。如果是掛接類型的工作,這個階段會在所有匯入、掛接或將應用程式上線作業完成後開始。
  • FINAL:這項階段代表工作完成。除非指令碼傳回非零代碼,導致工作失敗,否則工作會完成。
  • ABORT:這個階段會處理失敗的已中止工作。

範例:指令碼

以下範例說明如何在備份工作程序的各個階段執行主機端指令碼。內含五個指令碼,可輸出日期或時間、應用程式名稱 (檔案系統或資料庫名稱)、工作類型、工作名稱、記錄保留天數值,以及指出正在處理備份工作階段的文字。

    ```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
        ```

在上述範例中,ACT_JOBTYPE = logbackup 表示正在執行的工作是記錄檔備份工作,而非完整資料庫備份工作。

您可能不需要執行所有五個階段,就能取得所選記錄檔輸出內容。 您只能使用 init 和 final 階段,指出備份程序的開始和結束時間。

您也可以自訂指令碼來執行其他工作,例如停止服務或執行其他指令。

將指令碼新增至備份範本

請按照下列操作說明,將指令碼新增至備份範本。

  1. 按一下「備份計畫」,然後從下拉式清單中選取「範本」。
  2. 選取包含 OnVault 政策的範本。 「範本」頁面隨即開啟,並顯示所選備份範本。
  3. 在「範本」頁面的「政策」區域,點選「快照」旁的「+ 新增」。
  4. 按一下「進階政策設定」。
  5. 捲動至「指令碼名稱」,然後複製並貼上下列指令碼:

    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. 按一下 [儲存變更]。

  7. 執行隨選工作。

    輸出內容會顯示兩個不同資料庫的結果。一個是記錄備份工作,另一個是增量快照。

    $ 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

將環境變數傳遞至記錄檔

您可以使用下列清單中以 ACT_ 為前置字元的環境變數,將作業的環境資訊匯出至指令碼。並非所有環境變數都適用於每種工作類型。

  • ACT_APPID:應用程式的資料庫 ID。
  • ACT_APPNAME:應用程式名稱。
  • ACT_HOSTNAME:此工作目標主機的名稱。
  • ACT_JOBNAME:工作名稱。
  • ACT_JOBTYPE:工作類別的文字版本。
  • ACT_LOGSMART_TYPE:唯一有效值為「db」。必須有這個項目,才能擷取資料庫記錄。
  • ACT_OPTIONS:適用於這項工作的政策選項
  • ACT_PHASE:描述工作階段的文字字串。
  • ACT_POLICY:與這項工作相關的政策名稱。
  • ACT_POLICYOPT_logbackupretention:記錄備份作業的保留天數。這只會顯示在資料庫記錄備份工作中。
  • ACT_PROFILE:設定檔名稱。
  • ACT_SCRIPT_TMOUT:上標逾時時間。如果未在逾時值 (預設為 60 秒) 內收到回應,指令碼就會失敗。
  • ACT_SOURCEHOST:做為這個應用程式來源的主機名稱。
  • ACT_TEMPLATE:與工作相關的範本名稱。
  • ACT_TIMEOUT:腳本的定義時間長度,以秒為單位。如果指令碼未在逾時時間內完成,工作就會失敗。
  • ACT_VOLUMES:適用於一般應用程式,設定備份的磁碟區清單。如需瞭解可用的環境變數,請在指令碼中加入這行。

    echo printenv >> /tmp/backup_status.log