---
title: "YAML configuration for Aerospike Backup Control (absctl)"
description: "Use YAML configuration files with absctl backup and absctl restore for scripted and scheduled backup and restore jobs."
---

# YAML configuration for Aerospike Backup Control (absctl)

> For the complete documentation index see: [llms.txt](https://aerospike.com/docs/llms.txt)
> 
> All documentation pages available in markdown.

`absctl backup` and `absctl restore` accept a YAML configuration file with the `--config` flag. Use a configuration file when you want repeatable settings for cron jobs, CI pipelines, or runbooks without long command lines.

`absctl` does not support the legacy `astools.conf` INI-style configuration used by `asbackup` and `asrestore`. Use YAML with `--config` instead.

## Use a configuration file

Pass the file path to `--config` when you run a subcommand:

Terminal window

```shell
absctl backup --config /PATH/TO/BACKUP.yaml

absctl restore --config /PATH/TO/RESTORE.yaml
```

When you set `--config`, `absctl` loads settings from that file instead of the command line: logging, cluster connectivity, backup or restore options, compression, encryption, Secret Agent, cloud storage, and local disk buffering. Command-line flags for these settings, including `--verbose` and other logging flags, are not merged with the file. Put every setting you need in the YAML file.

`absctl` validates YAML keys strictly. Unknown fields cause the command to fail at startup.

### Minimal backup example

Save the following as `backup.yaml`:

```yaml
cluster:

  seeds:

    - host: 127.0.0.1

      port: 3000

backup:

  directory: backup_dir

  namespace: test
```

Run:

Terminal window

```shell
absctl backup --config backup.yaml
```

### Minimal restore example

Save the following as `restore.yaml`:

```yaml
cluster:

  seeds:

    - host: 127.0.0.1

      port: 3000

restore:

  directory: backup_dir

  namespace: test
```

Run:

Terminal window

```shell
absctl restore --config restore.yaml
```

## Configuration sections

Backup and restore configuration files share the same top-level sections for logging, cluster connectivity, compression, encryption, Secret Agent, and cloud providers. Backup files also include a `local` section for local disk buffering. Restore files use a `restore` section instead of `backup`.

| Section | Applies to | Description |
| --- | --- | --- |
| `app` | backup, restore | Logging: `verbose`, `log-level`, `log-json`, and `log-file`. |
| `cluster` | backup, restore | Aerospike cluster seeds, credentials, client timeouts, and TLS. |
| `backup` or `restore` | backup or restore | Operation-specific options. Maps to the flags documented in [Run absctl backup](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/backup/use) and [Run absctl restore](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/restore/use). |
| `compression` | backup, restore | Compression or decompression mode and ZSTD level. |
| `encryption` | backup, restore | Encryption or decryption mode and key source. |
| `secret-agent` | backup, restore | [Aerospike Secret Agent](https://aerospike.com/docs/database/tools/secret-agent) connection for resolving `secrets:resource:key` values in YAML. See [Secret usage with backup and restore](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/secrets). Note the singular key name: the Aerospike Backup Service uses a plural `secret-agents` key for the equivalent setting, which is not valid here. |
| `aws`, `gcp`, `azure` | backup, restore | Cloud storage settings. See [Back up to cloud storage](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/backup/cloud-storage) and [Restore from cloud storage](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/restore/cloud-storage). |
| `local` | backup only | Local disk buffer size for directory backups. |

YAML field names use kebab-case and match the corresponding command-line flag names. List-valued flags such as `set-list`, `bin-list`, and `partition-list` are YAML arrays.

## Backup configuration schema

The following schema lists every field exposed as a command-line flag for `absctl backup`, with example values and inline descriptions. Only include the fields you need.

The `aws.s3` and `azure.blob` sections share their underlying structure with `absctl restore`, so a few restore-only fields, such as `tier` and `restore-poll-duration`, also decode successfully in a backup configuration file even though they have no effect on a backup operation. Do not set them here.

`node-list`, `prefer-racks`, `rack-list`, and `partition-list` are mutually exclusive with each other, as noted in their inline comments below. The schema shows example values for all of them for reference, but set only one in an actual configuration file.

View full backup configuration schema

```yaml
app:

  # Enable more detailed logging.

  verbose: false

  # Determine log level for verbose output. Log levels are: debug, info, warn, error.

  log-level: debug

  # Set output in JSON format for parsing by external tools.

  log-json: false

  # Path to log file. If empty, logs will be printed to stderr.

  log-file: ""

cluster:

  seeds:

    - host: 127.0.0.1

      tls-name: ""

      port: 3000

  # The Aerospike user for the connection to the Aerospike cluster.

  user: db_user

  # The Aerospike password for the connection to the Aerospike

  # cluster.

  password: db_password

  # The authentication mode used by the Aerospike server. INTERNAL

  # uses standard user/pass. EXTERNAL uses external methods (like LDAP)

  # which are configured on the server. EXTERNAL requires TLS. PKI allows

  # TLS authentication and authorization based on a certificate. No

  # username needs to be configured.

  auth: INTERNAL

  # Initial host connection timeout duration. The timeout when opening a connection

  # to the server host for the first time.

  client-timeout: 30000

  # Idle timeout. Every time a connection is used, its idle

  # deadline will be extended by this duration. When this deadline is reached,

  # the connection will be closed and discarded from the connection pool.

  # The value is limited to 24 hours (86400s).

  # It's important to set this value to a few seconds less than the server's proto-fd-idle-ms

  # (default 60000 milliseconds or 1 minute), so the client does not attempt to use a socket

  # that has already been reaped by the server.

  # Connection pools are now implemented by a LIFO stack. Connections at the tail of the

  # stack will always be the least used. These connections are checked for IdleTimeout

  # on every tend (usually 1 second).

  client-idle-timeout: 60000

  # Specifies the login operation timeout for external authentication methods such as LDAP.

  client-login-timeout: 10000

  # Determines whether the client uses "services-alternate" instead

  # of "services" in info requests during cluster tending.

  services-alternate: false

  tls:

    # Enable TLS authentication with Aerospike. If false, other TLS

    # options are ignored. Disabled by default; this example shows

    # a populated TLS block.

    enable: true

    # Set the TLS protocol selection criteria. This format is the same

    # as Apache's SSLProtocol documented at

    # https://httpd.apache.org/docs/current/mod/mod_ssl.html#sslprotocol

    protocols: +TLSv1.2

    # The CA used when connecting to Aerospike.

    cafile: ""

    # A path containing CAs for connecting to Aerospike.

    capath: ""

    # The certificate file for mutual TLS authentication with

    # Aerospike.

    certfile: ""

    # The key file used for mutual TLS authentication with Aerospike.

    keyfile: ""

    # The password used to decrypt the key file if encrypted.

    keyfile-password: ""

backup:

  # The directory that holds the backup files. Required, unless -o or -e is used.

  directory: backup_dir

  # The namespace to be backed up. Required.

  namespace: source-ns1

  # The set(s) to be backed up. Accepts comma-separated values with no spaces: 'set1,set2,set3'

  # If multiple sets are being backed up, filter-exp cannot be used.

  # If empty, include all sets.

  set-list:

    - set1

    - set2

  # Only include the given bins in the backup.

  # Accepts comma-separated values with no spaces: 'bin1,bin2,bin3'

  # If empty include all bins.

  bin-list:

    - bin1

    - bin2

  # Maximum number of scan calls to run in parallel.

  # The scan operation will be launched on all corresponding nodes in parallel, simultaneously.

  # If only one partition range is given, or the entire namespace is being backed up, the range

  # of partitions will be evenly divided by this number to be processed in parallel. Otherwise, each

  # filter cannot be parallelized individually, so you may only achieve as much parallelism as there are

  # partition filters. Accepts values from 1-1024 inclusive.

  parallel: 1

  # Don't back up any records.

  no-records: false

  # Don't back up any indexes.

  no-indexes: false

  # Don't back up any UDFs.

  no-udfs: false

  # Limit total returned records per second (RPS). If 0, no limit is applied.

  records-per-second: 0

  # Maximum number of retries before aborting the current transaction.

  max-retries: 5

  # Total transaction timeout (in ms). If 0, no timeout is applied.

  total-timeout: 0

  # Socket timeout (in ms). If 0, the value for total-timeout is used.

  # If both this and total-timeout are 0, there is no socket idle time limit.

  socket-timeout: 10000

  # The limits for read/write storage bandwidth in MiB/s.

  # Default is 0 (no limit).

  bandwidth: 0

  # Backup to a single backup file. Use '-' for stdout. Required, unless -d or -e is used.

  # file-limit will be ignored if this parameter is used.

  output-file: ""

  # Remove an existing backup file (-o) or entire directory (-d) and replace with the new backup.

  remove-files: false

  # <YYYY-MM-DD_HH:MM:SS>

  # Only include records that last changed before the given

  # date and time. May combined with modified-after to specify a range.

  modified-before: ""

  # <YYYY-MM-DD_HH:MM:SS>

  # Perform an incremental backup; only include records

  # that changed after the given date and time. The system's

  # local timezone applies. If only HH:MM:SS is specified, then

  # today's date is assumed as the date. If only YYYY-MM-DD is

  # specified, then 00:00:00 (midnight) is assumed as the time.

  modified-after: ""

  # Rotate backup files when their size crosses the given

  # value (in MiB). Only used when backing up to a directory.

  file-limit: 250

  # Backup records after record digest in record's partition plus all succeeding

  # partitions. Used to resume backup with last record received from previous

  # incomplete backup.

  # This argument is mutually exclusive with partition-list.

  # Format: Base64 encoded string

  # Example: EjRWeJq83vEjRRI0VniavN7xI0U=

  after-digest: ""

  # The number of records approximately to back up. 0 - all records.

  # To use this argument, parallel must be set to 1.

  max-records: 0

  # Do not include bin data in the backup. Use this flag for data sampling or troubleshooting.

  # On restore, all records not containing bin data will be skipped.

  no-bins: false

  # The amount of milliseconds to sleep between retries after an error.

  # This field is ignored when max-retries is zero.

  sleep-between-retries: 5

  # Base64 encoded filter expression. Use the encoded filter expression in each scan call,

  # which can be used to do a partial backup. The expression to be used can be Base64

  # encoded through any client. This argument is mutually exclusive with multi-set backup.

  filter-exp: ""

  # Remove existing backup file (-o) or files (-d) without performing a backup.

  remove-artifacts: false

  # If true, do not apply Base64 encoding to BLOBs and instead write raw binary data,

  # resulting in smaller backup files.

  compact: false

  # <addr 1>:<port 1>[,<addr 2>:<port 2>[,...]]

  # <node name 1>[,<node name 2>[,...]]

  # To get the correct node address, use the info command 'service-tls-std' if the database is configured to use TLS

  # or 'service-clear-std' if no TLS is configured.

  # To get the node name, use the 'node:' info command.

  # Back up the given cluster nodes only.

  # This argument is mutually exclusive with partition-list, after-digest, rack-list, prefer-racks arguments.

  # Default: back up all nodes in the cluster

  node-list:

    - 127.0.0.1:3000

    - 127.0.0.1:3005

  # Only include records that have no TTL set (persistent records).

  no-ttl-only: false

  # <rack id 1>[,<rack id 2>[,...]]

  # A list of Aerospike Database rack IDs to prefer when reading records for a backup.

  # This argument is mutually exclusive with rack-list and node-list.

  prefer-racks:

    - "1"

  # List of partitions <filter[,<filter>[...]]> to back up. Partition filters can be ranges,

  # individual partitions, or records after a specific digest within a single partition.

  # To use this argument, parallel must be set equal to or greater

  # than the number of elements in the partition list

  # This argument is mutually exclusive with after-digest.

  # Filter: <begin partition>[-<partition count>]|<digest>

  # begin partition: 0-4095

  # partition count: 1-4096 Default: 1

  # digest: Base64 encoded string

  # Examples: 0-1000, 1000-1000, 2222, EjRWeJq83vEjRRI0VniavN7xI0U=

  # Default: 0-4096 (all partitions)

  partition-list:

    - 0-1000

  # Estimate the backed-up record size from a random sample of

  # 10,000 (default) records at 99.9999% confidence to estimate the full backup size.

  # It ignores any filter:  filter-exp, node-list, modified-after, modified-before, no-ttl-only,

  # after-digest, partition-list.

  estimate: false

  # The number of samples to take when running a backup estimate.

  estimate-samples: 10000

  # Name of a state file that will be saved in backup directory.

  # Works only with file-limit parameter. As file-limit is reached and the file is closed,

  # the current state will be saved. Works only for default and/or partition backup.

  # Not work with rack-list or nodelist.

  state-file-dst: ""

  # Resumes an interrupted or failed backup from where it left off, given the .state file

  # that was generated from the interrupted or failed run.

  # continue and state-file-dst are mutually exclusive.

  continue: ""

  # Number of records will be read on one iteration for continuation backup.

  # Affects size if overlap on resuming backup after an error.

  # Used only with state-file-dst or continue.

  scan-page-size: 10000

  # When using directory parameter, prepend a prefix to the names of the generated files.

  # Not applicable when output-file is used.

  output-file-prefix: ""

  # <rack id 1>[,<rack id 2>[,...]]

  # A list of Aerospike Database rack IDs to backup.

  # Unlike prefer-racks, only specified racks will be backed up.

  # This argument is mutually exclusive with prefer-racks and node-list.

  rack-list:

    - "1"

  # Set the timeout (in ms) for asinfo commands sent from backup tool to the database.

  # The info commands are to check version, get indexes, get udfs, count records, and check batch write support.

  info-timeout: 10000

  # Number of retries to send info commands before failing.

  info-max-retries: 3

  # Increases the delay between subsequent retry attempts.

  # The actual delay is calculated as: info-retry-interval * (info-retry-multiplier ^ attemptNumber)

  info-retry-multiplier: 1

  # Set the initial interval for a retry (in ms) when info commands are sent.

  info-retry-interval: 1000

  # Buffer size in MiB for stdin and stdout operations. Used for pipelining.

  std-buffer: 4

compression:

  # Enables compressing of backup files using the specified compression algorithm.

  # Supported compression algorithms are: ZSTD, NONE

  # Set the ZSTD compression level via the compression-level option.

  compress: NONE

  # ZSTD compression level.

  level: 3

encryption:

  # Enables encryption of backup files using the specified encryption algorithm.

  # Supported encryption algorithms are: NONE, AES128, AES256.

  # A private key must be given, either with the encryption-key-file option or

  # the encryption-key-env option or the encryption-key-secret.

  encrypt: NONE

  # Gets the encryption key from the given file, which must be in PEM format.

  key-file: ""

  # Gets the encryption key from the given environment variable, which must be Base64 encoded.

  key-env: ""

  # Gets the encryption key from secret-agent.

  key-secret: ""

secret-agent:

  # Secret Agent connection type. Supported types: TCP, UNIX.

  connection-type: TCP

  # Secret Agent host for TCP connection or socket file path for UDS connection.

  address: ""

  # Secret Agent port (only for TCP connection).

  port: 0

  # Secret Agent connection and reading timeout.

  timeout: 10000

  # Path to CA file for encrypted connections.

  ca-file: ""

  # Path to a client certificate file for mutual TLS authentication.

  cert-file: ""

  # Path to a client private key file for mutual TLS authentication.

  key-file: ""

  # TLS name (SNI) for encrypted connections.

  tls-name: ""

  # Whether Secret Agent responses are Base64 encoded.

  is-base64: false

aws:

  s3:

    # Existing S3 bucket name

    bucket-name: ""

    # The S3 region that the bucket(s) exist in.

    region: ""

    # The S3 profile to use for credentials.

    profile: ""

    # An alternate URL endpoint to send S3 API calls to.

    endpoint-override: ""

    # S3 access key ID. If not set, profile auth info will be used.

    access-key-id: ""

    # S3 secret access key. If not set, profile auth info will be used.

    secret-access-key: ""

    # Apply storage class to backup files. Storage classes are:

    # STANDARD,

    # REDUCED_REDUNDANCY,

    # STANDARD_IA,

    # ONEZONE_IA,

    # INTELLIGENT_TIERING,

    # GLACIER,

    # DEEP_ARCHIVE,

    # OUTPOSTS,

    # GLACIER_IR,

    # SNOW,

    # EXPRESS_ONEZONE.

    storage-class: ""

    # Maximum number of attempts that should be made in case of an error.

    retry-max-attempts: 10

    # Max backoff duration (in ms) between retried attempts.

    # The delay increases exponentially with each retry up to the maximum specified by s3-retry-max-backoff.

    retry-max-backoff: 90000

    # Chunk size controls the maximum number of megabytes of the object that the app will attempt to send to

    # the storage in a single request. Objects smaller than the size will be sent in a single request,

    # while larger objects will be split over multiple requests. Minimum value is 5.

    chunk-size: 50

    # Defines the max number of concurrent uploads to be performed to upload the file.

    # Each concurrent upload will create a buffer of size s3-chunk-size.

    upload-concurrency: 0

    # Calculate checksum for each uploaded object.

    calculate-checksum: false

    # Max connections per host optionally limits the total number of connections per host,

    # including connections in the dialing, active, and idle states. On limit violation, dials will block.

    # Should be greater than parallel * s3-upload-concurrency to avoid upload speed degradation.

    # 0 means no limit.

    max-conns-per-host: 0

    # Timeout (in ms) specifies a time limit for requests made by this Client.

    # The timeout includes connection time, any redirects, and reading the response body.

    # 0 means no limit.

    request-timeout: 600000

gcp:

  storage:

    # Path to file containing service account JSON key.

    key-path: ""

    # Name of the Google cloud storage bucket.

    bucket-name: ""

    # An alternate url endpoint to send GCP API calls to.

    endpoint-override: ""

    # Max retries specifies the maximum number of attempts a failed operation will be retried

    # before producing an error.

    retry-max-attempts: 10

    # Max backoff is the maximum value (in ms) of the retry period.

    retry-max-backoff: 90000

    # Initial backoff is the initial value (in ms) of the retry period.

    retry-init-backoff: 60000

    # Multiplier is the factor by which the retry period increases.

    # It should be greater than 1.

    retry-backoff-multiplier: 2

    # Chunk size controls the maximum number of megabytes of the object that the app will attempt to send to

    # the storage in a single request. Objects smaller than the size will be sent in a single request,

    # while larger objects will be split over multiple requests. Minimum value is 1.

    chunk-size: 50

    # Calculate checksum for each uploaded object.

    calculate-checksum: false

    # Max connections per host optionally limits the total number of connections per host,

    # including connections in the dialing, active, and idle states. On limit violation, dials will block.

    # Should be greater than parallel to avoid speed degradation.

    # 0 means no limit.

    max-conns-per-host: 0

    # Timeout (in ms) specifies a time limit for requests made by this Client.

    # The timeout includes connection time, any redirects, and reading the response body.

    # 0 means no limit.

    request-timeout: 600000

azure:

  blob:

    # Azure account name for account name, key authorization.

    account-name: ""

    # Azure account key for account name, key authorization.

    account-key: ""

    # Azure tenant ID for Azure Active Directory authorization.

    tenant-id: ""

    # Azure client ID for Azure Active Directory authorization.

    client-id: ""

    # Azure client secret for Azure Active Directory authorization.

    client-secret: ""

    # Azure endpoint.

    endpoint: ""

    # Azure container Name.

    container-name: ""

    # Azure access tier is applied to created backup files.

    # If not set, tier will be determined by the Azure storage account settings and rules.

    # Tiers are: Cold, Cool, Hot.

    access-tier: ""

    # Max retries specifies the maximum number of attempts a failed operation will be retried

    # before producing an error.

    retry-max-attempts: 10

    # Retry delay specifies the initial amount of delay (in ms) to use before retrying an operation.

    # The value is used only if the HTTP response does not contain a Retry-After header.

    # The delay increases exponentially with each retry up to the maximum specified by azure-retry-max-delay.

    retry-delay: 60000

    # Max retry delay specifies the maximum delay (in ms) allowed before retrying an operation.

    # Typically the value is greater than or equal to the value specified in azure-retry-delay.

    retry-max-delay: 90000

    # Defines the max number of concurrent uploads to be performed to upload the file.

    # Each concurrent upload will create a buffer of size azure-block-size.

    upload-concurrency: 1

    # Calculate checksum for each uploaded object.

    calculate-checksum: false

    # Max connections per host optionally limits the total number of connections per host,

    # including connections in the dialing, active, and idle states. On limit violation, dials will block.

    # Should be greater than parallel * azure-upload-concurrency to avoid upload speed degradation.

    # 0 means no limit.

    max-conns-per-host: 0

    # Timeout (in ms) specifies a time limit for requests made by this Client.

    # The timeout includes connection time, any redirects, and reading the response body.

    # 0 means no limit.

    request-timeout: 600000

    # Block size in MiB defines the size of the buffer used during upload. Minimum value is 1.

    block-size: 50

local:

  disk:

    # Buffer size in megabytes for local file writes.

    buffer-size: 4
```

## Restore configuration schema

The following schema lists every field exposed as a command-line flag for `absctl restore`, with example values and inline descriptions. Only include the fields you need.

::: caution
Setting a cloud `tier` or `access-tier` field to restore or rehydrate archived files triggers an asynchronous cloud-provider operation that cannot be canceled. See the inline comments in the `aws.s3` and `azure.blob` sections below before setting these fields.
:::
View full restore configuration schema

```yaml
app:

  # Enable more detailed logging.

  verbose: false

  # Determine log level for verbose output. Log levels are: debug, info, warn, error.

  log-level: debug

  # Set output in JSON format for parsing by external tools.

  log-json: false

  # Path to log file. If empty, logs will be printed to stderr.

  log-file: ""

cluster:

  seeds:

    - host: 127.0.0.1

      tls-name: ""

      port: 3000

  # The Aerospike user for the connection to the Aerospike cluster.

  user: db_user

  # The Aerospike password for the connection to the Aerospike

  # cluster.

  password: db_password

  # The authentication mode used by the Aerospike server. INTERNAL

  # uses standard user/pass. EXTERNAL uses external methods (like LDAP)

  # which are configured on the server. EXTERNAL requires TLS. PKI allows

  # TLS authentication and authorization based on a certificate. No

  # username needs to be configured.

  auth: INTERNAL

  # Initial host connection timeout duration. The timeout when opening a connection

  # to the server host for the first time.

  client-timeout: 30000

  # Idle timeout. Every time a connection is used, its idle

  # deadline will be extended by this duration. When this deadline is reached,

  # the connection will be closed and discarded from the connection pool.

  # The value is limited to 24 hours (86400s).

  # It's important to set this value to a few seconds less than the server's proto-fd-idle-ms

  # (default 60000 milliseconds or 1 minute), so the client does not attempt to use a socket

  # that has already been reaped by the server.

  # Connection pools are now implemented by a LIFO stack. Connections at the tail of the

  # stack will always be the least used. These connections are checked for IdleTimeout

  # on every tend (usually 1 second).

  client-idle-timeout: 60000

  # Specifies the login operation timeout for external authentication methods such as LDAP.

  client-login-timeout: 10000

  # Determines whether the client uses "services-alternate" instead

  # of "services" in info requests during cluster tending.

  services-alternate: false

  tls:

    # Enable TLS authentication with Aerospike. If false, other TLS

    # options are ignored. Disabled by default; this example shows

    # a populated TLS block.

    enable: true

    # Set the TLS protocol selection criteria. This format is the same

    # as Apache's SSLProtocol documented at

    # https://httpd.apache.org/docs/current/mod/mod_ssl.html#sslprotocol

    protocols: +TLSv1.2

    # The CA used when connecting to Aerospike.

    cafile: ""

    # A path containing CAs for connecting to Aerospike.

    capath: ""

    # The certificate file for mutual TLS authentication with

    # Aerospike.

    certfile: ""

    # The key file used for mutual TLS authentication with Aerospike.

    keyfile: ""

    # The password used to decrypt the key file if encrypted.

    keyfile-password: ""

restore:

  # The directory that holds the backup files. Required, unless input-file is used.

  directory: backup_dir

  # Used to restore to a different namespace. Example: source-ns,destination-ns

  namespace: source-ns1

  # Only restore the given sets from the backup.

  # Default: restore all sets.

  set-list:

    - set1

    - set2

  # Only restore the given bins in the backup.

  # If empty, include all bins.

  bin-list:

    - bin1

    - bin2

  # The number of restore threads. Accepts values from 1-1024 inclusive.

  # Default is 0, which tells absctl restore to calculate the value automatically as the number of CPUs on your machine.

  parallel: 1

  # Don't restore any records.

  no-records: false

  # Don't restore any secondary indexes.

  no-indexes: false

  # Don't restore any UDFs.

  no-udfs: false

  # Limit total returned records per second (RPS). If 0, no limit is applied.

  records-per-second: 0

  # Total transaction timeout (in ms). If 0, no timeout is applied.

  total-timeout: 10000

  # Socket timeout (in ms). If 0, the value for total-timeout is used.

  # If both this and total-timeout are 0, there is no socket idle time limit.

  socket-timeout: 10000

  # The limits for read/write storage bandwidth in MiB/s.

  # Default is 0 (no limit).

  bandwidth: 0

  # Restore from a single backup file. Use '-' for stdin.

  # Required, unless directory or directory-list is used.

  input-file: ""

  # A list of paths to directories that hold the backup files. Required,

  # unless input-file or directory is used. Each directory is a separate list item.

  directory-list:

    - dir1

    - dir2

  # A common root path for all paths used in directory-list.

  # This path is prepended to all entries in directory-list.

  # Example: 'absctl restore parent-directory /common/root/path

  # directory-list /path/to/dir1/,/path/to/dir2'

  parent-directory: ""

  # Disables the use of batch writes when restoring records to the Aerospike cluster.

  # By default, the cluster is checked for batch write support. Only set this flag if you explicitly

  # don't want batch writes to be used or if restore tool is failing to work because it cannot recognize

  # that batch writes are disabled.

  disable-batch-writes: false

  # The max allowed number of records to simultaneously upload to Aerospike.

  # Default is 128 with batch writes enabled. If you disable batch writes,

  # this flag is superseded because each worker sends writes one by one.

  # All three batch flags are linked. If disable-batch-writes=false,

  # The restore tool uses batch write workers to send data to the database.

  # restore tool creates a number of workers equal to max-async-batches that work in parallel,

  # and form and send a number of records equal to batch-size to the database.

  batch-size: 128

  # To send data to Aerospike Database, restore tool creates write workers that work in parallel.

  # This value is the number of workers that form batches and send them to the database.

  # For Aerospike Database versions prior to 6.0, 'batches' are only a logical grouping of records,

  # and each record is uploaded individually.

  # The true max number of async Aerospike calls would then be <max-async-batches> * <batch-size>.

  max-async-batches: 32

  # Pre-fills the connection pool with connections to all nodes, which batch restore requires.

  # By default, this is calculated as (max-async-batches + 1), since one connection per node is reserved

  # for tend operations and is not used for transactions.

  warm-up: 0

  # For records with expirable void-times, add N seconds of extra-ttl to the

  # recorded void-time.

  extra-ttl: 0

  # Ignore errors specific to records, not UDFs or indexes. The errors are:

  # AEROSPIKE_RECORD_TOO_BIG,

  # AEROSPIKE_KEY_MISMATCH,

  # AEROSPIKE_BIN_NAME_TOO_LONG,

  # AEROSPIKE_ALWAYS_FORBIDDEN,

  # AEROSPIKE_FAIL_FORBIDDEN,

  # AEROSPIKE_BIN_TYPE_ERROR,

  # AEROSPIKE_BIN_NOT_FOUND.

  # By default, these errors are not ignored and restore tool terminates.

  ignore-record-error: false

  # Skip modifying records that already exist in the namespace.

  unique: false

  # Fully replace records that already exist in the namespace.

  # This option still performs a generation check by default and needs to be combined with the -g option

  # if you do not want to perform a generation check.

  # This option is mutually exclusive with unique.

  replace: false

  # Don't check the generation of records that already exist in the namespace.

  no-generation: false

  # Set the initial interval for a retry (in ms) when data is sent to the Aerospike database

  # during a restore. This retry sequence is triggered by the following non-critical errors:

  # AEROSPIKE_NO_AVAILABLE_CONNECTIONS_TO_NODE,

  # AEROSPIKE_TIMEOUT,

  # AEROSPIKE_DEVICE_OVERLOAD,

  # AEROSPIKE_NETWORK_ERROR,

  # AEROSPIKE_SERVER_NOT_AVAILABLE,

  # AEROSPIKE_BATCH_FAILED,

  # AEROSPIKE_MAX_ERROR_RATE.

  # This base timeout value is also used as the interval multiplied by retry-multiplier to increase

  # the timeout value between retry attempts.

  retry-base-interval: 1000

  # Increases the delay between subsequent retry attempts for the errors listed under retry-base-interval.

  # The actual delay is calculated as: retry-base-interval * (retry-multiplier ^ attemptNumber)

  retry-multiplier: 1

  # Set the maximum number of retry attempts for the errors listed under retry-base-interval.

  # The default is 0, indicating no retries will be performed

  retry-max-attempts: 0

  # Validate backup files without restoring.

  validate: false

  # Set the timeout (in ms) for asinfo commands sent from restore tool to the database.

  # The info commands are to check version, get indexes, get udfs, count records, and check batch write support.

  info-timeout: 10000

  # Number of retries to send info commands before failing.

  info-max-retries: 3

  # Increases the delay between subsequent retry attempts.

  # The actual delay is calculated as: info-retry-interval * (info-retry-multiplier ^ attemptNumber)

  info-retry-multiplier: 1

  # Set the initial interval for a retry (in ms) when info commands are sent.

  info-retry-interval: 1000

  # Defines when to restore metadata (secondary indexes and UDFs).

  # If set to true, metadata from separate file will be restored after all records have been processed.

  apply-metadata-last: false

  # Buffer size in MiB for stdin and stdout operations. Used for pipelining.

  std-buffer: 4

compression:

  # Enables decompressing of backup files using the specified compression algorithm.

  # This must match the compression mode used when backing up the data.

  # Supported compression algorithms are: ZSTD, NONE

  # Set the ZSTD compression level via the compression-level option.

  compress: NONE

  # ZSTD compression level.

  level: 3

encryption:

  # Enables decryption of backup files using the specified encryption algorithm.

  # This must match the encryption mode used when backing up the data.

  # Supported encryption algorithms are: NONE, AES128, AES256.

  # A private key must be given, either with the encryption-key-file option or

  # the encryption-key-env option or the encryption-key-secret.

  encrypt: NONE

  # Gets the encryption key from the given file, which must be in PEM format.

  key-file: ""

  # Gets the encryption key from the given environment variable, which must be Base64 encoded.

  key-env: ""

  # Gets the encryption key from secret-agent.

  key-secret: ""

secret-agent:

  # Secret Agent connection type. Supported types: TCP, UNIX.

  connection-type: TCP

  # Secret Agent host for TCP connection or socket file path for UDS connection.

  address: ""

  # Secret Agent port (only for TCP connection).

  port: 0

  # Secret Agent connection and reading timeout.

  timeout: 10000

  # Path to CA file for encrypted connections.

  ca-file: ""

  # Path to a client certificate file for mutual TLS authentication.

  cert-file: ""

  # Path to a client private key file for mutual TLS authentication.

  key-file: ""

  # TLS name (SNI) for encrypted connections.

  tls-name: ""

  # Whether Secret Agent responses are Base64 encoded.

  is-base64: false

aws:

  s3:

    # Existing S3 bucket name

    bucket-name: ""

    # The S3 region that the bucket(s) exist in.

    region: ""

    # The S3 profile to use for credentials.

    profile: ""

    # An alternate URL endpoint to send S3 API calls to.

    endpoint-override: ""

    # S3 access key ID. If not set, profile auth info will be used.

    access-key-id: ""

    # S3 secret access key. If not set, profile auth info will be used.

    secret-access-key: ""

    # How often (in ms) a backup client checks object status when restoring an archived object.

    restore-poll-duration: 60000

    # If set, the tool tries to restore archived files to the specified tier.

    # This triggers an asynchronous process that cannot be terminated.

    # Tiers are: Standard, Bulk, Expedited.

    tier: ""

    # Maximum number of attempts that should be made in case of an error.

    retry-max-attempts: 10

    # Max backoff duration (in ms) between retried attempts.

    # The delay increases exponentially with each retry up to the maximum specified by s3-retry-max-backoff.

    retry-max-backoff: 90000

    # The initial delay (in ms) between retry attempts. In case of connection errors

    # tool will retry reading the object from the last known position.

    retry-read-backoff: 1000

    # Multiplier is used to increase the delay between subsequent retry attempts.

    # Used in combination with initial delay.

    retry-read-multiplier: 2

    # The maximum number of retry attempts that will be made. If set to 0, no retries will be performed.

    retry-read-max-attempts: 3

    # Max connections per host optionally limits the total number of connections per host,

    # including connections in the dialing, active, and idle states. On limit violation, dials will block.

    # Should be greater than parallel to avoid download speed degradation.

    # 0 means no limit.

    max-conns-per-host: 0

    # Timeout (in ms) specifies a time limit for requests made by this Client.

    # The timeout includes connection time, any redirects, and reading the response body.

    # 0 means no limit.

    request-timeout: 600000

gcp:

  storage:

    # Path to file containing service account JSON key.

    key-path: ""

    # Name of the Google cloud storage bucket.

    bucket-name: ""

    # An alternate url endpoint to send GCP API calls to.

    endpoint-override: ""

    # Max retries specifies the maximum number of attempts a failed operation will be retried

    # before producing an error.

    retry-max-attempts: 10

    # Max backoff is the maximum value (in ms) of the retry period.

    retry-max-backoff: 90000

    # Initial backoff is the initial value (in ms) of the retry period.

    retry-init-backoff: 60000

    # Multiplier is the factor by which the retry period increases.

    # It should be greater than 1.

    retry-backoff-multiplier: 2

    # The initial delay (in ms) between retry attempts. In case of connection errors

    # tool will retry reading the object from the last known position.

    retry-read-backoff: 1000

    # Multiplier is used to increase the delay between subsequent retry attempts.

    # Used in combination with initial delay.

    retry-read-multiplier: 2

    # The maximum number of retry attempts that will be made. If set to 0, no retries will be performed.

    retry-read-max-attempts: 3

    # Max connections per host optionally limits the total number of connections per host,

    # including connections in the dialing, active, and idle states. On limit violation, dials will block.

    # Should be greater than parallel to avoid speed degradation.

    # 0 means no limit.

    max-conns-per-host: 0

    # Timeout (in ms) specifies a time limit for requests made by this Client.

    # The timeout includes connection time, any redirects, and reading the response body.

    # 0 means no limit.

    request-timeout: 600000

azure:

  blob:

    # Azure account name for account name, key authorization.

    account-name: ""

    # Azure account key for account name, key authorization.

    account-key: ""

    # Azure tenant ID for Azure Active Directory authorization.

    tenant-id: ""

    # Azure client ID for Azure Active Directory authorization.

    client-id: ""

    # Azure client secret for Azure Active Directory authorization.

    client-secret: ""

    # Azure endpoint.

    endpoint: ""

    # Azure container Name.

    container-name: ""

    # If set, the tool tries to rehydrate archived files to the specified tier.

    # This triggers an asynchronous process that cannot be terminated.

    # Tiers are: Cold, Cool, Hot.

    access-tier: ""

    # How often (in ms) a backup client checks object status when restoring an archived object.

    rehydrate-poll-duration: 60000

    # Max retries specifies the maximum number of attempts a failed operation will be retried

    # before producing an error.

    retry-max-attempts: 10

    # Retry delay specifies the initial amount of delay (in ms) to use before retrying an operation.

    # The value is used only if the HTTP response does not contain a Retry-After header.

    # The delay increases exponentially with each retry up to the maximum specified by azure-retry-max-delay.

    retry-delay: 60000

    # Max retry delay specifies the maximum delay (in ms) allowed before retrying an operation.

    # Typically the value is greater than or equal to the value specified in azure-retry-delay.

    retry-max-delay: 90000

    # The initial delay (in ms) between retry attempts. In case of connection errors

    # tool will retry reading the object from the last known position.

    retry-read-backoff: 1000

    # Multiplier is used to increase the delay between subsequent retry attempts.

    # Used in combination with initial delay.

    retry-read-multiplier: 2

    # The maximum number of retry attempts that will be made. If set to 0, no retries will be performed.

    retry-read-max-attempts: 3

    # Max connections per host optionally limits the total number of connections per host,

    # including connections in the dialing, active, and idle states. On limit violation, dials will block.

    # Should be greater than parallel to avoid download speed degradation.

    # 0 means no limit.

    max-conns-per-host: 0

    # Timeout (in ms) specifies a time limit for requests made by this Client.

    # The timeout includes connection time, any redirects, and reading the response body.

    # 0 means no limit.

    request-timeout: 600000
```

## Related topics

-   [Run Aerospike backup](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/backup/use)
-   [Run Aerospike restore](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/restore/use)
-   [Secret usage with backup and restore](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/secrets)
-   [Back up to cloud storage](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/backup/cloud-storage)
-   [Restore from cloud storage](https://aerospike.com/docs/database/tools/backup-and-restore/absctl/restore/cloud-storage)