The module lifecycle stageGeneral Availability
The module has requirements for installation

The d8 utility is the recommended way to export and import volume data. All commands below use the default namespace d8-storage-volume-data-manager and default TTL 2m unless overridden.

For workflows without the d8 utility (YAML manifests, curl, raw HTTP API), see the FAQ.

Exporting data

Create a DataExport

d8 data export create [flags] <data_export_name> <volume_type>/<volume_name>

Supported volume types:

Short Full name Kubernetes kind
pvc persistentvolumeclaim PersistentVolumeClaim
vs volumesnapshot VolumeSnapshot
vd virtualdisk VirtualDisk
vds virtualdisksnapshot VirtualDiskSnapshot

Flags:

  • -n, --namespace — target namespace (default: d8-storage-volume-data-manager)
  • --ttl — time to live after the last access (default: 2m)
  • --publish — expose the exporter outside the cluster (default: false)

Example: export a PVC named data in the project namespace:

d8 data export create -n project my-export pvc/data --ttl 5m

Example: export a VolumeSnapshot:

d8 data export create -n project my-export vs/my-snapshot --ttl 10m

PVC resources can only be exported when they are not currently mounted by any pods.

List exported content

d8 data export list [flags] <data_export_name> [/path/]

Alias: ls.

For filesystem volumes, the directory path must end with /. For block volumes, omit the path.

Example:

d8 data export list -n project my-export /mydir/

Flags: -n, --publish, --ttl (TTL for auto-created DataExport), --cleanup.

When the first argument is a volume reference (e.g. pvc/data) instead of an existing DataExport name, the command creates a temporary DataExport automatically.

Download data

d8 data export download [flags] [KIND/]<name> [path/file.ext] -o <output_file>

The command can reference an existing DataExport by name or auto-create one by passing a volume reference (e.g. pvc/data, vs/my-snapshot).

  • Filesystem mode: provide the file or directory path (e.g. /mydir/file.txt). If -o is omitted, the output filename is derived from the source path.
  • Block mode: omit the path; the raw block device is downloaded. If -o is omitted, the DataExport name is used as the output filename.

Example: download a file from an existing DataExport:

d8 data export download -n project my-export /test_file.txt -o test_file.txt

Example: auto-create DataExport and download from a PVC:

d8 data export download -n project pvc/data /mydir/file.txt -o file.txt --ttl 5m

Example: download a block volume from a VolumeSnapshot:

d8 data export download -n project vs/my-snapshot -o data.img

Flags: -n, -o, --publish, --ttl, --cleanup (delete auto-created DataExport without prompting when set to true).

Delete a DataExport

d8 data export delete [flags] <data_export_name>

Example:

d8 data export delete -n project my-export

Importing data

Create a DataImport

d8 data import create [flags] <data_import_name> -f <pvc-template.yaml>

The PVC template file describes the target volume. Example template (pvc-template.yaml):

metadata:
  name: imported-data
  namespace: project
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: local-path
  volumeMode: Filesystem

Example:

d8 data import create my-import \
  -n project \
  -f ./pvc-template.yaml \
  --ttl 60m --publish --wffc false

Flags:

  • -n, --namespace — target namespace (default: d8-storage-volume-data-manager; can also be set in the template metadata)
  • -f, --file — path to the PVC template file (required)
  • --ttl — time to live (default: 2m)
  • --publish — expose the importer outside the cluster (default: false)
  • --wffc — wait for first consumer (default: false)

Upload data

d8 data import upload [flags] <data_import_name>

Upload a local file to the DataImport endpoint. The command auto-detects uid, gid, and permissions from the source file.

Example:

d8 data import upload my-import \
  -n project \
  -f ./test-file \
  -d /myfile \
  -P

Flags:

  • -n, --namespace — target namespace
  • -f, --file — local source file path (required)
  • -d, --dstPath — destination path on the volume (required)
  • -P, --publish — use the public URL of the DataImport
  • -c, --chunks — split the upload into N chunks (default: 10)
  • --resume — resume an interrupted upload from the server-reported offset

Resume an interrupted upload:

d8 data import upload my-import -n project -f ./test-file -d /myfile -P --resume

Upload in chunks:

d8 data import upload my-import -n project -f ./test-file -d /myfile -P -c 4

Delete a DataImport

d8 data import delete [flags] <data_import_name>

Example:

d8 data import delete my-import -n project

Getting resource information

To inspect a created resource:

d8 k -n <namespace> get de <data_export_name>
d8 k -n <namespace> get di <data_import_name>

The status section contains the access URL (url), CA certificate (ca), public URL (publicURL when --publish is enabled), and readiness conditions.