{
    "mode": "man",
    "parameter": "BTRFS-SEND",
    "section": "8",
    "url": "https://www.chedong.com/phpMan.php/man/BTRFS-SEND/8/json",
    "generated": "2026-09-17T04:10:45Z",
    "synopsis": "btrfs send [-ve] [-p <parent>] [-c <clone-src>] [-f <outfile>] <subvol> [<subvol>...]",
    "sections": {
        "NAME": {
            "content": "btrfs-send - generate a stream of changes between two subvolume snapshots\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "btrfs send [-ve] [-p <parent>] [-c <clone-src>] [-f <outfile>] <subvol> [<subvol>...]\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This command will generate a stream of instructions that describe changes between two subvol‐\nume  snapshots. The stream can be consumed by the btrfs receive command to replicate the sent\nsnapshot on a different filesystem.  The command operates in two modes: full and incremental.\n\nAll snapshots involved in one send command must be  read-only,  and  this  status  cannot  be\nchanged  as  long as there's a running send operation that uses the snapshot. Read-only mount\nof the subvolume is not sufficient, there's no way to guarantee that there won't be any other\nwritable mount of the same subvolume that would potentially write while send  would  be  run‐\nning.\n\nIn the full mode, the entire snapshot data and metadata will end up in the stream.\n\nIn  the incremental mode (options -p and -c), previously sent snapshots that are available on\nboth the sending and receiving side can be used to reduce the amount of information that  has\nto be sent to reconstruct the sent snapshot on a different filesystem.\n\nThe  -p  <parent>  option can be omitted when -c <clone-src> options are given, in which case\nbtrfs send will determine a suitable parent from among the clone sources.\n\nYou must not specify clone sources unless you guarantee that these snapshots are  exactly  in\nthe  same  state  on  both  sides--both  for the sender and the receiver. For implications of\nchanged read-write status of a received  snapshot  please  see  section  SUBVOLUME  FLAGS  in\nbtrfs-subvolume(8).\n",
            "subsections": [
                {
                    "name": "Options",
                    "content": ""
                },
                {
                    "name": "-e",
                    "content": "in the stream separating the subvolumes\n",
                    "flag": "-e"
                },
                {
                    "name": "-p _",
                    "content": "send an incremental stream from parent to subvol\n",
                    "flag": "-p"
                },
                {
                    "name": "-c _",
                    "content": "use this snapshot as a clone source for an incremental send (multiple allowed)\n",
                    "flag": "-c"
                },
                {
                    "name": "-f _",
                    "content": "output  is  normally  written  to  standard output so it can be, for example, piped to\nbtrfs receive. Use this option to write it to a file instead.\n",
                    "flag": "-f"
                },
                {
                    "name": "--no-data",
                    "content": "send in NOFILEDATA mode\n\nThe output stream does not contain any file data and thus cannot be used  to  transfer\nchanges. This mode is faster and is useful to show the differences in metadata.\n\n--proto <N>\nuse send protocol version N\n\nThe default is 1, which was the original protocol version. Version 2 encodes file data\nslightly  more  efficiently;  it is also required for sending compressed data directly\n(see --compressed-data). Version 2 requires at  least  btrfs-progs  6.0  on  both  the\nsender  and  receiver and at least Linux 6.0 on the sender. Passing 0 means to use the\nhighest version supported by the running kernel.\n",
                    "long": "--no-data"
                },
                {
                    "name": "--compressed-data",
                    "content": "send data that is compressed on the filesystem directly without decompressing it\n\nIf the receiver supports the BTRFSIOCENCODEDWRITE ioctl (added in  Linux  6.0),  it\ncan  also  write  it  directly without decompressing it.  Otherwise, the receiver will\nfall back to decompressing it and writing it normally.\n\nThis requires protocol version 2 or higher. If  --proto  was  not  used,  then  --com‐\npressed-data implies --proto 2.\n",
                    "long": "--compressed-data"
                },
                {
                    "name": "-q|--quiet",
                    "content": "(deprecated) alias for global -q option\n"
                },
                {
                    "name": "-v|--verbose",
                    "content": "(deprecated) alias for global -v option\n"
                },
                {
                    "name": "Global options",
                    "content": ""
                },
                {
                    "name": "-q|--quiet",
                    "content": "suppress all messages except errors\n"
                },
                {
                    "name": "-v|--verbose",
                    "content": "increase output verbosity, print generated commands in a readable form\n"
                }
            ]
        },
        "EXIT STATUS": {
            "content": "btrfs  send  returns a zero exit status if it succeeds. Non zero is returned in case of fail‐\nure.\n",
            "subsections": []
        },
        "AVAILABILITY": {
            "content": "btrfs   is   part   of   btrfs-progs.     Please    refer    to    the    documentation    at\nhttps://btrfs.readthedocs.io.\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "btrfs-receive(8), btrfs-subvolume(8), mkfs.btrfs(8)\n\n\n6.6.3                                       Mar 31, 2024                               BTRFS-SEND(8)",
            "subsections": []
        }
    },
    "summary": "btrfs-send - generate a stream of changes between two subvolume snapshots",
    "flags": [
        {
            "flag": "-e",
            "long": null,
            "arg": null,
            "description": "in the stream separating the subvolumes"
        },
        {
            "flag": "-p",
            "long": null,
            "arg": null,
            "description": "send an incremental stream from parent to subvol"
        },
        {
            "flag": "-c",
            "long": null,
            "arg": null,
            "description": "use this snapshot as a clone source for an incremental send (multiple allowed)"
        },
        {
            "flag": "-f",
            "long": null,
            "arg": null,
            "description": "output is normally written to standard output so it can be, for example, piped to btrfs receive. Use this option to write it to a file instead."
        },
        {
            "flag": "",
            "long": "--no-data",
            "arg": null,
            "description": "send in NOFILEDATA mode The output stream does not contain any file data and thus cannot be used to transfer changes. This mode is faster and is useful to show the differences in metadata. --proto <N> use send protocol version N The default is 1, which was the original protocol version. Version 2 encodes file data slightly more efficiently; it is also required for sending compressed data directly (see --compressed-data). Version 2 requires at least btrfs-progs 6.0 on both the sender and receiver and at least Linux 6.0 on the sender. Passing 0 means to use the highest version supported by the running kernel."
        },
        {
            "flag": "",
            "long": "--compressed-data",
            "arg": null,
            "description": "send data that is compressed on the filesystem directly without decompressing it If the receiver supports the BTRFSIOCENCODEDWRITE ioctl (added in Linux 6.0), it can also write it directly without decompressing it. Otherwise, the receiver will fall back to decompressing it and writing it normally. This requires protocol version 2 or higher. If --proto was not used, then --com‐ pressed-data implies --proto 2."
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "(deprecated) alias for global -q option"
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "(deprecated) alias for global -v option"
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "suppress all messages except errors"
        },
        {
            "flag": "",
            "long": null,
            "arg": null,
            "description": "increase output verbosity, print generated commands in a readable form"
        }
    ],
    "examples": [],
    "see_also": [
        {
            "name": "btrfs-receive",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/btrfs-receive/8/json"
        },
        {
            "name": "btrfs-subvolume",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/btrfs-subvolume/8/json"
        },
        {
            "name": "mkfs.btrfs",
            "section": "8",
            "url": "https://www.chedong.com/phpMan.php/man/mkfs.btrfs/8/json"
        }
    ]
}