Use Case: Multi-USB Dataset Transfer

Scenario

Transfer a large dataset (e.g., machine learning models, video collection) that requires multiple USB drive swaps due to size constraints.

Use Case: Multi-USB Dataset Transfer UC-TRANSFER-003
status: approved
tags: transfer, workflow, multi-usb, swap
release: v1.0

Transfer large dataset (30GB) requiring multiple USB swaps with small capacity drives (4x 8GB USBs).

Pack: Split dataset into chunks matching USB capacity, prompt for USB swaps during packing, write manifest to each USB for independent verification.

Transfer: Transport all USB drives across air-gap (together or separately).

Unpack: Support progressive unpack with USB swaps, process USBs in any order, verify each chunk before extraction, resume if interrupted mid-swap.

Acceptance Criteria: Handle 4+ USB swaps without errors, clear prompts for USB insertion, verify integrity across all chunks, work with USBs in any order.


Prerequisites

  • Source machine: Connected system with data to transfer

  • Destination machine: air-gapped system

  • Transfer media: Four 8GB USB drives (only have small USBs available)

  • Dataset: ~/ml-models/ (30GB total)


Workflow Steps

Phase 1: Pack with Multiple USB Swaps

Initial pack command

airgap-transfer pack ~/ml-models/ /media/usb-drive --chunk-size 8GB

USB swap sequence

  • USB #1: Writes chunk_000.tar (8GB)

    • Tool: “Chunk 1 of 4 complete. Insert next USB.”

    • User: Eject USB #1, insert USB #2

  • USB #2: Writes chunk_001.tar (8GB)

    • Tool: “Chunk 2 of 4 complete. Insert next USB.”

    • User: Eject USB #2, insert USB #3

  • USB #3: Writes chunk_002.tar (8GB)

    • Tool: “Chunk 3 of 4 complete. Insert next USB.”

    • User: Eject USB #3, insert USB #4

  • USB #4: Writes chunk_003.tar (6GB, final chunk)

    • Tool: “Pack complete. 4 chunks created.”

Manifest on each USB

  • Each USB contains a copy of airgap-transfer-manifest.json

  • Manifest lists all 4 chunks with checksums

  • User can verify any USB independently

Phase 2: Physical Transfer

  • Transport all 4 USB drives across air-gap

  • USBs can be transported together or separately

Phase 3: Unpack on Destination

Check available chunks

  • Connect USB #1

airgap-transfer list /media/usb-1

Shows: chunk_000 available (1 of 4)

Progressive unpack

  • Option A: Connect all USBs, unpack once

# Mount all USBs
airgap-transfer unpack /media/usb-drives ~/restored-models/
  • Option B: Connect USBs one at a time

# Connect USB #1
airgap-transfer unpack /media/usb-1 ~/restored-models/
# Tool: "Waiting for chunk_001. Insert USB with chunk_001."
# User swaps to USB #2, tool continues

Verification

  • Tool verifies each chunk before extraction

  • Final verification after all chunks extracted

  • Reports: “30GB transferred across 4 USBs, verified”


Acceptance Criteria

  • ✅ Handle 4+ USB swaps without errors

  • ✅ Resume if interrupted mid-swap

  • ✅ Clear prompts for USB insertion

  • ✅ Verify integrity across all chunks

  • ✅ Work with USBs in any order


Edge Cases

Scenario

Behavior

USBs inserted out of order

Tool processes in chunk index order

Missing USB during unpack

Tool prompts for specific chunk number

Duplicate chunk on multiple USBs

Tool uses first found, warns of duplicate

Interrupted during USB swap

Resume from last completed chunk


User Experience Notes

Prompts should be clear and specific:

  • ❌ Bad: “Insert next USB”

  • ✅ Good: “Chunk 2 of 4 complete. Insert USB for chunk 3.”

Progress indication:

  • Show overall progress: “18GB of 30GB transferred (60%)”

  • Show chunk progress: “Chunk 3/4: 8GB written”

Linked Requirements

ID

Title

Status

Release

Verified By

FR-TRANSFER-002

Auto-Detect USB Capacity

approved

v1.0

TC-PCK-003

FR-TRANSFER-006

Manual Chunk Size Specification

approved

v1.0

TC-PCK-007

FR-TRANSFER-008

Prompt for USB Swapping

approved

v1.0

TC-PCK-009

FR-TRANSFER-012

Validate Chunk Completeness

approved

v1.0

TC-UNP-004

FR-TRANSFER-013

Resume Partial Unpacks

approved

v1.0

TC-UNP-005

FR-TRANSFER-024

Maintain Operation State

approved

v1.0

TC-STA-001

FR-TRANSFER-025

Track Chunk Completion

approved

v1.0

TC-STA-002

FR-TRANSFER-026

Resume Interrupted Pack

approved

v1.0

TC-STA-003

Traceability

Tests

Integration Tests

No needs passed the filters

Unit Tests of Linked Requirements

ID

Title

Status

Tests

TC-PCK-003

Auto-Detect USB Capacity

approved

TC-PCK-007

Manual Chunk Size Specification

approved

TC-PCK-009

USB Swapping Prompt

approved

TC-STA-001

Persist Operation State

approved

TC-STA-002

Track Chunk Completion

approved

TC-STA-003

Resume Interrupted Pack

approved

TC-UNP-004

Validate Chunk Completeness

approved

TC-UNP-005

Resume Partial Unpack

approved