{
  "slug": "btrfs-send-stream",
  "term": "Btrfs send stream",
  "aliases": [
    "Btrfs send/receive stream"
  ],
  "definition": "A Btrfs send stream is a versioned sequence of commands describing a subvolume or changes needed to reconstruct it from existing state.",
  "note": "Full and incremental transfers use the same command format. An incremental transfer can reference a parent and other clone sources, whose corresponding state must remain available and unchanged. The no-data mode omits file payload and is not a data-recovery copy. [send]\n\nThe format carries per-command CRC32C and subvolume references; it is not a sector image. A successful receive --dump decodes the stream without applying it to a destination, so it cannot establish target dependency availability or successful restoration. [format] [receive]\n\nSix synthetic protocol-v1 dump controls on btrfs-progs v6.6.3 accepted a stream with its whole WRITE command removed and a snapshot reference without any destination parent lookup. A flipped payload bit, absent END and truncated command were rejected. These are parser observations, not actual receives or measured backup failures. [controls]",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    {
      "text": "Command checksums do not authenticate the sender; the receive manual warns against untrusted streams.",
      "citationIds": [
        "send",
        "format",
        "receive"
      ]
    }
  ],
  "related": [
    "btrfs",
    "btrfs-received-uuid",
    "btrfs-read-only-subvolume",
    "incremental-backup",
    "reflink"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-18",
  "provenance": [
    "Documentation and implementation observations are pinned to btrfs-progs v6.17. Separate dump-only controls used the recorded v6.6.3 executable; no Btrfs filesystem was mounted or restored."
  ],
  "citations": [
    {
      "id": "send",
      "title": "btrfs-progs v6.17: send modes and clone-source preconditions",
      "url": "https://github.com/kdave/btrfs-progs/blob/c03e29f083678f47a7d7d810db4d21d905979b77/Documentation/btrfs-send.rst",
      "accessed": "2026-10-18"
    },
    {
      "id": "format",
      "title": "btrfs-progs v6.17: send stream format and reference fields",
      "url": "https://github.com/kdave/btrfs-progs/blob/c03e29f083678f47a7d7d810db4d21d905979b77/Documentation/dev/dev-send-stream.rst",
      "accessed": "2026-10-18"
    },
    {
      "id": "receive",
      "title": "btrfs-progs v6.17: receive validation, write window and trust warning",
      "url": "https://github.com/kdave/btrfs-progs/blob/c03e29f083678f47a7d7d810db4d21d905979b77/Documentation/btrfs-receive.rst",
      "accessed": "2026-10-18"
    },
    {
      "id": "hesela",
      "title": "Keeping Btrfs incremental backups recoverable",
      "url": "https://hesela.com/analyses/btrfs-incremental-send-recovery-contract/",
      "accessed": "2026-10-18"
    },
    {
      "id": "controls",
      "title": "Hesela: six Btrfs dump parser controls, fixture hashes and recorded environment",
      "url": "https://hesela.dev/research/btrfs-dump-controls.json",
      "accessed": "2026-10-18"
    }
  ]
}
