oadp backup create

Create a snapshot of the entire IBM Software Hub instance (when installed on Container Storage Interface (CSI) volumes) or create a restic backup of an entire IBM Software Hub instance on an S3-compatible object store.

Syntax

cpd-cli oadp backup create <cpd-snapshot-name> \
[--aux-service-image-prefix=<backup-hook-image-prefix>] \
[--backup-type] \
[--cleanup-completed-resources=true|false] \
[--csi-snapshot-timeout=<h,m,s>] \
[--default-volumes-to-restic] \
[--default-volumes-to-fs-backup] \
[--enforce-check=true|false] \
[--exclude-resources=<resource.group1,resource.group2,...>] \
[--exclude-tenant-operator-namespace] \
[--grant-image-puller-role=true|false] \
[--hook-kind=br|checkpoint] \
[--image-prefix=<image-registry-prefix>] \
[--include-cluster-resources=true|false] \
[--include-namespaces=<project-name1,project-name2,...>] \
[--include-resources=<resource-name1,resource-name2,...>] \
[--labels=<map<label,label,...>>] \
[--log-level=info|debug|warn|error|panic|trace] \
[--posthooks=true|false] \
[--prehooks=true|false] \
[--scale-always] \
[--scale-wait-timeout=<h,m,s>] \
[--selector=<label-selector>] \
[--skip-hooks] \
[--snapshot-volumes=true|false] \
[--storage-location=<backup-location>] \
[--tenant-operator-namespace] \
[--try-skip-volume-selinux-label=true|false] \
[--ttl=<h,m,s>] \
[--use-retain-pv-reclaim-policy] \
[--values=<yaml-file-name1,yaml-file-name2,...>] \
[--vol-mnt-pod-cpu-limit=<cpu-limit-value>] \
[--vol-mnt-pod-cpu-request=<cpu-request-value>] \
[--vol-mnt-pod-mem-limit=<memory-limit-value>] \
[--vol-mnt-pod-mem-request=<memory-request-value>] \
[--vol-mnt-service-account=<service-request-value>] \
[--volume-snapshot-locations=<volume-snapshot-location1,volume-snapshot-location2,...>] \
[--wait-timeout=<h,m,s>] \
[--with-checkpoint] \

# Global options
[--add_dir_header=true|false] \
[--alsologtostderr=true|false] \
[--cpd-namespace=<cpd-namespace>] \
[--kubeconfig=<kubeconfig-paths> \
[--log-level=info|debug|warn|error|panic|trace] \
[--log-backtrace-at traceLocation=<integer>] \
[--log-dir=<log_directory>] \
[--log-file=<log_file_name>] \
[--log_file_max_size=<uint>] \
[--logtostderr=true|false] \
[--namespace=<namespace-name>] \
[--one-output=true|false] \
[--skip-headers=true|false] \
[--skip-log-headers=true|false] \
[--stderrthreshold severity=<integer>] \
[--v=<integer>] \
[--verbose \
[--vmodule moduleSpec=<pattern1, pattern2, and so on>]

Arguments

Table 1: Command arguments
Argument Description
<cpd-snapshot-name> The name of the snapshot to create.
Table 2: Global options arguments
Argument Description
<trace-location> The stack trace location
<severity> The log severity level

Options

Table 1: Command options
Option Description
--aux-service-image-prefix Specify the backup hook job image prefix (if configurable).
Status
Optional.
Syntax
--aux-service-image-prefix=<backup-hook-image-prefix>
Default value
icr.io/cpopen/cpd
Valid values
  • icr.io/cpopen/cpd
  • ${PRIVATE_REGISTRY_LOCATION}
--backup-type The type of object that is being backed up.
Status
Optional.
Syntax
--backup-type=<backup-object-type>
Default value
cpd
Valid values
cpd
The object that is being backed up is an IBM Software Hub instance.
singleton
The object that is being backed up is an IBM Software Hub singleton. For example, the scheduling service.
--cleanup-completed-resources When set to "true", deletes completed Kubernetes jobs and pods.
Status
Optional.
Syntax
--cleanup-completed-resources=true|false
Default value
true
Valid values
false
Does not delete completed Kubernetes jobs and pods.
true
Deletes completed Kubernetes jobs and pods.
--csi-snapshot-timeout The CSI snapshot creation timeout duration ('h' for hours, 'm' for minutes, 's' for seconds).
Status
Optional.
Syntax
--csi-snapshot-timeout=<h,m,s>
Default value
10m
Valid values
Any valid duration string. Examples: 1m, 30m, 1h, 2h45m
--default-volumes-to-restic Back up all pod volumes using restic without applying annotation on the pod.
Note: This option is deprecated in Cloud Pak for Data and will be removed in a future release. Use --default-volumes-to-fs-backup instead.
Status
Optional.
Syntax
--default-volumes-to-restic
Default value
No default.
Valid values
Not applicable.
--default-volumes-to-fs-backup Back up all pod volumes using restic without applying annotation on the pod.
Status
Optional.
Syntax
--default-volumes-to-fs-backup
Default value
No default.
Valid values
Not applicable.
--enforce-check Check OADP DataProtectionApplication (dpa) resources and perform other validations.
Status
Optional.
Syntax
--enforce-check=true|false
Default value
true
Valid values
true|false
--exclude-resources Resources to exclude from the restore, formatted as resource.group (for example, storageclasses.storage.k8s.io).
Status
Optional.
Syntax
--exclude-resources=<resource.group1,resource.group2,...>
Default value
No default.
Valid values
Valid resource.group pairings.
--exclude-tenant-operator-namespace Exclude the tenant operand namespaces that include tenant specific Cloud Pak Foundation Service Operators and IBM Software Hub Operators.
Status
Optional.
Syntax
--exclude-tenant-operator-namespace
Default value
No default.
Valid values
A valid namespace name.
Note: Do not include --exclude-tenant-operator-namespace and --tenant-operator-namespace together.
--grant-image-puller-role Grants IBM Software Hub instance namespaces permission to pull images from the OADP/Velero namespace. This option is used for air-gapped installations.
Status
Optional.
Syntax
--grant-image-puller-role=true|false
Default value
true
Valid values
true
Grants IBM Software Hub instance namespaces permission to pull images from the OADP/Velero namespace. This option is used for air-gapped installations.
false
Denies IBM Cloud Pak for Data instance namespaces permission.
--help

-h

Display command help.
Status
Optional.
Syntax
--help
Default value
No default.
Valid values
Not applicable.
--hook-kind The backup hook type. By default, backup configmap pre-hook and post-hooks are called and are used for offline backups. When the value is "checkpoint", checkpoint backup pre-hook and post-hooks are called and are used for non-disruptive backups.
Status
Optional.
Syntax
--hook-kind=br|checkpoint
Default value
br
Valid values
br
The backup configmap prehooks and posthooks are called (used for offline backups).
checkpoint
The checkpoint prehooks and posthooks are called (used for non-disruptive backups).
--image-prefix Specify the image registry prefix.
Status
Optional.
Syntax
--image-prefix=<image-registry-prefix>
Default value
registry.redhat.io/ubi9
Valid values
  • icr.io/cpopen/cpd
  • registry.redhat.io/ubi9
  • ${PRIVATE_REGISTRY_LOCATION}
--include-cluster-resources Include the cluster-scoped resources in the backup.
Status
Optional.
Syntax
--include-cluster-resources=true|false
Default value
true
Valid values
true
Include the cluster-scoped resources in the backup.
false
Do not include the cluster-scoped resources in the backup.
--include-namespaces Include the specified namespaces, including tethered namespaces, in the backup.
Status
Optional.
Syntax
--include-namespaces=<project-name1,project-name2,...>
Default value
${PROJECT_CPD_INST_OPERANDS}
Valid values
Any valid project names. (Comma-separated string array.)
--include-resources Resources to include in the backup, formatted as resource.group, such as storageclasses.storage.k8s.io (use '\*' for all resources).
Status
Optional.
Syntax
--include-resources=<resource-name1,resource-name2,...>
Default value
No default.
Valid values
Any valid resource names. (Comma separated string array. Use '*' for all resources.)
--labels Labels to apply to the backup.
Status
Optional.
Syntax
--labels=<map<label,label,...>>
Default value
No default.
Valid values
Valid label names. (Comma-separated map string array list.)
--posthooks Run the default scale-up of K8's resources and configmap post-restore hooks.
Status
Optional.
Syntax
--posthooks=true|false
Default value
true
Valid values
true
Run the default scale-up of K8's resources and configmap post-restore hooks.
false
Do not run default scale down of K8's resources and configmap post-restore hooks.
--prehooks Run default scale down of K8's resources and configmap pre-backup hooks.
Status
Optional.
Syntax
--prehooks=true|false
Default value
true
Valid values
true
Run default scale down of K8's resources and configmap pre-backup hooks.
false
Do not run default scale down of K8's resources and configmap pre-backup hooks.
--scale-always Quiesce via scale down.
Status
Optional.
Syntax
--scale-always
Default value
No default.
Valid values
Not applicable.
--scale-wait-timeout The scale wait timeout duration ('h' for hours, 'm' for minutes, 's' for seconds).
Status
Optional.
Syntax
--scale-wait-timeout=<h,m,s>
Default value
6m0s
Valid values
Any valid duration string. Examples: 1m, 30m, 1h, 2h45m
--selector

-l

Only back up resources that match the label selector.
Status
Optional.
Syntax
--selector=<label-selector>
Default value
No default.
Valid values
Not applicable.
--skip-hooks Skip the default scale down of resources and backup configmap hooks.
Status
Optional.
Syntax
--skip-hooks
Default value
No default
Valid values
Not applicable.
--snapshot-volumes Take snapshots of persistent volumes as part of the backup. When set to false, the volume is backed-up using restic. When set to true, a volume snapshot is created.
Status
Optional.
Syntax
--snapshot-volumes=true|false
Default value
false
Valid values
false
The volume is backed-up using Restic.
true
A volume snapshot is created.
--storage-location The backup location to use for the backup.
Status
Optional.
Syntax
--storage-location=<backup-location>
Default value
No default.
Valid values
A valid backup location.
--tenant-operator-namespace Restrict the scope of backup or restore commands to tenant operand namespaces that include tenant specific Cloud Pak Foundation Service Operators and IBM Software Hub Operators only.
Status
Optional.
Syntax
--tenant-operator-namespace
Default value
No default.
Valid values

A valid namespace name.

Notes: The following command is an alternative to using this option:
cpd-cli oadp client config set cpd-namespace=<cpd-namespace-name>

However, the option takes precedence over this command.

--try-skip-volume-selinux-label Add the TrySkipVolumeSELinuxLabel annotation and selinux runtimeClassName to the cpdbr-vol-mnt-pod.
Status
Optional.
Syntax
--try-skip-volume-selinux-label=true|false
Default value
true
Valid values
true|false
--ttl Specify how long to keep the data ('h' for hours, 'm' for minutes, 's' for seconds).
Status
Optional.
Syntax
--ttl=<h,m,s>
Default value
8760h
Valid values
A time setting in the format <h,m,s>.
--use-retain-pv-reclaim-policy Change persistent volumes to use the retain reclaim policy for backups.
Status
Optional.
Syntax
--use-retain-pv-reclaim-policy
Default value
No default.
Valid values
Not applicable.
--values Specify values in one or more YAML files.
Status
Optional.
Syntax
--values=<yaml-file-name1,yaml-file-name2,...>
Default value
No default.
Valid values
One or more YAML file names.
--vol-mnt-pod-cpu-limit Set the CPU limit for the cpdbr-vol-mnt pod.
Status
Optional.
Syntax
--vol-mnt-pod-cpu-limit=<cpu-limit-value>
Default value
500m
Valid values
A CPU limit value.
--vol-mnt-pod-cpu-request Set the CPU request for the cpdbr-vol-mnt pod.
Status
Optional.
Syntax
--vol-mnt-pod-cpu-request=<cpu-request-value>
Default value
100m
Valid values
Plain integer or fixed-point number that uses one the following quantity suffixes: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.

Examples: 0, 100m, 256Mi, 1Gi

--vol-mnt-pod-mem-limit Set the memory limit for the cpdbr-vol-mnt pod.
Status
Optional.
Syntax
--vol-mnt-pod-mem-limit=<memory-limit-value>
Default value
512Mi
Valid values
Plain integer or fixed-point number that uses one the following quantity suffixes: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.

Examples: 0, 100m, 256Mi, 1Gi

--vol-mnt-pod-mem-request Set the memory request for the cpdbr-vol-mnt pod.
Status
Optional.
Syntax
--vol-mnt-pod-mem-request=<memory-request-value>
Default value
256Mi
Valid values
Plain integer or fixed-point number that uses one the following quantity suffixes: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.

Examples: 0, 100m, 256Mi, 1Gi

--vol-mnt-service-account The service account for the cpdbr-vol-mnt pod.
Status
Optional.
Syntax
--vol-mnt-service-account=<service-request-value>
Default value
default
Valid values
Valid cpdbr-vol-mnt service account.
--volume-snapshot-locations List of locations (at most one per provider) where volume snapshots are stored.
Status
Optional.
Syntax
--volume-snapshot-locations=<volume-snapshot-location1,volume-snapshot-location2,...>
Default value
No default.
Valid values
Valid volume snapshot locations.
--wait-timeout The wait timeout setting ('h' for hours, 'm' for minutes, 's' for seconds).
Status
Optional.
Syntax
--wait-timeout=<h,m,s>
Default value
10m0s
Valid values
Any valid duration string. Examples: 1m, 30m, 1h, 2h45m
--with-checkpoint Run a checkpoint before backup.
Status
Optional.
Syntax
--with-checkpoint
Default value
No default.
Valid values
Not applicable.

Global options

You can also use the following global options with this command:

Table 2: Command global options
Option Description
--add_dir_header Add the file directory to the header of log messages.
Status
Optional.
Syntax
--add_dir_header=true|false
Default value
false
Valid values
false
Do not add the file directory to the header of log messages.
true
Add the file directory to the header of log messages.
--alsologtostderr Log to standard error as well as files.
Status
Optional.
Syntax
--alsologtostderr=true|false
Default value
false
Valid values
false
Do not log to standard error as well as files.
true
Log to standard error as well as files.
Note: This option has no effect when --logtostderr=true.
--cpd-namespace The IBM Software Hub namespace in which the utility operates.
Status
Optional.
Syntax
--cpd-namespace=<cpd-namespace>
Default value
No default value.
Valid values
A valid IBM® Software Hub namespace.
Tip: The following command is an alternative to using this option:
cpd-cli oadp client config set cpd-namespace=<cpd-namespace-name>
However, the option takes precedence over the command.
--kubeconfig Paths to a kubeconfig. Only required if out-of-cluster.
Status
Optional.
Syntax
--kubeconfig=<kubeconfig-paths>
Default value
No default.
Valid values
Valid kubeconfig paths.
--log-level The command log level.
Status
Optional.
Syntax
--log-level=info|debug|warn|error|panic|trace
Default value
info
Valid values
debug
Debug messages are written to the log.
error
Error messages are written to the log.
info
Informative messages are written to the log.
panic
Panic messages are written to the log.
warn
Warning messages are written to the log.
--log-backtrace-at traceLocation When logging hits line file:N, emit a stack trace.
Status
Optional.
Syntax
--log-backtrace-at traceLocation=<integer>
Default value

0.

Valid values
Any positive integer.
--log-dir If non-empty, write log files in this directory.
Status
Optional.
Syntax
--log-dir=<log_directory>
Default value
No default.
Valid values
A valid directory.
Note: This option has no effect when --logtostderr=true.
--log-file If non-empty, use this log file.
Status
Optional.
Syntax
--log-file=<log_file_name>
Default value
No default.
Valid values
A valid directory.
Note: This option has no effect when --logtostderr=true.
--log_file_max_size The maximum size, in MB, that a log file can grow to. If you specify 0, the maximum file size is unlimited.
Status
Optional.
Syntax
--log_file_max_size=<uint>
Default value
1800.
Valid values
A valid unsigned integer.
Note: This option has no effect when --logtostderr=true.
--logtostderr Log to standard error instead of files.
Status
Optional.
Syntax
--logtostderr=true|false
Default value
true
Valid values
true
Log to standard error instead of files.
false
Log to files.
--namespace

-n

The namespace where OADP is installed.
Status
Optional.
Syntax
--namespace=<oadp-namespace>
Default value
No default value.
Valid values
Valid namespace name.
Tip: The following command is an alternative to using this option:
cpd-cli oadp client config set namespace=<OADP-operator-namespace>
However, the option takes precedence over the command.
--one-output Specifies whether to only write logs to their native severity level.
Status
Optional.
Syntax
--one-output=true|false
Default value
false
Valid values
false
Write logs to their native severity level and also to each lower severity level.
true
Write logs only to their native severity level.
Note: This option has no effect when --logtostderr=true.
--skip-headers Specifies whether to avoid header prefixes in log messages.
Status
Optional.
Syntax
--skip-headers
Default value
false
Valid values
false
Do not avoid header prefixes in log messages.
true
Avoid header prefixes in log messages.
--skip-log-headers Specifies whether to avoid header prefixes when opening log files.
Status
Optional.
Syntax
--skip-log-headers
Default value
false
Valid values
false
Do not avoid headers when opening log files.
true
Avoid headers when opening log files.
Note: This option has no effect when --logtostderr=true.
--stderrthreshold severity Logs at or above the specified threshold. Go to stderr when writing to files and stderr.
Status
Optional.
Syntax
--stderrthreshold severity=<integer>
Default value
2
Valid values
Any positive integer.
Note: This option has no effect when --logtostderr=true or .--alsologtostderr=false
--v

-v

Number for the log level verbosity.
Status
Optional.
Syntax
--v=<integer>
Default value
No default.
Valid values
Any valid positive integer.
--verbose Logs include more detailed messages.
Status
Optional.
Syntax
--verbose
Default value
No default.
Valid values
Not applicable.
--vmodule moduleSpec Comma-separated list of pattern=N settings for file-filtered logging.
Status
Optional.
Syntax
--vmodule moduleSpec=<pattern1, pattern2, and so on>
Default value
No default.
Valid values

Examples

Note: The following examples use the recommended installation environment variables.

It is strongly recommended that you use a script to create environment variables with the correct values for your environment. For more information, see Setting up installation environment variables.

Create a snapshot with Restic for the entire IBM Cloud Pak for Data instance (<cpd-snapshot-name>) in an air-gapped environment.
cpd-cli oadp backup create <cpd-snapshot-name> \
--cleanup-completed-resources \
--default-volumes-to-fs-backup] \
--exclude-resources='Event,Event.events.k8s.io'\
--image-prefix=registry.redhat.io/ubi9 \
--include-namespaces=<project-name>\
--log-level=debug \
--snapshot-volumes=false \
--verbose
Create a snapshot for the entire IBM Cloud Pak for Data instance, which includes all Tenant Namespaces (Operator, Control Plane and any Tethered Namespaces).
cpd-cli oadp backup create <cpd-snapshot-name> \
--tenant-operator-namespace ${CPD_OPERATOR_NS} \
--exclude-tenant-operator-namespace \
--exclude-resources='event,event.events.k8s.io,imagetags.openshift.io,operatorgroups,roles,rolebindings,serviceaccounts,catalogsources.operators.coreos.com,subscriptions.operators.coreos.com,clusterserviceversions.operators.coreos.com,installplans.operators.coreos.com,operandconfig,operandregistry,operandrequest,clients.oidc.security.ibm.com,authentication.operator.ibm.com,namespacescopes,commonservices,clusters.postgresql.k8s.enterprisedb.io' \
--default-volumes-to-fs-backup] \
--snapshot-volumes=false \
--cleanup-completed-resources \
--log-level=debug \
--verbose