预处理脚本和后处理脚本
您可以在数据保护操作中使用自定义预处理和后处理脚本。这些脚本可以在数据保护作业之前或之后启用自动化。例如,您可以包含一个脚本,用于自动通知您数据保护作业失败或出现警告。在设置预处理脚本和后处理脚本之前,您应了解创建这些脚本的一些要求。
支持的脚本类型
支持 Perl 和 shell 脚本。Shell脚本必须以开头 !/bin/bash
。 (!/bin/sh
不支持。)
脚本路径位置
预处理脚本和后处理脚本由适用于 VMware vSphere 的 SnapCenter 插件运行。因此,这些脚本必须位于适用于 VMware vSphere 的 SnapCenter 插件 OVA 中,并具有可执行权限。
例如:* Perl脚本路径可能是 /support/support/script.pl
* shell脚本路径可能是 /support/support/script.sh
执行脚本时会验证脚本路径。
指定脚本的位置
脚本在备份策略中指定。启动备份作业后,策略会自动将脚本与要备份的资源关联起来。
要指定多个脚本,请在每个脚本路径后按 * Enter * ,以便在单独的行中列出每个脚本。不允许使用分号(;)。您可以指定多个预处理和多个后处理脚本。一个脚本可以同时编码为预处理脚本和后处理脚本,并可调用其他脚本。
执行脚本时
脚本将根据为 backup_phase 设置的值执行。
-
backup_phase=pre_backup
预处理将在操作的 PRE_BACKUP 阶段执行。
如果预处理失败,备份将成功完成,并会发送一条警告消息。 |
-
backup_phase=post_backup 或 backup_phase=failed_backup
备份成功完成后,将在操作的 post_backup 阶段执行后脚本;如果备份未成功完成,则在 failed_backup 阶段执行后脚本。
如果一个后处理脚本失败,备份将成功完成,并会发送一条警告消息。 |
检查以下内容以验证是否已填充脚本值:*对于Perl脚本: /support/support/log_env.log
*对于shell脚本: /support/support/log_file.log
传递给脚本的环境变量
您可以在脚本中使用下表所示的环境变量。
环境变量 | Description |
---|---|
|
备份的名称。仅在后脚本中传递的变量。 |
|
备份日期、格式为 `yyyymmdd`仅在后脚本中传递的变量。 |
|
备份时间、格式为 `hhmmss`仅在后脚本中传递的变量。 |
|
要在其中运行脚本的备份阶段。有效值为: |
|
备份中的存储快照数量。仅在后脚本中传递的变量。 |
|
已定义的存储快照之一、格式如下: |
|
备份中的 VM 数。在预处理脚本和后处理脚本中传递的变量。 |
|
定义的虚拟机之一、格式如下: |
脚本超时
备份脚本的超时时间为 15 分钟,无法修改。
Perl 脚本 1 示例
以下示例 Perl 脚本将在运行备份时打印环境变量。
#!/usr/bin/perl
use warnings;
use strict;
my $argnum;
my $logfile = '/support/support/log_env.log';
open (FH, '>>', $logfile) or die $!;
foreach (sort keys %ENV) {
print FH "$_ = $ENV{$_}\n";
}
print FH "=========\n";
close (FH);
Perl 脚本 2 示例
以下示例将显示有关备份的信息。
#!/usr/bin/perl
use warnings;
use strict;
my $argnum;
my $logfile = '/support/support/log_env.log';
open (FH, '>>', $logfile) or die $!;
print FH "BACKUP_PHASE is $ENV{'BACKUP_PHASE'}\n";
print FH "Backup name $ENV{'BACKUP_NAME'}\n";
print FH "Virtual Machine $ENV{'VIRTUAL_MACHINES'}\n";
print FH "VIRTUAL_MACHINE # is $ENV{'VIRTUAL_MACHINE.1'}\n";
print FH "BACKUP_DATE is $ENV{'BACKUP_DATE'}\n";
print FH "BACKUP_TIME is $ENV{'BACKUP_TIME'}\n";
print FH "STORAGE_SNAPSHOTS is $ENV{'STORAGE_SNAPSHOTS'}\n";
print FH "STORAGE_SNAPSHOT # is $ENV{'STORAGE_SNAPSHOT.1'}\n";
print FH "PWD is $ENV{'PWD'}\n";
print FH "INVOCATION_ID is $ENV{'INVOCATION_ID'}\n";
print FH "=========\n";
close (FH);
示例 Shell 脚本
===============================================
#!/bin/bash
echo Stage $BACKUP_NAME >> /support/support/log_file.log
env >> /support/support/log_file.log
===============================================