1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
.\" Man page generated from reStructuredText.
.
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.TH "BTRFS-SEND" "8" "Jan 09, 2024" "6.6.3" "BTRFS"
.SH NAME
btrfs-send \- generate a stream of changes between two subvolume snapshots
.SH SYNOPSIS
.sp
\fBbtrfs send\fP [\-ve] [\-p <parent>] [\-c <clone\-src>] [\-f <outfile>] <subvol> [<subvol>...]
.SH DESCRIPTION
.sp
This command will generate a stream of instructions that describe changes
between two subvolume snapshots. The stream can be consumed by the \fBbtrfs receive\fP
command to replicate the sent snapshot on a different filesystem.
The command operates in two modes: full and incremental.
.sp
All snapshots involved in one send command must be read\-only, and this status
cannot be changed as long as there\(aqs a running send operation that uses the
snapshot. Read\-only mount of the subvolume is not sufficient, there\(aqs no way to
guarantee that there won\(aqt be any other writable mount of the same subvolume
that would potentially write while send would be running.
.sp
In the full mode, the entire snapshot data and metadata will end up in the
stream.
.sp
In the incremental mode (options \fI\-p\fP and \fI\-c\fP), previously sent snapshots that
are available on both the sending and receiving side can be used to reduce the
amount of information that has to be sent to reconstruct the sent snapshot on a
different filesystem.
.sp
The \fI\-p <parent>\fP option can be omitted when \fI\-c <clone\-src>\fP options are
given, in which case \fBbtrfs send\fP will determine a suitable parent from among
the clone sources.
.sp
You must not specify clone sources unless you guarantee that these snapshots
are exactly in the same state on both sides\-\-both for the sender and the
receiver. For implications of changed read\-write status of a received snapshot
please see section \fISUBVOLUME FLAGS\fP in \fI\%btrfs\-subvolume(8)\fP\&.
.sp
\fBOptions\fP
.INDENT 0.0
.TP
.B \-e
if sending multiple subvolumes at once, use the new format and omit the
\fIend cmd\fP marker in the stream separating the subvolumes
.TP
.BI \-p \ <parent>
send an incremental stream from \fIparent\fP to \fIsubvol\fP
.TP
.BI \-c \ <clone\-src>
use this snapshot as a clone source for an incremental send (multiple
allowed)
.TP
.BI \-f \ <outfile>
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.
.TP
.B \-\-no\-data
send in \fINO_FILE_DATA\fP mode
.sp
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.
.TP
.BI \-\-proto \ <N>
use send protocol version N
.sp
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 \fI\-\-compressed\-data\fP). 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.
.TP
.B \-\-compressed\-data
send data that is compressed on the filesystem directly without
decompressing it
.sp
If the receiver supports the \fIBTRFS_IOC_ENCODED_WRITE\fP 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.
.sp
This requires protocol version 2 or higher. If \fI\-\-proto\fP was not used,
then \fI\-\-compressed\-data\fP implies \fI\-\-proto 2\fP\&.
.UNINDENT
.INDENT 0.0
.TP
.B \-q|\-\-quiet
(deprecated) alias for global \fI\-q\fP option
.TP
.B \-v|\-\-verbose
(deprecated) alias for global \fI\-v\fP option
.UNINDENT
.sp
\fBGlobal options\fP
.INDENT 0.0
.TP
.B \-q|\-\-quiet
suppress all messages except errors
.TP
.B \-v|\-\-verbose
increase output verbosity, print generated commands in a readable form
.UNINDENT
.SH EXIT STATUS
.sp
\fBbtrfs send\fP returns a zero exit status if it succeeds. Non zero is
returned in case of failure.
.SH AVAILABILITY
.sp
\fBbtrfs\fP is part of btrfs\-progs. Please refer to the documentation at
\fI\%https://btrfs.readthedocs.io\fP\&.
.SH SEE ALSO
.sp
\fI\%btrfs\-receive(8)\fP,
\fI\%btrfs\-subvolume(8)\fP,
\fI\%mkfs.btrfs(8)\fP
.\" Generated by docutils manpage writer.
.
|