xref: /freebsd/sys/contrib/openzfs/man/man8/zfs-send.8 (revision 315ee00fa9616b0a192b6834911f98bcf5316a6b)
1eda14cbcSMatt Macy.\"
2eda14cbcSMatt Macy.\" CDDL HEADER START
3eda14cbcSMatt Macy.\"
4eda14cbcSMatt Macy.\" The contents of this file are subject to the terms of the
5eda14cbcSMatt Macy.\" Common Development and Distribution License (the "License").
6eda14cbcSMatt Macy.\" You may not use this file except in compliance with the License.
7eda14cbcSMatt Macy.\"
8eda14cbcSMatt Macy.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9271171e0SMartin Matuska.\" or https://opensource.org/licenses/CDDL-1.0.
10eda14cbcSMatt Macy.\" See the License for the specific language governing permissions
11eda14cbcSMatt Macy.\" and limitations under the License.
12eda14cbcSMatt Macy.\"
13eda14cbcSMatt Macy.\" When distributing Covered Code, include this CDDL HEADER in each
14eda14cbcSMatt Macy.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15eda14cbcSMatt Macy.\" If applicable, add the following below this CDDL HEADER, with the
16eda14cbcSMatt Macy.\" fields enclosed by brackets "[]" replaced with your own identifying
17eda14cbcSMatt Macy.\" information: Portions Copyright [yyyy] [name of copyright owner]
18eda14cbcSMatt Macy.\"
19eda14cbcSMatt Macy.\" CDDL HEADER END
20eda14cbcSMatt Macy.\"
21eda14cbcSMatt Macy.\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
22eda14cbcSMatt Macy.\" Copyright 2011 Joshua M. Clulow <josh@sysmgr.org>
23eda14cbcSMatt Macy.\" Copyright (c) 2011, 2019 by Delphix. All rights reserved.
24eda14cbcSMatt Macy.\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
25eda14cbcSMatt Macy.\" Copyright (c) 2014, Joyent, Inc. All rights reserved.
26eda14cbcSMatt Macy.\" Copyright (c) 2014 by Adam Stevko. All rights reserved.
27eda14cbcSMatt Macy.\" Copyright (c) 2014 Integros [integros.com]
28eda14cbcSMatt Macy.\" Copyright 2019 Richard Laager. All rights reserved.
29eda14cbcSMatt Macy.\" Copyright 2018 Nexenta Systems, Inc.
30eda14cbcSMatt Macy.\" Copyright 2019 Joyent, Inc.
31eda14cbcSMatt Macy.\"
32*315ee00fSMartin Matuska.Dd July 27, 2023
33eda14cbcSMatt Macy.Dt ZFS-SEND 8
34eda14cbcSMatt Macy.Os
3516038816SMartin Matuska.
36eda14cbcSMatt Macy.Sh NAME
377877fdebSMatt Macy.Nm zfs-send
3816038816SMartin Matuska.Nd generate backup stream of ZFS dataset
39eda14cbcSMatt Macy.Sh SYNOPSIS
407877fdebSMatt Macy.Nm zfs
41eda14cbcSMatt Macy.Cm send
4215f0b8c3SMartin Matuska.Op Fl DLPVbcehnpsvw
43716fd348SMartin Matuska.Op Fl R Op Fl X Ar dataset Ns Oo , Ns Ar dataset Oc Ns …
44eda14cbcSMatt Macy.Op Oo Fl I Ns | Ns Fl i Oc Ar snapshot
45eda14cbcSMatt Macy.Ar snapshot
467877fdebSMatt Macy.Nm zfs
47eda14cbcSMatt Macy.Cm send
4815f0b8c3SMartin Matuska.Op Fl DLPVcensvw
49eda14cbcSMatt Macy.Op Fl i Ar snapshot Ns | Ns Ar bookmark
50eda14cbcSMatt Macy.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
517877fdebSMatt Macy.Nm zfs
52eda14cbcSMatt Macy.Cm send
53eda14cbcSMatt Macy.Fl -redact Ar redaction_bookmark
5415f0b8c3SMartin Matuska.Op Fl DLPVcenpv
55eda14cbcSMatt Macy.Op Fl i Ar snapshot Ns | Ns Ar bookmark
56eda14cbcSMatt Macy.Ar snapshot
577877fdebSMatt Macy.Nm zfs
58eda14cbcSMatt Macy.Cm send
5915f0b8c3SMartin Matuska.Op Fl PVenv
60eda14cbcSMatt Macy.Fl t
61eda14cbcSMatt Macy.Ar receive_resume_token
627877fdebSMatt Macy.Nm zfs
63eda14cbcSMatt Macy.Cm send
6415f0b8c3SMartin Matuska.Op Fl PVnv
65eda14cbcSMatt Macy.Fl S Ar filesystem
667877fdebSMatt Macy.Nm zfs
67eda14cbcSMatt Macy.Cm redact
68eda14cbcSMatt Macy.Ar snapshot redaction_bookmark
6916038816SMartin Matuska.Ar redaction_snapshot Ns …
7016038816SMartin Matuska.
71eda14cbcSMatt Macy.Sh DESCRIPTION
72eda14cbcSMatt Macy.Bl -tag -width ""
73eda14cbcSMatt Macy.It Xo
747877fdebSMatt Macy.Nm zfs
75eda14cbcSMatt Macy.Cm send
7615f0b8c3SMartin Matuska.Op Fl DLPVbcehnpsvw
77716fd348SMartin Matuska.Op Fl R Op Fl X Ar dataset Ns Oo , Ns Ar dataset Oc Ns …
78eda14cbcSMatt Macy.Op Oo Fl I Ns | Ns Fl i Oc Ar snapshot
79eda14cbcSMatt Macy.Ar snapshot
80eda14cbcSMatt Macy.Xc
81eda14cbcSMatt MacyCreates a stream representation of the second
82eda14cbcSMatt Macy.Ar snapshot ,
83eda14cbcSMatt Macywhich is written to standard output.
84eda14cbcSMatt MacyThe output can be redirected to a file or to a different system
85eda14cbcSMatt Macy.Po for example, using
86eda14cbcSMatt Macy.Xr ssh 1
87eda14cbcSMatt Macy.Pc .
88eda14cbcSMatt MacyBy default, a full stream is generated.
89eda14cbcSMatt Macy.Bl -tag -width "-D"
90eda14cbcSMatt Macy.It Fl D , -dedup
91eda14cbcSMatt MacyDeduplicated send is no longer supported.
92eda14cbcSMatt MacyThis flag is accepted for backwards compatibility, but a regular,
93eda14cbcSMatt Macynon-deduplicated stream will be generated.
94eda14cbcSMatt Macy.It Fl I Ar snapshot
95eda14cbcSMatt MacyGenerate a stream package that sends all intermediary snapshots from the first
96eda14cbcSMatt Macysnapshot to the second snapshot.
97eda14cbcSMatt MacyFor example,
98eda14cbcSMatt Macy.Fl I Em @a Em fs@d
99eda14cbcSMatt Macyis similar to
100eda14cbcSMatt Macy.Fl i Em @a Em fs@b Ns \&; Fl i Em @b Em fs@c Ns \&; Fl i Em @c Em fs@d .
101eda14cbcSMatt MacyThe incremental source may be specified as with the
102eda14cbcSMatt Macy.Fl i
103eda14cbcSMatt Macyoption.
104eda14cbcSMatt Macy.It Fl L , -large-block
105716fd348SMartin MatuskaGenerate a stream which may contain blocks larger than 128 KiB.
106eda14cbcSMatt MacyThis flag has no effect if the
107eda14cbcSMatt Macy.Sy large_blocks
108eda14cbcSMatt Macypool feature is disabled, or if the
109eda14cbcSMatt Macy.Sy recordsize
110716fd348SMartin Matuskaproperty of this filesystem has never been set above 128 KiB.
111eda14cbcSMatt MacyThe receiving system must have the
112eda14cbcSMatt Macy.Sy large_blocks
113eda14cbcSMatt Macypool feature enabled as well.
114eda14cbcSMatt MacySee
1153ff01b23SMartin Matuska.Xr zpool-features 7
116eda14cbcSMatt Macyfor details on ZFS feature flags and the
117eda14cbcSMatt Macy.Sy large_blocks
118eda14cbcSMatt Macyfeature.
119eda14cbcSMatt Macy.It Fl P , -parsable
120eda14cbcSMatt MacyPrint machine-parsable verbose information about the stream package generated.
121eda14cbcSMatt Macy.It Fl R , -replicate
122eda14cbcSMatt MacyGenerate a replication stream package, which will replicate the specified
123eda14cbcSMatt Macyfile system, and all descendent file systems, up to the named snapshot.
124eda14cbcSMatt MacyWhen received, all properties, snapshots, descendent file systems, and clones
125eda14cbcSMatt Macyare preserved.
126eda14cbcSMatt Macy.Pp
127eda14cbcSMatt MacyIf the
128eda14cbcSMatt Macy.Fl i
129eda14cbcSMatt Macyor
130eda14cbcSMatt Macy.Fl I
131eda14cbcSMatt Macyflags are used in conjunction with the
132eda14cbcSMatt Macy.Fl R
133eda14cbcSMatt Macyflag, an incremental replication stream is generated.
134eda14cbcSMatt MacyThe current values of properties, and current snapshot and file system names are
135eda14cbcSMatt Macyset when the stream is received.
136eda14cbcSMatt MacyIf the
137eda14cbcSMatt Macy.Fl F
138eda14cbcSMatt Macyflag is specified when this stream is received, snapshots and file systems that
13916038816SMartin Matuskado not exist on the sending side are destroyed.
14016038816SMartin MatuskaIf the
141eda14cbcSMatt Macy.Fl R
142eda14cbcSMatt Macyflag is used to send encrypted datasets, then
143eda14cbcSMatt Macy.Fl w
144eda14cbcSMatt Macymust also be specified.
14515f0b8c3SMartin Matuska.It Fl V , -proctitle
14615f0b8c3SMartin MatuskaSet the process title to a per-second report of how much data has been sent.
147716fd348SMartin Matuska.It Fl X , -exclude Ar dataset Ns Oo , Ns Ar dataset Oc Ns …
148716fd348SMartin MatuskaWith
149716fd348SMartin Matuska.Fl R ,
150da5137abSMartin Matuska.Fl X
151716fd348SMartin Matuskaspecifies a set of datasets (and, hence, their descendants),
152716fd348SMartin Matuskato be excluded from the send stream.
153716fd348SMartin MatuskaThe root dataset may not be excluded.
154716fd348SMartin Matuska.Fl X Ar a Fl X Ar b
155716fd348SMartin Matuskais equivalent to
156716fd348SMartin Matuska.Fl X Ar a , Ns Ar b .
157eda14cbcSMatt Macy.It Fl e , -embed
158eda14cbcSMatt MacyGenerate a more compact stream by using
159eda14cbcSMatt Macy.Sy WRITE_EMBEDDED
160eda14cbcSMatt Macyrecords for blocks which are stored more compactly on disk by the
161eda14cbcSMatt Macy.Sy embedded_data
162eda14cbcSMatt Macypool feature.
163eda14cbcSMatt MacyThis flag has no effect if the
164eda14cbcSMatt Macy.Sy embedded_data
165eda14cbcSMatt Macyfeature is disabled.
166eda14cbcSMatt MacyThe receiving system must have the
167eda14cbcSMatt Macy.Sy embedded_data
168eda14cbcSMatt Macyfeature enabled.
169eda14cbcSMatt MacyIf the
170eda14cbcSMatt Macy.Sy lz4_compress
171eda14cbcSMatt Macyfeature is active on the sending system, then the receiving system must have
17216038816SMartin Matuskathat feature enabled as well.
17316038816SMartin MatuskaDatasets that are sent with this flag may not be
174eda14cbcSMatt Macyreceived as an encrypted dataset, since encrypted datasets cannot use the
175eda14cbcSMatt Macy.Sy embedded_data
176eda14cbcSMatt Macyfeature.
177eda14cbcSMatt MacySee
1783ff01b23SMartin Matuska.Xr zpool-features 7
179eda14cbcSMatt Macyfor details on ZFS feature flags and the
180eda14cbcSMatt Macy.Sy embedded_data
181eda14cbcSMatt Macyfeature.
182eda14cbcSMatt Macy.It Fl b , -backup
183eda14cbcSMatt MacySends only received property values whether or not they are overridden by local
18416038816SMartin Matuskasettings, but only if the dataset has ever been received.
18516038816SMartin MatuskaUse this option when you want
186eda14cbcSMatt Macy.Nm zfs Cm receive
187eda14cbcSMatt Macyto restore received properties backed up on the sent dataset and to avoid
188eda14cbcSMatt Macysending local settings that may have nothing to do with the source dataset,
189eda14cbcSMatt Macybut only with how the data is backed up.
190eda14cbcSMatt Macy.It Fl c , -compressed
191eda14cbcSMatt MacyGenerate a more compact stream by using compressed WRITE records for blocks
192eda14cbcSMatt Macywhich are compressed on disk and in memory
193eda14cbcSMatt Macy.Po see the
194eda14cbcSMatt Macy.Sy compression
195eda14cbcSMatt Macyproperty for details
196eda14cbcSMatt Macy.Pc .
197eda14cbcSMatt MacyIf the
198eda14cbcSMatt Macy.Sy lz4_compress
199eda14cbcSMatt Macyfeature is active on the sending system, then the receiving system must have
200eda14cbcSMatt Macythat feature enabled as well.
201eda14cbcSMatt MacyIf the
202eda14cbcSMatt Macy.Sy large_blocks
203eda14cbcSMatt Macyfeature is enabled on the sending system but the
204eda14cbcSMatt Macy.Fl L
205eda14cbcSMatt Macyoption is not supplied in conjunction with
206eda14cbcSMatt Macy.Fl c ,
207eda14cbcSMatt Macythen the data will be decompressed before sending so it can be split into
20816038816SMartin Matuskasmaller block sizes.
20916038816SMartin MatuskaStreams sent with
2109db44a8eSMartin Matuska.Fl c
2119db44a8eSMartin Matuskawill not have their data recompressed on the receiver side using
21216038816SMartin Matuska.Fl o Sy compress Ns = Ar value .
21316038816SMartin MatuskaThe data will stay compressed as it was from the sender.
21416038816SMartin MatuskaThe new compression property will be set for future data.
2156ba2210eSMartin MatuskaNote that uncompressed data from the sender will still attempt to
2166ba2210eSMartin Matuskacompress on the receiver, unless you specify
2176ba2210eSMartin Matuska.Fl o Sy compress Ns = Em off .
218eda14cbcSMatt Macy.It Fl w , -raw
21916038816SMartin MatuskaFor encrypted datasets, send data exactly as it exists on disk.
220bb2d13b6SMartin MatuskaThis allows backups to be taken even if encryption keys are not currently
221bb2d13b6SMartin Matuskaloaded.
22216038816SMartin MatuskaThe backup may then be received on an untrusted machine since that machine will
223eda14cbcSMatt Macynot have the encryption keys to read the protected data or alter it without
22416038816SMartin Matuskabeing detected.
22516038816SMartin MatuskaUpon being received, the dataset will have the same encryption
226eda14cbcSMatt Macykeys as it did on the send side, although the
227eda14cbcSMatt Macy.Sy keylocation
228eda14cbcSMatt Macyproperty will be defaulted to
229eda14cbcSMatt Macy.Sy prompt
23016038816SMartin Matuskaif not otherwise provided.
23116038816SMartin MatuskaFor unencrypted datasets, this flag will be equivalent to
232eda14cbcSMatt Macy.Fl Lec .
233eda14cbcSMatt MacyNote that if you do not use this flag for sending encrypted datasets, data will
234eda14cbcSMatt Macybe sent unencrypted and may be re-encrypted with a different encryption key on
235eda14cbcSMatt Macythe receiving system, which will disable the ability to do a raw send to that
236eda14cbcSMatt Macysystem for incrementals.
237eda14cbcSMatt Macy.It Fl h , -holds
238eda14cbcSMatt MacyGenerate a stream package that includes any snapshot holds (created with the
23916038816SMartin Matuska.Nm zfs Cm hold
240eda14cbcSMatt Macycommand), and indicating to
24116038816SMartin Matuska.Nm zfs Cm receive
242eda14cbcSMatt Macythat the holds be applied to the dataset on the receiving system.
243eda14cbcSMatt Macy.It Fl i Ar snapshot
244eda14cbcSMatt MacyGenerate an incremental stream from the first
245eda14cbcSMatt Macy.Ar snapshot
246eda14cbcSMatt Macy.Pq the incremental source
247eda14cbcSMatt Macyto the second
248eda14cbcSMatt Macy.Ar snapshot
249eda14cbcSMatt Macy.Pq the incremental target .
250eda14cbcSMatt MacyThe incremental source can be specified as the last component of the snapshot
251eda14cbcSMatt Macyname
252eda14cbcSMatt Macy.Po the
253eda14cbcSMatt Macy.Sy @
254eda14cbcSMatt Macycharacter and following
255eda14cbcSMatt Macy.Pc
256eda14cbcSMatt Macyand it is assumed to be from the same file system as the incremental target.
257eda14cbcSMatt Macy.Pp
258eda14cbcSMatt MacyIf the destination is a clone, the source may be the origin snapshot, which must
259eda14cbcSMatt Macybe fully specified
260eda14cbcSMatt Macy.Po for example,
261eda14cbcSMatt Macy.Em pool/fs@origin ,
262eda14cbcSMatt Macynot just
263eda14cbcSMatt Macy.Em @origin
264eda14cbcSMatt Macy.Pc .
265eda14cbcSMatt Macy.It Fl n , -dryrun
266eda14cbcSMatt MacyDo a dry-run
267eda14cbcSMatt Macy.Pq Qq No-op
268eda14cbcSMatt Macysend.
269eda14cbcSMatt MacyDo not generate any actual send data.
270eda14cbcSMatt MacyThis is useful in conjunction with the
271eda14cbcSMatt Macy.Fl v
272eda14cbcSMatt Macyor
273eda14cbcSMatt Macy.Fl P
274eda14cbcSMatt Macyflags to determine what data will be sent.
275eda14cbcSMatt MacyIn this case, the verbose output will be written to standard output
276eda14cbcSMatt Macy.Po contrast with a non-dry-run, where the stream is written to standard output
277eda14cbcSMatt Macyand the verbose output goes to standard error
278eda14cbcSMatt Macy.Pc .
279eda14cbcSMatt Macy.It Fl p , -props
280eda14cbcSMatt MacyInclude the dataset's properties in the stream.
281eda14cbcSMatt MacyThis flag is implicit when
282eda14cbcSMatt Macy.Fl R
283eda14cbcSMatt Macyis specified.
28416038816SMartin MatuskaThe receiving system must also support this feature.
28516038816SMartin MatuskaSends of encrypted datasets must use
286eda14cbcSMatt Macy.Fl w
287eda14cbcSMatt Macywhen using this flag.
28816038816SMartin Matuska.It Fl s , -skip-missing
28916038816SMartin MatuskaAllows sending a replication stream even when there are snapshots missing in the
29016038816SMartin Matuskahierarchy.
29116038816SMartin MatuskaWhen a snapshot is missing, instead of throwing an error and aborting the send,
292bb2d13b6SMartin Matuskaa warning is printed to the standard error stream and the dataset to which it
293bb2d13b6SMartin Matuskabelongs
29416038816SMartin Matuskaand its descendents are skipped.
29516038816SMartin MatuskaThis flag can only be used in conjunction with
29616038816SMartin Matuska.Fl R .
297eda14cbcSMatt Macy.It Fl v , -verbose
298eda14cbcSMatt MacyPrint verbose information about the stream package generated.
299eda14cbcSMatt MacyThis information includes a per-second report of how much data has been sent.
300*315ee00fSMartin MatuskaThe same report can be requested by sending
301*315ee00fSMartin Matuska.Dv SIGINFO
302*315ee00fSMartin Matuskaor
303*315ee00fSMartin Matuska.Dv SIGUSR1 ,
304*315ee00fSMartin Matuskaregardless of
305*315ee00fSMartin Matuska.Fl v .
306eda14cbcSMatt Macy.Pp
307eda14cbcSMatt MacyThe format of the stream is committed.
308eda14cbcSMatt MacyYou will be able to receive your streams on future versions of ZFS.
309eda14cbcSMatt Macy.El
310eda14cbcSMatt Macy.It Xo
3117877fdebSMatt Macy.Nm zfs
312eda14cbcSMatt Macy.Cm send
31315f0b8c3SMartin Matuska.Op Fl DLPVcenvw
314eda14cbcSMatt Macy.Op Fl i Ar snapshot Ns | Ns Ar bookmark
315eda14cbcSMatt Macy.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
316eda14cbcSMatt Macy.Xc
317eda14cbcSMatt MacyGenerate a send stream, which may be of a filesystem, and may be incremental
318eda14cbcSMatt Macyfrom a bookmark.
319eda14cbcSMatt MacyIf the destination is a filesystem or volume, the pool must be read-only, or the
320eda14cbcSMatt Macyfilesystem must not be mounted.
321eda14cbcSMatt MacyWhen the stream generated from a filesystem or volume is received, the default
322eda14cbcSMatt Macysnapshot name will be
323eda14cbcSMatt Macy.Qq --head-- .
3243f9d360cSMartin Matuska.Bl -tag -width "-D"
3253f9d360cSMartin Matuska.It Fl D , -dedup
3263f9d360cSMartin MatuskaDeduplicated send is no longer supported.
3273f9d360cSMartin MatuskaThis flag is accepted for backwards compatibility, but a regular,
3283f9d360cSMartin Matuskanon-deduplicated stream will be generated.
329eda14cbcSMatt Macy.It Fl L , -large-block
330716fd348SMartin MatuskaGenerate a stream which may contain blocks larger than 128 KiB.
331eda14cbcSMatt MacyThis flag has no effect if the
332eda14cbcSMatt Macy.Sy large_blocks
333eda14cbcSMatt Macypool feature is disabled, or if the
334eda14cbcSMatt Macy.Sy recordsize
335716fd348SMartin Matuskaproperty of this filesystem has never been set above 128 KiB.
336eda14cbcSMatt MacyThe receiving system must have the
337eda14cbcSMatt Macy.Sy large_blocks
338eda14cbcSMatt Macypool feature enabled as well.
339eda14cbcSMatt MacySee
3403ff01b23SMartin Matuska.Xr zpool-features 7
341eda14cbcSMatt Macyfor details on ZFS feature flags and the
342eda14cbcSMatt Macy.Sy large_blocks
343eda14cbcSMatt Macyfeature.
344eda14cbcSMatt Macy.It Fl P , -parsable
345eda14cbcSMatt MacyPrint machine-parsable verbose information about the stream package generated.
346eda14cbcSMatt Macy.It Fl c , -compressed
347eda14cbcSMatt MacyGenerate a more compact stream by using compressed WRITE records for blocks
348eda14cbcSMatt Macywhich are compressed on disk and in memory
349eda14cbcSMatt Macy.Po see the
350eda14cbcSMatt Macy.Sy compression
351eda14cbcSMatt Macyproperty for details
352eda14cbcSMatt Macy.Pc .
353eda14cbcSMatt MacyIf the
354eda14cbcSMatt Macy.Sy lz4_compress
355eda14cbcSMatt Macyfeature is active on the sending system, then the receiving system must have
356eda14cbcSMatt Macythat feature enabled as well.
357eda14cbcSMatt MacyIf the
358eda14cbcSMatt Macy.Sy large_blocks
359eda14cbcSMatt Macyfeature is enabled on the sending system but the
360eda14cbcSMatt Macy.Fl L
361eda14cbcSMatt Macyoption is not supplied in conjunction with
362eda14cbcSMatt Macy.Fl c ,
363eda14cbcSMatt Macythen the data will be decompressed before sending so it can be split into
364eda14cbcSMatt Macysmaller block sizes.
365eda14cbcSMatt Macy.It Fl w , -raw
36616038816SMartin MatuskaFor encrypted datasets, send data exactly as it exists on disk.
367bb2d13b6SMartin MatuskaThis allows backups to be taken even if encryption keys are not currently
368bb2d13b6SMartin Matuskaloaded.
36916038816SMartin MatuskaThe backup may then be received on an untrusted machine since that machine will
370eda14cbcSMatt Macynot have the encryption keys to read the protected data or alter it without
37116038816SMartin Matuskabeing detected.
37216038816SMartin MatuskaUpon being received, the dataset will have the same encryption
373eda14cbcSMatt Macykeys as it did on the send side, although the
374eda14cbcSMatt Macy.Sy keylocation
375eda14cbcSMatt Macyproperty will be defaulted to
376eda14cbcSMatt Macy.Sy prompt
37716038816SMartin Matuskaif not otherwise provided.
37816038816SMartin MatuskaFor unencrypted datasets, this flag will be equivalent to
379eda14cbcSMatt Macy.Fl Lec .
380eda14cbcSMatt MacyNote that if you do not use this flag for sending encrypted datasets, data will
381eda14cbcSMatt Macybe sent unencrypted and may be re-encrypted with a different encryption key on
382eda14cbcSMatt Macythe receiving system, which will disable the ability to do a raw send to that
383eda14cbcSMatt Macysystem for incrementals.
384eda14cbcSMatt Macy.It Fl e , -embed
385eda14cbcSMatt MacyGenerate a more compact stream by using
386eda14cbcSMatt Macy.Sy WRITE_EMBEDDED
387eda14cbcSMatt Macyrecords for blocks which are stored more compactly on disk by the
388eda14cbcSMatt Macy.Sy embedded_data
389eda14cbcSMatt Macypool feature.
390eda14cbcSMatt MacyThis flag has no effect if the
391eda14cbcSMatt Macy.Sy embedded_data
392eda14cbcSMatt Macyfeature is disabled.
393eda14cbcSMatt MacyThe receiving system must have the
394eda14cbcSMatt Macy.Sy embedded_data
395eda14cbcSMatt Macyfeature enabled.
396eda14cbcSMatt MacyIf the
397eda14cbcSMatt Macy.Sy lz4_compress
398eda14cbcSMatt Macyfeature is active on the sending system, then the receiving system must have
39916038816SMartin Matuskathat feature enabled as well.
400bb2d13b6SMartin MatuskaDatasets that are sent with this flag may not be received as an encrypted
401bb2d13b6SMartin Matuskadataset,
40216038816SMartin Matuskasince encrypted datasets cannot use the
403eda14cbcSMatt Macy.Sy embedded_data
404eda14cbcSMatt Macyfeature.
405eda14cbcSMatt MacySee
4063ff01b23SMartin Matuska.Xr zpool-features 7
407eda14cbcSMatt Macyfor details on ZFS feature flags and the
408eda14cbcSMatt Macy.Sy embedded_data
409eda14cbcSMatt Macyfeature.
410eda14cbcSMatt Macy.It Fl i Ar snapshot Ns | Ns Ar bookmark
411eda14cbcSMatt MacyGenerate an incremental send stream.
412eda14cbcSMatt MacyThe incremental source must be an earlier snapshot in the destination's history.
413eda14cbcSMatt MacyIt will commonly be an earlier snapshot in the destination's file system, in
414eda14cbcSMatt Macywhich case it can be specified as the last component of the name
415eda14cbcSMatt Macy.Po the
416eda14cbcSMatt Macy.Sy #
417eda14cbcSMatt Macyor
418eda14cbcSMatt Macy.Sy @
419eda14cbcSMatt Macycharacter and following
420eda14cbcSMatt Macy.Pc .
421eda14cbcSMatt Macy.Pp
422eda14cbcSMatt MacyIf the incremental target is a clone, the incremental source can be the origin
423eda14cbcSMatt Macysnapshot, or an earlier snapshot in the origin's filesystem, or the origin's
424eda14cbcSMatt Macyorigin, etc.
425eda14cbcSMatt Macy.It Fl n , -dryrun
426eda14cbcSMatt MacyDo a dry-run
427eda14cbcSMatt Macy.Pq Qq No-op
428eda14cbcSMatt Macysend.
429eda14cbcSMatt MacyDo not generate any actual send data.
430eda14cbcSMatt MacyThis is useful in conjunction with the
431eda14cbcSMatt Macy.Fl v
432eda14cbcSMatt Macyor
433eda14cbcSMatt Macy.Fl P
434eda14cbcSMatt Macyflags to determine what data will be sent.
435eda14cbcSMatt MacyIn this case, the verbose output will be written to standard output
436eda14cbcSMatt Macy.Po contrast with a non-dry-run, where the stream is written to standard output
437eda14cbcSMatt Macyand the verbose output goes to standard error
438eda14cbcSMatt Macy.Pc .
439eda14cbcSMatt Macy.It Fl v , -verbose
440eda14cbcSMatt MacyPrint verbose information about the stream package generated.
441eda14cbcSMatt MacyThis information includes a per-second report of how much data has been sent.
442*315ee00fSMartin MatuskaThe same report can be requested by sending
443*315ee00fSMartin Matuska.Dv SIGINFO
444*315ee00fSMartin Matuskaor
445*315ee00fSMartin Matuska.Dv SIGUSR1 ,
446*315ee00fSMartin Matuskaregardless of
447*315ee00fSMartin Matuska.Fl v .
448eda14cbcSMatt Macy.El
449eda14cbcSMatt Macy.It Xo
4507877fdebSMatt Macy.Nm zfs
451eda14cbcSMatt Macy.Cm send
452eda14cbcSMatt Macy.Fl -redact Ar redaction_bookmark
45315f0b8c3SMartin Matuska.Op Fl DLPVcenpv
454eda14cbcSMatt Macy.Op Fl i Ar snapshot Ns | Ns Ar bookmark
455eda14cbcSMatt Macy.Ar snapshot
456eda14cbcSMatt Macy.Xc
457eda14cbcSMatt MacyGenerate a redacted send stream.
458eda14cbcSMatt MacyThis send stream contains all blocks from the snapshot being sent that aren't
459eda14cbcSMatt Macyincluded in the redaction list contained in the bookmark specified by the
460eda14cbcSMatt Macy.Fl -redact
461eda14cbcSMatt Macy(or
46216038816SMartin Matuska.Fl d )
46316038816SMartin Matuskaflag.
464eda14cbcSMatt MacyThe resulting send stream is said to be redacted with respect to the snapshots
465eda14cbcSMatt Macythe bookmark specified by the
466eda14cbcSMatt Macy.Fl -redact No flag was created with .
467eda14cbcSMatt MacyThe bookmark must have been created by running
46816038816SMartin Matuska.Nm zfs Cm redact
469eda14cbcSMatt Macyon the snapshot being sent.
47016038816SMartin Matuska.Pp
471eda14cbcSMatt MacyThis feature can be used to allow clones of a filesystem to be made available on
472eda14cbcSMatt Macya remote system, in the case where their parent need not (or needs to not) be
473eda14cbcSMatt Macyusable.
474eda14cbcSMatt MacyFor example, if a filesystem contains sensitive data, and it has clones where
475eda14cbcSMatt Macythat sensitive data has been secured or replaced with dummy data, redacted sends
476eda14cbcSMatt Macycan be used to replicate the secured data without replicating the original
477eda14cbcSMatt Macysensitive data, while still sharing all possible blocks.
478eda14cbcSMatt MacyA snapshot that has been redacted with respect to a set of snapshots will
479eda14cbcSMatt Macycontain all blocks referenced by at least one snapshot in the set, but will
480eda14cbcSMatt Macycontain none of the blocks referenced by none of the snapshots in the set.
481eda14cbcSMatt MacyIn other words, if all snapshots in the set have modified a given block in the
482eda14cbcSMatt Macyparent, that block will not be sent; but if one or more snapshots have not
483eda14cbcSMatt Macymodified a block in the parent, they will still reference the parent's block, so
484eda14cbcSMatt Macythat block will be sent.
485eda14cbcSMatt MacyNote that only user data will be redacted.
48616038816SMartin Matuska.Pp
487eda14cbcSMatt MacyWhen the redacted send stream is received, we will generate a redacted
488eda14cbcSMatt Macysnapshot.
489eda14cbcSMatt MacyDue to the nature of redaction, a redacted dataset can only be used in the
490eda14cbcSMatt Macyfollowing ways:
49116038816SMartin Matuska.Bl -enum -width "a."
49216038816SMartin Matuska.It
49316038816SMartin MatuskaTo receive, as a clone, an incremental send from the original snapshot to one
494eda14cbcSMatt Macyof the snapshots it was redacted with respect to.
495eda14cbcSMatt MacyIn this case, the stream will produce a valid dataset when received because all
496eda14cbcSMatt Macyblocks that were redacted in the parent are guaranteed to be present in the
497eda14cbcSMatt Macychild's send stream.
498eda14cbcSMatt MacyThis use case will produce a normal snapshot, which can be used just like other
499eda14cbcSMatt Macysnapshots.
50016038816SMartin Matuska.
50116038816SMartin Matuska.It
50216038816SMartin MatuskaTo receive an incremental send from the original snapshot to something
503eda14cbcSMatt Macyredacted with respect to a subset of the set of snapshots the initial snapshot
504eda14cbcSMatt Macywas redacted with respect to.
505eda14cbcSMatt MacyIn this case, each block that was redacted in the original is still redacted
506eda14cbcSMatt Macy(redacting with respect to additional snapshots causes less data to be redacted
507eda14cbcSMatt Macy(because the snapshots define what is permitted, and everything else is
508eda14cbcSMatt Macyredacted)).
509eda14cbcSMatt MacyThis use case will produce a new redacted snapshot.
51016038816SMartin Matuska.It
51116038816SMartin MatuskaTo receive an incremental send from a redaction bookmark of the original
512eda14cbcSMatt Macysnapshot that was created when redacting with respect to a subset of the set of
513eda14cbcSMatt Macysnapshots the initial snapshot was created with respect to
514eda14cbcSMatt Macyanything else.
515eda14cbcSMatt MacyA send stream from such a redaction bookmark will contain all of the blocks
516eda14cbcSMatt Macynecessary to fill in any redacted data, should it be needed, because the sending
517eda14cbcSMatt Macysystem is aware of what blocks were originally redacted.
518eda14cbcSMatt MacyThis will either produce a normal snapshot or a redacted one, depending on
519eda14cbcSMatt Macywhether the new send stream is redacted.
52016038816SMartin Matuska.It
52116038816SMartin MatuskaTo receive an incremental send from a redacted version of the initial
522eda14cbcSMatt Macysnapshot that is redacted with respect to a subject of the set of snapshots the
523eda14cbcSMatt Macyinitial snapshot was created with respect to.
524eda14cbcSMatt MacyA send stream from a compatible redacted dataset will contain all of the blocks
525eda14cbcSMatt Macynecessary to fill in any redacted data.
526eda14cbcSMatt MacyThis will either produce a normal snapshot or a redacted one, depending on
527eda14cbcSMatt Macywhether the new send stream is redacted.
52816038816SMartin Matuska.It
52916038816SMartin MatuskaTo receive a full send as a clone of the redacted snapshot.
530eda14cbcSMatt MacySince the stream is a full send, it definitionally contains all the data needed
531eda14cbcSMatt Macyto create a new dataset.
532eda14cbcSMatt MacyThis use case will either produce a normal snapshot or a redacted one, depending
533eda14cbcSMatt Macyon whether the full send stream was redacted.
53416038816SMartin Matuska.El
53516038816SMartin Matuska.Pp
53616038816SMartin MatuskaThese restrictions are detected and enforced by
53716038816SMartin Matuska.Nm zfs Cm receive ;
53816038816SMartin Matuskaa redacted send stream will contain the list of snapshots that the stream is
539eda14cbcSMatt Macyredacted with respect to.
540eda14cbcSMatt MacyThese are stored with the redacted snapshot, and are used to detect and
54116038816SMartin Matuskacorrectly handle the cases above.
54216038816SMartin MatuskaNote that for technical reasons,
54316038816SMartin Matuskaraw sends and redacted sends cannot be combined at this time.
544eda14cbcSMatt Macy.It Xo
5457877fdebSMatt Macy.Nm zfs
546eda14cbcSMatt Macy.Cm send
54715f0b8c3SMartin Matuska.Op Fl PVenv
548eda14cbcSMatt Macy.Fl t
549eda14cbcSMatt Macy.Ar receive_resume_token
550eda14cbcSMatt Macy.Xc
551eda14cbcSMatt MacyCreates a send stream which resumes an interrupted receive.
552eda14cbcSMatt MacyThe
553eda14cbcSMatt Macy.Ar receive_resume_token
554eda14cbcSMatt Macyis the value of this property on the filesystem or volume that was being
555eda14cbcSMatt Macyreceived into.
556eda14cbcSMatt MacySee the documentation for
55716038816SMartin Matuska.Nm zfs Cm receive Fl s
558eda14cbcSMatt Macyfor more details.
559eda14cbcSMatt Macy.It Xo
5607877fdebSMatt Macy.Nm zfs
561eda14cbcSMatt Macy.Cm send
56215f0b8c3SMartin Matuska.Op Fl PVnv
563eda14cbcSMatt Macy.Op Fl i Ar snapshot Ns | Ns Ar bookmark
564eda14cbcSMatt Macy.Fl S
565eda14cbcSMatt Macy.Ar filesystem
566eda14cbcSMatt Macy.Xc
567eda14cbcSMatt MacyGenerate a send stream from a dataset that has been partially received.
568eda14cbcSMatt Macy.Bl -tag -width "-L"
569eda14cbcSMatt Macy.It Fl S , -saved
570eda14cbcSMatt MacyThis flag requires that the specified filesystem previously received a resumable
57116038816SMartin Matuskasend that did not finish and was interrupted.
57216038816SMartin MatuskaIn such scenarios this flag
57316038816SMartin Matuskaenables the user to send this partially received state.
57416038816SMartin MatuskaUsing this flag will always use the last fully received snapshot
57516038816SMartin Matuskaas the incremental source if it exists.
576eda14cbcSMatt Macy.El
577eda14cbcSMatt Macy.It Xo
5787877fdebSMatt Macy.Nm zfs
579eda14cbcSMatt Macy.Cm redact
580eda14cbcSMatt Macy.Ar snapshot redaction_bookmark
58116038816SMartin Matuska.Ar redaction_snapshot Ns …
582eda14cbcSMatt Macy.Xc
583eda14cbcSMatt MacyGenerate a new redaction bookmark.
584eda14cbcSMatt MacyIn addition to the typical bookmark information, a redaction bookmark contains
585eda14cbcSMatt Macythe list of redacted blocks and the list of redaction snapshots specified.
586eda14cbcSMatt MacyThe redacted blocks are blocks in the snapshot which are not referenced by any
587eda14cbcSMatt Macyof the redaction snapshots.
588eda14cbcSMatt MacyThese blocks are found by iterating over the metadata in each redaction snapshot
589eda14cbcSMatt Macyto determine what has been changed since the target snapshot.
590eda14cbcSMatt MacyRedaction is designed to support redacted zfs sends; see the entry for
59116038816SMartin Matuska.Nm zfs Cm send
592eda14cbcSMatt Macyfor more information on the purpose of this operation.
593eda14cbcSMatt MacyIf a redact operation fails partway through (due to an error or a system
594eda14cbcSMatt Macyfailure), the redaction can be resumed by rerunning the same command.
595eda14cbcSMatt Macy.El
596eda14cbcSMatt Macy.Ss Redaction
597eda14cbcSMatt MacyZFS has support for a limited version of data subsetting, in the form of
59816038816SMartin Matuskaredaction.
59916038816SMartin MatuskaUsing the
60016038816SMartin Matuska.Nm zfs Cm redact
601eda14cbcSMatt Macycommand, a
602eda14cbcSMatt Macy.Sy redaction bookmark
60316038816SMartin Matuskacan be created that stores a list of blocks containing sensitive information.
60416038816SMartin MatuskaWhen provided to
60516038816SMartin Matuska.Nm zfs Cm send ,
606eda14cbcSMatt Macythis causes a
607eda14cbcSMatt Macy.Sy redacted send
60816038816SMartin Matuskato occur.
60916038816SMartin MatuskaRedacted sends omit the blocks containing sensitive information,
61016038816SMartin Matuskareplacing them with REDACT records.
61116038816SMartin MatuskaWhen these send streams are received, a
612eda14cbcSMatt Macy.Sy redacted dataset
61316038816SMartin Matuskais created.
61416038816SMartin MatuskaA redacted dataset cannot be mounted by default, since it is incomplete.
61516038816SMartin MatuskaIt can be used to receive other send streams.
61616038816SMartin MatuskaIn this way datasets can be used for data backup and replication,
61716038816SMartin Matuskawith all the benefits that zfs send and receive have to offer,
61816038816SMartin Matuskawhile protecting sensitive information from being
619eda14cbcSMatt Macystored on less-trusted machines or services.
620eda14cbcSMatt Macy.Pp
62116038816SMartin MatuskaFor the purposes of redaction, there are two steps to the process.
62216038816SMartin MatuskaA redact step, and a send/receive step.
62316038816SMartin MatuskaFirst, a redaction bookmark is created.
62416038816SMartin MatuskaThis is done by providing the
62516038816SMartin Matuska.Nm zfs Cm redact
626eda14cbcSMatt Macycommand with a parent snapshot, a bookmark to be created, and a number of
62716038816SMartin Matuskaredaction snapshots.
62816038816SMartin MatuskaThese redaction snapshots must be descendants of the parent snapshot,
62916038816SMartin Matuskaand they should modify data that is considered sensitive in some way.
63016038816SMartin MatuskaAny blocks of data modified by all of the redaction snapshots will
631eda14cbcSMatt Macybe listed in the redaction bookmark, because it represents the truly sensitive
63216038816SMartin Matuskainformation.
63316038816SMartin MatuskaWhen it comes to the send step, the send process will not send
634eda14cbcSMatt Macythe blocks listed in the redaction bookmark, instead replacing them with
63516038816SMartin MatuskaREDACT records.
63616038816SMartin MatuskaWhen received on the target system, this will create a
637eda14cbcSMatt Macyredacted dataset, missing the data that corresponds to the blocks in the
63816038816SMartin Matuskaredaction bookmark on the sending system.
63916038816SMartin MatuskaThe incremental send streams from
640eda14cbcSMatt Macythe original parent to the redaction snapshots can then also be received on
641eda14cbcSMatt Macythe target system, and this will produce a complete snapshot that can be used
64216038816SMartin Matuskanormally.
64316038816SMartin MatuskaIncrementals from one snapshot on the parent filesystem and another
644eda14cbcSMatt Macycan also be done by sending from the redaction bookmark, rather than the
645eda14cbcSMatt Macysnapshots themselves.
646eda14cbcSMatt Macy.Pp
64716038816SMartin MatuskaIn order to make the purpose of the feature more clear, an example is provided.
64816038816SMartin MatuskaConsider a zfs filesystem containing four files.
64916038816SMartin MatuskaThese files represent information for an online shopping service.
650bb2d13b6SMartin MatuskaOne file contains a list of usernames and passwords, another contains purchase
651bb2d13b6SMartin Matuskahistories,
65216038816SMartin Matuskaa third contains click tracking data, and a fourth contains user preferences.
65316038816SMartin MatuskaThe owner of this data wants to make it available for their development teams to
65416038816SMartin Matuskatest against, and their market research teams to do analysis on.
65516038816SMartin MatuskaThe development teams need information about user preferences and the click
656eda14cbcSMatt Macytracking data, while the market research teams need information about purchase
65716038816SMartin Matuskahistories and user preferences.
65816038816SMartin MatuskaNeither needs access to the usernames and passwords.
65916038816SMartin MatuskaHowever, because all of this data is stored in one ZFS filesystem,
66016038816SMartin Matuskait must all be sent and received together.
66116038816SMartin MatuskaIn addition, the owner of the data
662eda14cbcSMatt Macywants to take advantage of features like compression, checksumming, and
663bb2d13b6SMartin Matuskasnapshots, so they do want to continue to use ZFS to store and transmit their
664bb2d13b6SMartin Matuskadata.
66516038816SMartin MatuskaRedaction can help them do so.
66616038816SMartin MatuskaFirst, they would make two clones of a snapshot of the data on the source.
66716038816SMartin MatuskaIn one clone, they create the setup they want their market research team to see;
66816038816SMartin Matuskathey delete the usernames and passwords file,
66916038816SMartin Matuskaand overwrite the click tracking data with dummy information.
67016038816SMartin MatuskaIn another, they create the setup they want the development teams
671eda14cbcSMatt Macyto see, by replacing the passwords with fake information and replacing the
67216038816SMartin Matuskapurchase histories with randomly generated ones.
67316038816SMartin MatuskaThey would then create a redaction bookmark on the parent snapshot,
67416038816SMartin Matuskausing snapshots on the two clones as redaction snapshots.
67516038816SMartin MatuskaThe parent can then be sent, redacted, to the target
67616038816SMartin Matuskaserver where the research and development teams have access.
677bb2d13b6SMartin MatuskaFinally, incremental sends from the parent snapshot to each of the clones can be
678bb2d13b6SMartin Matuskasent
679eda14cbcSMatt Macyto and received on the target server; these snapshots are identical to the
680eda14cbcSMatt Macyones on the source, and are ready to be used, while the parent snapshot on the
681eda14cbcSMatt Macytarget contains none of the username and password data present on the source,
682eda14cbcSMatt Macybecause it was removed by the redacted send operation.
68316038816SMartin Matuska.
684*315ee00fSMartin Matuska.Sh SIGNALS
685*315ee00fSMartin MatuskaSee
686*315ee00fSMartin Matuska.Fl v .
687*315ee00fSMartin Matuska.
688da5137abSMartin Matuska.Sh EXAMPLES
689da5137abSMartin Matuska.\" These are, respectively, examples 12, 13 from zfs.8
690da5137abSMartin Matuska.\" Make sure to update them bidirectionally
691da5137abSMartin Matuska.Ss Example 1 : No Remotely Replicating ZFS Data
692da5137abSMartin MatuskaThe following commands send a full stream and then an incremental stream to a
693da5137abSMartin Matuskaremote machine, restoring them into
694da5137abSMartin Matuska.Em poolB/received/fs@a
695da5137abSMartin Matuskaand
696da5137abSMartin Matuska.Em poolB/received/fs@b ,
697da5137abSMartin Matuskarespectively.
698da5137abSMartin Matuska.Em poolB
699da5137abSMartin Matuskamust contain the file system
700da5137abSMartin Matuska.Em poolB/received ,
701da5137abSMartin Matuskaand must not initially contain
702da5137abSMartin Matuska.Em poolB/received/fs .
703da5137abSMartin Matuska.Bd -literal -compact -offset Ds
704da5137abSMartin Matuska.No # Nm zfs Cm send Ar pool/fs@a |
705da5137abSMartin Matuska.No "   " Nm ssh Ar host Nm zfs Cm receive Ar poolB/received/fs Ns @ Ns Ar a
706da5137abSMartin Matuska.No # Nm zfs Cm send Fl i Ar a pool/fs@b |
707da5137abSMartin Matuska.No "   " Nm ssh Ar host Nm zfs Cm receive Ar poolB/received/fs
708da5137abSMartin Matuska.Ed
709da5137abSMartin Matuska.
710da5137abSMartin Matuska.Ss Example 2 : No Using the Nm zfs Cm receive Fl d No Option
711da5137abSMartin MatuskaThe following command sends a full stream of
712da5137abSMartin Matuska.Ar poolA/fsA/fsB@snap
713da5137abSMartin Matuskato a remote machine, receiving it into
714da5137abSMartin Matuska.Ar poolB/received/fsA/fsB@snap .
715da5137abSMartin MatuskaThe
716da5137abSMartin Matuska.Ar fsA/fsB@snap
717da5137abSMartin Matuskaportion of the received snapshot's name is determined from the name of the sent
718da5137abSMartin Matuskasnapshot.
719da5137abSMartin Matuska.Ar poolB
720da5137abSMartin Matuskamust contain the file system
721da5137abSMartin Matuska.Ar poolB/received .
722da5137abSMartin MatuskaIf
723da5137abSMartin Matuska.Ar poolB/received/fsA
724da5137abSMartin Matuskadoes not exist, it is created as an empty file system.
725da5137abSMartin Matuska.Bd -literal -compact -offset Ds
726da5137abSMartin Matuska.No # Nm zfs Cm send Ar poolA/fsA/fsB@snap |
727da5137abSMartin Matuska.No "   " Nm ssh Ar host Nm zfs Cm receive Fl d Ar poolB/received
728da5137abSMartin Matuska.Ed
729da5137abSMartin Matuska.
730eda14cbcSMatt Macy.Sh SEE ALSO
731eda14cbcSMatt Macy.Xr zfs-bookmark 8 ,
732eda14cbcSMatt Macy.Xr zfs-receive 8 ,
733eda14cbcSMatt Macy.Xr zfs-redact 8 ,
734eda14cbcSMatt Macy.Xr zfs-snapshot 8
735