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.\" 32da5137abSMartin Matuska.Dd March 16, 2022 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 42716fd348SMartin Matuska.Op Fl DLPbcehnpsvw 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 483f9d360cSMartin Matuska.Op Fl DLPcensvw 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 54eda14cbcSMatt Macy.Op Fl DLPcenpv 55eda14cbcSMatt Macy.Op Fl i Ar snapshot Ns | Ns Ar bookmark 56eda14cbcSMatt Macy.Ar snapshot 577877fdebSMatt Macy.Nm zfs 58eda14cbcSMatt Macy.Cm send 59eda14cbcSMatt Macy.Op Fl Penv 60eda14cbcSMatt Macy.Fl t 61eda14cbcSMatt Macy.Ar receive_resume_token 627877fdebSMatt Macy.Nm zfs 63eda14cbcSMatt Macy.Cm send 64eda14cbcSMatt Macy.Op Fl Pnv 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 76716fd348SMartin Matuska.Op Fl DLPbcehnpsvw 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. 145716fd348SMartin Matuska.It Fl X , -exclude Ar dataset Ns Oo , Ns Ar dataset Oc Ns … 146716fd348SMartin MatuskaWith 147716fd348SMartin Matuska.Fl R , 148da5137abSMartin Matuska.Fl X 149716fd348SMartin Matuskaspecifies a set of datasets (and, hence, their descendants), 150716fd348SMartin Matuskato be excluded from the send stream. 151716fd348SMartin MatuskaThe root dataset may not be excluded. 152716fd348SMartin Matuska.Fl X Ar a Fl X Ar b 153716fd348SMartin Matuskais equivalent to 154716fd348SMartin Matuska.Fl X Ar a , Ns Ar b . 155eda14cbcSMatt Macy.It Fl e , -embed 156eda14cbcSMatt MacyGenerate a more compact stream by using 157eda14cbcSMatt Macy.Sy WRITE_EMBEDDED 158eda14cbcSMatt Macyrecords for blocks which are stored more compactly on disk by the 159eda14cbcSMatt Macy.Sy embedded_data 160eda14cbcSMatt Macypool feature. 161eda14cbcSMatt MacyThis flag has no effect if the 162eda14cbcSMatt Macy.Sy embedded_data 163eda14cbcSMatt Macyfeature is disabled. 164eda14cbcSMatt MacyThe receiving system must have the 165eda14cbcSMatt Macy.Sy embedded_data 166eda14cbcSMatt Macyfeature enabled. 167eda14cbcSMatt MacyIf the 168eda14cbcSMatt Macy.Sy lz4_compress 169eda14cbcSMatt Macyfeature is active on the sending system, then the receiving system must have 17016038816SMartin Matuskathat feature enabled as well. 17116038816SMartin MatuskaDatasets that are sent with this flag may not be 172eda14cbcSMatt Macyreceived as an encrypted dataset, since encrypted datasets cannot use the 173eda14cbcSMatt Macy.Sy embedded_data 174eda14cbcSMatt Macyfeature. 175eda14cbcSMatt MacySee 1763ff01b23SMartin Matuska.Xr zpool-features 7 177eda14cbcSMatt Macyfor details on ZFS feature flags and the 178eda14cbcSMatt Macy.Sy embedded_data 179eda14cbcSMatt Macyfeature. 180eda14cbcSMatt Macy.It Fl b , -backup 181eda14cbcSMatt MacySends only received property values whether or not they are overridden by local 18216038816SMartin Matuskasettings, but only if the dataset has ever been received. 18316038816SMartin MatuskaUse this option when you want 184eda14cbcSMatt Macy.Nm zfs Cm receive 185eda14cbcSMatt Macyto restore received properties backed up on the sent dataset and to avoid 186eda14cbcSMatt Macysending local settings that may have nothing to do with the source dataset, 187eda14cbcSMatt Macybut only with how the data is backed up. 188eda14cbcSMatt Macy.It Fl c , -compressed 189eda14cbcSMatt MacyGenerate a more compact stream by using compressed WRITE records for blocks 190eda14cbcSMatt Macywhich are compressed on disk and in memory 191eda14cbcSMatt Macy.Po see the 192eda14cbcSMatt Macy.Sy compression 193eda14cbcSMatt Macyproperty for details 194eda14cbcSMatt Macy.Pc . 195eda14cbcSMatt MacyIf the 196eda14cbcSMatt Macy.Sy lz4_compress 197eda14cbcSMatt Macyfeature is active on the sending system, then the receiving system must have 198eda14cbcSMatt Macythat feature enabled as well. 199eda14cbcSMatt MacyIf the 200eda14cbcSMatt Macy.Sy large_blocks 201eda14cbcSMatt Macyfeature is enabled on the sending system but the 202eda14cbcSMatt Macy.Fl L 203eda14cbcSMatt Macyoption is not supplied in conjunction with 204eda14cbcSMatt Macy.Fl c , 205eda14cbcSMatt Macythen the data will be decompressed before sending so it can be split into 20616038816SMartin Matuskasmaller block sizes. 20716038816SMartin MatuskaStreams sent with 2089db44a8eSMartin Matuska.Fl c 2099db44a8eSMartin Matuskawill not have their data recompressed on the receiver side using 21016038816SMartin Matuska.Fl o Sy compress Ns = Ar value . 21116038816SMartin MatuskaThe data will stay compressed as it was from the sender. 21216038816SMartin MatuskaThe new compression property will be set for future data. 2136ba2210eSMartin MatuskaNote that uncompressed data from the sender will still attempt to 2146ba2210eSMartin Matuskacompress on the receiver, unless you specify 2156ba2210eSMartin Matuska.Fl o Sy compress Ns = Em off . 216eda14cbcSMatt Macy.It Fl w , -raw 21716038816SMartin MatuskaFor encrypted datasets, send data exactly as it exists on disk. 218*bb2d13b6SMartin MatuskaThis allows backups to be taken even if encryption keys are not currently 219*bb2d13b6SMartin Matuskaloaded. 22016038816SMartin MatuskaThe backup may then be received on an untrusted machine since that machine will 221eda14cbcSMatt Macynot have the encryption keys to read the protected data or alter it without 22216038816SMartin Matuskabeing detected. 22316038816SMartin MatuskaUpon being received, the dataset will have the same encryption 224eda14cbcSMatt Macykeys as it did on the send side, although the 225eda14cbcSMatt Macy.Sy keylocation 226eda14cbcSMatt Macyproperty will be defaulted to 227eda14cbcSMatt Macy.Sy prompt 22816038816SMartin Matuskaif not otherwise provided. 22916038816SMartin MatuskaFor unencrypted datasets, this flag will be equivalent to 230eda14cbcSMatt Macy.Fl Lec . 231eda14cbcSMatt MacyNote that if you do not use this flag for sending encrypted datasets, data will 232eda14cbcSMatt Macybe sent unencrypted and may be re-encrypted with a different encryption key on 233eda14cbcSMatt Macythe receiving system, which will disable the ability to do a raw send to that 234eda14cbcSMatt Macysystem for incrementals. 235eda14cbcSMatt Macy.It Fl h , -holds 236eda14cbcSMatt MacyGenerate a stream package that includes any snapshot holds (created with the 23716038816SMartin Matuska.Nm zfs Cm hold 238eda14cbcSMatt Macycommand), and indicating to 23916038816SMartin Matuska.Nm zfs Cm receive 240eda14cbcSMatt Macythat the holds be applied to the dataset on the receiving system. 241eda14cbcSMatt Macy.It Fl i Ar snapshot 242eda14cbcSMatt MacyGenerate an incremental stream from the first 243eda14cbcSMatt Macy.Ar snapshot 244eda14cbcSMatt Macy.Pq the incremental source 245eda14cbcSMatt Macyto the second 246eda14cbcSMatt Macy.Ar snapshot 247eda14cbcSMatt Macy.Pq the incremental target . 248eda14cbcSMatt MacyThe incremental source can be specified as the last component of the snapshot 249eda14cbcSMatt Macyname 250eda14cbcSMatt Macy.Po the 251eda14cbcSMatt Macy.Sy @ 252eda14cbcSMatt Macycharacter and following 253eda14cbcSMatt Macy.Pc 254eda14cbcSMatt Macyand it is assumed to be from the same file system as the incremental target. 255eda14cbcSMatt Macy.Pp 256eda14cbcSMatt MacyIf the destination is a clone, the source may be the origin snapshot, which must 257eda14cbcSMatt Macybe fully specified 258eda14cbcSMatt Macy.Po for example, 259eda14cbcSMatt Macy.Em pool/fs@origin , 260eda14cbcSMatt Macynot just 261eda14cbcSMatt Macy.Em @origin 262eda14cbcSMatt Macy.Pc . 263eda14cbcSMatt Macy.It Fl n , -dryrun 264eda14cbcSMatt MacyDo a dry-run 265eda14cbcSMatt Macy.Pq Qq No-op 266eda14cbcSMatt Macysend. 267eda14cbcSMatt MacyDo not generate any actual send data. 268eda14cbcSMatt MacyThis is useful in conjunction with the 269eda14cbcSMatt Macy.Fl v 270eda14cbcSMatt Macyor 271eda14cbcSMatt Macy.Fl P 272eda14cbcSMatt Macyflags to determine what data will be sent. 273eda14cbcSMatt MacyIn this case, the verbose output will be written to standard output 274eda14cbcSMatt Macy.Po contrast with a non-dry-run, where the stream is written to standard output 275eda14cbcSMatt Macyand the verbose output goes to standard error 276eda14cbcSMatt Macy.Pc . 277eda14cbcSMatt Macy.It Fl p , -props 278eda14cbcSMatt MacyInclude the dataset's properties in the stream. 279eda14cbcSMatt MacyThis flag is implicit when 280eda14cbcSMatt Macy.Fl R 281eda14cbcSMatt Macyis specified. 28216038816SMartin MatuskaThe receiving system must also support this feature. 28316038816SMartin MatuskaSends of encrypted datasets must use 284eda14cbcSMatt Macy.Fl w 285eda14cbcSMatt Macywhen using this flag. 28616038816SMartin Matuska.It Fl s , -skip-missing 28716038816SMartin MatuskaAllows sending a replication stream even when there are snapshots missing in the 28816038816SMartin Matuskahierarchy. 28916038816SMartin MatuskaWhen a snapshot is missing, instead of throwing an error and aborting the send, 290*bb2d13b6SMartin Matuskaa warning is printed to the standard error stream and the dataset to which it 291*bb2d13b6SMartin Matuskabelongs 29216038816SMartin Matuskaand its descendents are skipped. 29316038816SMartin MatuskaThis flag can only be used in conjunction with 29416038816SMartin Matuska.Fl R . 295eda14cbcSMatt Macy.It Fl v , -verbose 296eda14cbcSMatt MacyPrint verbose information about the stream package generated. 297eda14cbcSMatt MacyThis information includes a per-second report of how much data has been sent. 298eda14cbcSMatt Macy.Pp 299eda14cbcSMatt MacyThe format of the stream is committed. 300eda14cbcSMatt MacyYou will be able to receive your streams on future versions of ZFS. 301eda14cbcSMatt Macy.El 302eda14cbcSMatt Macy.It Xo 3037877fdebSMatt Macy.Nm zfs 304eda14cbcSMatt Macy.Cm send 3053f9d360cSMartin Matuska.Op Fl DLPcenvw 306eda14cbcSMatt Macy.Op Fl i Ar snapshot Ns | Ns Ar bookmark 307eda14cbcSMatt Macy.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot 308eda14cbcSMatt Macy.Xc 309eda14cbcSMatt MacyGenerate a send stream, which may be of a filesystem, and may be incremental 310eda14cbcSMatt Macyfrom a bookmark. 311eda14cbcSMatt MacyIf the destination is a filesystem or volume, the pool must be read-only, or the 312eda14cbcSMatt Macyfilesystem must not be mounted. 313eda14cbcSMatt MacyWhen the stream generated from a filesystem or volume is received, the default 314eda14cbcSMatt Macysnapshot name will be 315eda14cbcSMatt Macy.Qq --head-- . 3163f9d360cSMartin Matuska.Bl -tag -width "-D" 3173f9d360cSMartin Matuska.It Fl D , -dedup 3183f9d360cSMartin MatuskaDeduplicated send is no longer supported. 3193f9d360cSMartin MatuskaThis flag is accepted for backwards compatibility, but a regular, 3203f9d360cSMartin Matuskanon-deduplicated stream will be generated. 321eda14cbcSMatt Macy.It Fl L , -large-block 322716fd348SMartin MatuskaGenerate a stream which may contain blocks larger than 128 KiB. 323eda14cbcSMatt MacyThis flag has no effect if the 324eda14cbcSMatt Macy.Sy large_blocks 325eda14cbcSMatt Macypool feature is disabled, or if the 326eda14cbcSMatt Macy.Sy recordsize 327716fd348SMartin Matuskaproperty of this filesystem has never been set above 128 KiB. 328eda14cbcSMatt MacyThe receiving system must have the 329eda14cbcSMatt Macy.Sy large_blocks 330eda14cbcSMatt Macypool feature enabled as well. 331eda14cbcSMatt MacySee 3323ff01b23SMartin Matuska.Xr zpool-features 7 333eda14cbcSMatt Macyfor details on ZFS feature flags and the 334eda14cbcSMatt Macy.Sy large_blocks 335eda14cbcSMatt Macyfeature. 336eda14cbcSMatt Macy.It Fl P , -parsable 337eda14cbcSMatt MacyPrint machine-parsable verbose information about the stream package generated. 338eda14cbcSMatt Macy.It Fl c , -compressed 339eda14cbcSMatt MacyGenerate a more compact stream by using compressed WRITE records for blocks 340eda14cbcSMatt Macywhich are compressed on disk and in memory 341eda14cbcSMatt Macy.Po see the 342eda14cbcSMatt Macy.Sy compression 343eda14cbcSMatt Macyproperty for details 344eda14cbcSMatt Macy.Pc . 345eda14cbcSMatt MacyIf the 346eda14cbcSMatt Macy.Sy lz4_compress 347eda14cbcSMatt Macyfeature is active on the sending system, then the receiving system must have 348eda14cbcSMatt Macythat feature enabled as well. 349eda14cbcSMatt MacyIf the 350eda14cbcSMatt Macy.Sy large_blocks 351eda14cbcSMatt Macyfeature is enabled on the sending system but the 352eda14cbcSMatt Macy.Fl L 353eda14cbcSMatt Macyoption is not supplied in conjunction with 354eda14cbcSMatt Macy.Fl c , 355eda14cbcSMatt Macythen the data will be decompressed before sending so it can be split into 356eda14cbcSMatt Macysmaller block sizes. 357eda14cbcSMatt Macy.It Fl w , -raw 35816038816SMartin MatuskaFor encrypted datasets, send data exactly as it exists on disk. 359*bb2d13b6SMartin MatuskaThis allows backups to be taken even if encryption keys are not currently 360*bb2d13b6SMartin Matuskaloaded. 36116038816SMartin MatuskaThe backup may then be received on an untrusted machine since that machine will 362eda14cbcSMatt Macynot have the encryption keys to read the protected data or alter it without 36316038816SMartin Matuskabeing detected. 36416038816SMartin MatuskaUpon being received, the dataset will have the same encryption 365eda14cbcSMatt Macykeys as it did on the send side, although the 366eda14cbcSMatt Macy.Sy keylocation 367eda14cbcSMatt Macyproperty will be defaulted to 368eda14cbcSMatt Macy.Sy prompt 36916038816SMartin Matuskaif not otherwise provided. 37016038816SMartin MatuskaFor unencrypted datasets, this flag will be equivalent to 371eda14cbcSMatt Macy.Fl Lec . 372eda14cbcSMatt MacyNote that if you do not use this flag for sending encrypted datasets, data will 373eda14cbcSMatt Macybe sent unencrypted and may be re-encrypted with a different encryption key on 374eda14cbcSMatt Macythe receiving system, which will disable the ability to do a raw send to that 375eda14cbcSMatt Macysystem for incrementals. 376eda14cbcSMatt Macy.It Fl e , -embed 377eda14cbcSMatt MacyGenerate a more compact stream by using 378eda14cbcSMatt Macy.Sy WRITE_EMBEDDED 379eda14cbcSMatt Macyrecords for blocks which are stored more compactly on disk by the 380eda14cbcSMatt Macy.Sy embedded_data 381eda14cbcSMatt Macypool feature. 382eda14cbcSMatt MacyThis flag has no effect if the 383eda14cbcSMatt Macy.Sy embedded_data 384eda14cbcSMatt Macyfeature is disabled. 385eda14cbcSMatt MacyThe receiving system must have the 386eda14cbcSMatt Macy.Sy embedded_data 387eda14cbcSMatt Macyfeature enabled. 388eda14cbcSMatt MacyIf the 389eda14cbcSMatt Macy.Sy lz4_compress 390eda14cbcSMatt Macyfeature is active on the sending system, then the receiving system must have 39116038816SMartin Matuskathat feature enabled as well. 392*bb2d13b6SMartin MatuskaDatasets that are sent with this flag may not be received as an encrypted 393*bb2d13b6SMartin Matuskadataset, 39416038816SMartin Matuskasince encrypted datasets cannot use the 395eda14cbcSMatt Macy.Sy embedded_data 396eda14cbcSMatt Macyfeature. 397eda14cbcSMatt MacySee 3983ff01b23SMartin Matuska.Xr zpool-features 7 399eda14cbcSMatt Macyfor details on ZFS feature flags and the 400eda14cbcSMatt Macy.Sy embedded_data 401eda14cbcSMatt Macyfeature. 402eda14cbcSMatt Macy.It Fl i Ar snapshot Ns | Ns Ar bookmark 403eda14cbcSMatt MacyGenerate an incremental send stream. 404eda14cbcSMatt MacyThe incremental source must be an earlier snapshot in the destination's history. 405eda14cbcSMatt MacyIt will commonly be an earlier snapshot in the destination's file system, in 406eda14cbcSMatt Macywhich case it can be specified as the last component of the name 407eda14cbcSMatt Macy.Po the 408eda14cbcSMatt Macy.Sy # 409eda14cbcSMatt Macyor 410eda14cbcSMatt Macy.Sy @ 411eda14cbcSMatt Macycharacter and following 412eda14cbcSMatt Macy.Pc . 413eda14cbcSMatt Macy.Pp 414eda14cbcSMatt MacyIf the incremental target is a clone, the incremental source can be the origin 415eda14cbcSMatt Macysnapshot, or an earlier snapshot in the origin's filesystem, or the origin's 416eda14cbcSMatt Macyorigin, etc. 417eda14cbcSMatt Macy.It Fl n , -dryrun 418eda14cbcSMatt MacyDo a dry-run 419eda14cbcSMatt Macy.Pq Qq No-op 420eda14cbcSMatt Macysend. 421eda14cbcSMatt MacyDo not generate any actual send data. 422eda14cbcSMatt MacyThis is useful in conjunction with the 423eda14cbcSMatt Macy.Fl v 424eda14cbcSMatt Macyor 425eda14cbcSMatt Macy.Fl P 426eda14cbcSMatt Macyflags to determine what data will be sent. 427eda14cbcSMatt MacyIn this case, the verbose output will be written to standard output 428eda14cbcSMatt Macy.Po contrast with a non-dry-run, where the stream is written to standard output 429eda14cbcSMatt Macyand the verbose output goes to standard error 430eda14cbcSMatt Macy.Pc . 431eda14cbcSMatt Macy.It Fl v , -verbose 432eda14cbcSMatt MacyPrint verbose information about the stream package generated. 433eda14cbcSMatt MacyThis information includes a per-second report of how much data has been sent. 434eda14cbcSMatt Macy.El 435eda14cbcSMatt Macy.It Xo 4367877fdebSMatt Macy.Nm zfs 437eda14cbcSMatt Macy.Cm send 438eda14cbcSMatt Macy.Fl -redact Ar redaction_bookmark 439eda14cbcSMatt Macy.Op Fl DLPcenpv 440eda14cbcSMatt Macy.Op Fl i Ar snapshot Ns | Ns Ar bookmark 441eda14cbcSMatt Macy.Ar snapshot 442eda14cbcSMatt Macy.Xc 443eda14cbcSMatt MacyGenerate a redacted send stream. 444eda14cbcSMatt MacyThis send stream contains all blocks from the snapshot being sent that aren't 445eda14cbcSMatt Macyincluded in the redaction list contained in the bookmark specified by the 446eda14cbcSMatt Macy.Fl -redact 447eda14cbcSMatt Macy(or 44816038816SMartin Matuska.Fl d ) 44916038816SMartin Matuskaflag. 450eda14cbcSMatt MacyThe resulting send stream is said to be redacted with respect to the snapshots 451eda14cbcSMatt Macythe bookmark specified by the 452eda14cbcSMatt Macy.Fl -redact No flag was created with . 453eda14cbcSMatt MacyThe bookmark must have been created by running 45416038816SMartin Matuska.Nm zfs Cm redact 455eda14cbcSMatt Macyon the snapshot being sent. 45616038816SMartin Matuska.Pp 457eda14cbcSMatt MacyThis feature can be used to allow clones of a filesystem to be made available on 458eda14cbcSMatt Macya remote system, in the case where their parent need not (or needs to not) be 459eda14cbcSMatt Macyusable. 460eda14cbcSMatt MacyFor example, if a filesystem contains sensitive data, and it has clones where 461eda14cbcSMatt Macythat sensitive data has been secured or replaced with dummy data, redacted sends 462eda14cbcSMatt Macycan be used to replicate the secured data without replicating the original 463eda14cbcSMatt Macysensitive data, while still sharing all possible blocks. 464eda14cbcSMatt MacyA snapshot that has been redacted with respect to a set of snapshots will 465eda14cbcSMatt Macycontain all blocks referenced by at least one snapshot in the set, but will 466eda14cbcSMatt Macycontain none of the blocks referenced by none of the snapshots in the set. 467eda14cbcSMatt MacyIn other words, if all snapshots in the set have modified a given block in the 468eda14cbcSMatt Macyparent, that block will not be sent; but if one or more snapshots have not 469eda14cbcSMatt Macymodified a block in the parent, they will still reference the parent's block, so 470eda14cbcSMatt Macythat block will be sent. 471eda14cbcSMatt MacyNote that only user data will be redacted. 47216038816SMartin Matuska.Pp 473eda14cbcSMatt MacyWhen the redacted send stream is received, we will generate a redacted 474eda14cbcSMatt Macysnapshot. 475eda14cbcSMatt MacyDue to the nature of redaction, a redacted dataset can only be used in the 476eda14cbcSMatt Macyfollowing ways: 47716038816SMartin Matuska.Bl -enum -width "a." 47816038816SMartin Matuska.It 47916038816SMartin MatuskaTo receive, as a clone, an incremental send from the original snapshot to one 480eda14cbcSMatt Macyof the snapshots it was redacted with respect to. 481eda14cbcSMatt MacyIn this case, the stream will produce a valid dataset when received because all 482eda14cbcSMatt Macyblocks that were redacted in the parent are guaranteed to be present in the 483eda14cbcSMatt Macychild's send stream. 484eda14cbcSMatt MacyThis use case will produce a normal snapshot, which can be used just like other 485eda14cbcSMatt Macysnapshots. 48616038816SMartin Matuska. 48716038816SMartin Matuska.It 48816038816SMartin MatuskaTo receive an incremental send from the original snapshot to something 489eda14cbcSMatt Macyredacted with respect to a subset of the set of snapshots the initial snapshot 490eda14cbcSMatt Macywas redacted with respect to. 491eda14cbcSMatt MacyIn this case, each block that was redacted in the original is still redacted 492eda14cbcSMatt Macy(redacting with respect to additional snapshots causes less data to be redacted 493eda14cbcSMatt Macy(because the snapshots define what is permitted, and everything else is 494eda14cbcSMatt Macyredacted)). 495eda14cbcSMatt MacyThis use case will produce a new redacted snapshot. 49616038816SMartin Matuska.It 49716038816SMartin MatuskaTo receive an incremental send from a redaction bookmark of the original 498eda14cbcSMatt Macysnapshot that was created when redacting with respect to a subset of the set of 499eda14cbcSMatt Macysnapshots the initial snapshot was created with respect to 500eda14cbcSMatt Macyanything else. 501eda14cbcSMatt MacyA send stream from such a redaction bookmark will contain all of the blocks 502eda14cbcSMatt Macynecessary to fill in any redacted data, should it be needed, because the sending 503eda14cbcSMatt Macysystem is aware of what blocks were originally redacted. 504eda14cbcSMatt MacyThis will either produce a normal snapshot or a redacted one, depending on 505eda14cbcSMatt Macywhether the new send stream is redacted. 50616038816SMartin Matuska.It 50716038816SMartin MatuskaTo receive an incremental send from a redacted version of the initial 508eda14cbcSMatt Macysnapshot that is redacted with respect to a subject of the set of snapshots the 509eda14cbcSMatt Macyinitial snapshot was created with respect to. 510eda14cbcSMatt MacyA send stream from a compatible redacted dataset will contain all of the blocks 511eda14cbcSMatt Macynecessary to fill in any redacted data. 512eda14cbcSMatt MacyThis will either produce a normal snapshot or a redacted one, depending on 513eda14cbcSMatt Macywhether the new send stream is redacted. 51416038816SMartin Matuska.It 51516038816SMartin MatuskaTo receive a full send as a clone of the redacted snapshot. 516eda14cbcSMatt MacySince the stream is a full send, it definitionally contains all the data needed 517eda14cbcSMatt Macyto create a new dataset. 518eda14cbcSMatt MacyThis use case will either produce a normal snapshot or a redacted one, depending 519eda14cbcSMatt Macyon whether the full send stream was redacted. 52016038816SMartin Matuska.El 52116038816SMartin Matuska.Pp 52216038816SMartin MatuskaThese restrictions are detected and enforced by 52316038816SMartin Matuska.Nm zfs Cm receive ; 52416038816SMartin Matuskaa redacted send stream will contain the list of snapshots that the stream is 525eda14cbcSMatt Macyredacted with respect to. 526eda14cbcSMatt MacyThese are stored with the redacted snapshot, and are used to detect and 52716038816SMartin Matuskacorrectly handle the cases above. 52816038816SMartin MatuskaNote that for technical reasons, 52916038816SMartin Matuskaraw sends and redacted sends cannot be combined at this time. 530eda14cbcSMatt Macy.It Xo 5317877fdebSMatt Macy.Nm zfs 532eda14cbcSMatt Macy.Cm send 533eda14cbcSMatt Macy.Op Fl Penv 534eda14cbcSMatt Macy.Fl t 535eda14cbcSMatt Macy.Ar receive_resume_token 536eda14cbcSMatt Macy.Xc 537eda14cbcSMatt MacyCreates a send stream which resumes an interrupted receive. 538eda14cbcSMatt MacyThe 539eda14cbcSMatt Macy.Ar receive_resume_token 540eda14cbcSMatt Macyis the value of this property on the filesystem or volume that was being 541eda14cbcSMatt Macyreceived into. 542eda14cbcSMatt MacySee the documentation for 54316038816SMartin Matuska.Nm zfs Cm receive Fl s 544eda14cbcSMatt Macyfor more details. 545eda14cbcSMatt Macy.It Xo 5467877fdebSMatt Macy.Nm zfs 547eda14cbcSMatt Macy.Cm send 548eda14cbcSMatt Macy.Op Fl Pnv 549eda14cbcSMatt Macy.Op Fl i Ar snapshot Ns | Ns Ar bookmark 550eda14cbcSMatt Macy.Fl S 551eda14cbcSMatt Macy.Ar filesystem 552eda14cbcSMatt Macy.Xc 553eda14cbcSMatt MacyGenerate a send stream from a dataset that has been partially received. 554eda14cbcSMatt Macy.Bl -tag -width "-L" 555eda14cbcSMatt Macy.It Fl S , -saved 556eda14cbcSMatt MacyThis flag requires that the specified filesystem previously received a resumable 55716038816SMartin Matuskasend that did not finish and was interrupted. 55816038816SMartin MatuskaIn such scenarios this flag 55916038816SMartin Matuskaenables the user to send this partially received state. 56016038816SMartin MatuskaUsing this flag will always use the last fully received snapshot 56116038816SMartin Matuskaas the incremental source if it exists. 562eda14cbcSMatt Macy.El 563eda14cbcSMatt Macy.It Xo 5647877fdebSMatt Macy.Nm zfs 565eda14cbcSMatt Macy.Cm redact 566eda14cbcSMatt Macy.Ar snapshot redaction_bookmark 56716038816SMartin Matuska.Ar redaction_snapshot Ns … 568eda14cbcSMatt Macy.Xc 569eda14cbcSMatt MacyGenerate a new redaction bookmark. 570eda14cbcSMatt MacyIn addition to the typical bookmark information, a redaction bookmark contains 571eda14cbcSMatt Macythe list of redacted blocks and the list of redaction snapshots specified. 572eda14cbcSMatt MacyThe redacted blocks are blocks in the snapshot which are not referenced by any 573eda14cbcSMatt Macyof the redaction snapshots. 574eda14cbcSMatt MacyThese blocks are found by iterating over the metadata in each redaction snapshot 575eda14cbcSMatt Macyto determine what has been changed since the target snapshot. 576eda14cbcSMatt MacyRedaction is designed to support redacted zfs sends; see the entry for 57716038816SMartin Matuska.Nm zfs Cm send 578eda14cbcSMatt Macyfor more information on the purpose of this operation. 579eda14cbcSMatt MacyIf a redact operation fails partway through (due to an error or a system 580eda14cbcSMatt Macyfailure), the redaction can be resumed by rerunning the same command. 581eda14cbcSMatt Macy.El 582eda14cbcSMatt Macy.Ss Redaction 583eda14cbcSMatt MacyZFS has support for a limited version of data subsetting, in the form of 58416038816SMartin Matuskaredaction. 58516038816SMartin MatuskaUsing the 58616038816SMartin Matuska.Nm zfs Cm redact 587eda14cbcSMatt Macycommand, a 588eda14cbcSMatt Macy.Sy redaction bookmark 58916038816SMartin Matuskacan be created that stores a list of blocks containing sensitive information. 59016038816SMartin MatuskaWhen provided to 59116038816SMartin Matuska.Nm zfs Cm send , 592eda14cbcSMatt Macythis causes a 593eda14cbcSMatt Macy.Sy redacted send 59416038816SMartin Matuskato occur. 59516038816SMartin MatuskaRedacted sends omit the blocks containing sensitive information, 59616038816SMartin Matuskareplacing them with REDACT records. 59716038816SMartin MatuskaWhen these send streams are received, a 598eda14cbcSMatt Macy.Sy redacted dataset 59916038816SMartin Matuskais created. 60016038816SMartin MatuskaA redacted dataset cannot be mounted by default, since it is incomplete. 60116038816SMartin MatuskaIt can be used to receive other send streams. 60216038816SMartin MatuskaIn this way datasets can be used for data backup and replication, 60316038816SMartin Matuskawith all the benefits that zfs send and receive have to offer, 60416038816SMartin Matuskawhile protecting sensitive information from being 605eda14cbcSMatt Macystored on less-trusted machines or services. 606eda14cbcSMatt Macy.Pp 60716038816SMartin MatuskaFor the purposes of redaction, there are two steps to the process. 60816038816SMartin MatuskaA redact step, and a send/receive step. 60916038816SMartin MatuskaFirst, a redaction bookmark is created. 61016038816SMartin MatuskaThis is done by providing the 61116038816SMartin Matuska.Nm zfs Cm redact 612eda14cbcSMatt Macycommand with a parent snapshot, a bookmark to be created, and a number of 61316038816SMartin Matuskaredaction snapshots. 61416038816SMartin MatuskaThese redaction snapshots must be descendants of the parent snapshot, 61516038816SMartin Matuskaand they should modify data that is considered sensitive in some way. 61616038816SMartin MatuskaAny blocks of data modified by all of the redaction snapshots will 617eda14cbcSMatt Macybe listed in the redaction bookmark, because it represents the truly sensitive 61816038816SMartin Matuskainformation. 61916038816SMartin MatuskaWhen it comes to the send step, the send process will not send 620eda14cbcSMatt Macythe blocks listed in the redaction bookmark, instead replacing them with 62116038816SMartin MatuskaREDACT records. 62216038816SMartin MatuskaWhen received on the target system, this will create a 623eda14cbcSMatt Macyredacted dataset, missing the data that corresponds to the blocks in the 62416038816SMartin Matuskaredaction bookmark on the sending system. 62516038816SMartin MatuskaThe incremental send streams from 626eda14cbcSMatt Macythe original parent to the redaction snapshots can then also be received on 627eda14cbcSMatt Macythe target system, and this will produce a complete snapshot that can be used 62816038816SMartin Matuskanormally. 62916038816SMartin MatuskaIncrementals from one snapshot on the parent filesystem and another 630eda14cbcSMatt Macycan also be done by sending from the redaction bookmark, rather than the 631eda14cbcSMatt Macysnapshots themselves. 632eda14cbcSMatt Macy.Pp 63316038816SMartin MatuskaIn order to make the purpose of the feature more clear, an example is provided. 63416038816SMartin MatuskaConsider a zfs filesystem containing four files. 63516038816SMartin MatuskaThese files represent information for an online shopping service. 636*bb2d13b6SMartin MatuskaOne file contains a list of usernames and passwords, another contains purchase 637*bb2d13b6SMartin Matuskahistories, 63816038816SMartin Matuskaa third contains click tracking data, and a fourth contains user preferences. 63916038816SMartin MatuskaThe owner of this data wants to make it available for their development teams to 64016038816SMartin Matuskatest against, and their market research teams to do analysis on. 64116038816SMartin MatuskaThe development teams need information about user preferences and the click 642eda14cbcSMatt Macytracking data, while the market research teams need information about purchase 64316038816SMartin Matuskahistories and user preferences. 64416038816SMartin MatuskaNeither needs access to the usernames and passwords. 64516038816SMartin MatuskaHowever, because all of this data is stored in one ZFS filesystem, 64616038816SMartin Matuskait must all be sent and received together. 64716038816SMartin MatuskaIn addition, the owner of the data 648eda14cbcSMatt Macywants to take advantage of features like compression, checksumming, and 649*bb2d13b6SMartin Matuskasnapshots, so they do want to continue to use ZFS to store and transmit their 650*bb2d13b6SMartin Matuskadata. 65116038816SMartin MatuskaRedaction can help them do so. 65216038816SMartin MatuskaFirst, they would make two clones of a snapshot of the data on the source. 65316038816SMartin MatuskaIn one clone, they create the setup they want their market research team to see; 65416038816SMartin Matuskathey delete the usernames and passwords file, 65516038816SMartin Matuskaand overwrite the click tracking data with dummy information. 65616038816SMartin MatuskaIn another, they create the setup they want the development teams 657eda14cbcSMatt Macyto see, by replacing the passwords with fake information and replacing the 65816038816SMartin Matuskapurchase histories with randomly generated ones. 65916038816SMartin MatuskaThey would then create a redaction bookmark on the parent snapshot, 66016038816SMartin Matuskausing snapshots on the two clones as redaction snapshots. 66116038816SMartin MatuskaThe parent can then be sent, redacted, to the target 66216038816SMartin Matuskaserver where the research and development teams have access. 663*bb2d13b6SMartin MatuskaFinally, incremental sends from the parent snapshot to each of the clones can be 664*bb2d13b6SMartin Matuskasent 665eda14cbcSMatt Macyto and received on the target server; these snapshots are identical to the 666eda14cbcSMatt Macyones on the source, and are ready to be used, while the parent snapshot on the 667eda14cbcSMatt Macytarget contains none of the username and password data present on the source, 668eda14cbcSMatt Macybecause it was removed by the redacted send operation. 66916038816SMartin Matuska. 670da5137abSMartin Matuska.Sh EXAMPLES 671da5137abSMartin Matuska.\" These are, respectively, examples 12, 13 from zfs.8 672da5137abSMartin Matuska.\" Make sure to update them bidirectionally 673da5137abSMartin Matuska.Ss Example 1 : No Remotely Replicating ZFS Data 674da5137abSMartin MatuskaThe following commands send a full stream and then an incremental stream to a 675da5137abSMartin Matuskaremote machine, restoring them into 676da5137abSMartin Matuska.Em poolB/received/fs@a 677da5137abSMartin Matuskaand 678da5137abSMartin Matuska.Em poolB/received/fs@b , 679da5137abSMartin Matuskarespectively. 680da5137abSMartin Matuska.Em poolB 681da5137abSMartin Matuskamust contain the file system 682da5137abSMartin Matuska.Em poolB/received , 683da5137abSMartin Matuskaand must not initially contain 684da5137abSMartin Matuska.Em poolB/received/fs . 685da5137abSMartin Matuska.Bd -literal -compact -offset Ds 686da5137abSMartin Matuska.No # Nm zfs Cm send Ar pool/fs@a | 687da5137abSMartin Matuska.No " " Nm ssh Ar host Nm zfs Cm receive Ar poolB/received/fs Ns @ Ns Ar a 688da5137abSMartin Matuska.No # Nm zfs Cm send Fl i Ar a pool/fs@b | 689da5137abSMartin Matuska.No " " Nm ssh Ar host Nm zfs Cm receive Ar poolB/received/fs 690da5137abSMartin Matuska.Ed 691da5137abSMartin Matuska. 692da5137abSMartin Matuska.Ss Example 2 : No Using the Nm zfs Cm receive Fl d No Option 693da5137abSMartin MatuskaThe following command sends a full stream of 694da5137abSMartin Matuska.Ar poolA/fsA/fsB@snap 695da5137abSMartin Matuskato a remote machine, receiving it into 696da5137abSMartin Matuska.Ar poolB/received/fsA/fsB@snap . 697da5137abSMartin MatuskaThe 698da5137abSMartin Matuska.Ar fsA/fsB@snap 699da5137abSMartin Matuskaportion of the received snapshot's name is determined from the name of the sent 700da5137abSMartin Matuskasnapshot. 701da5137abSMartin Matuska.Ar poolB 702da5137abSMartin Matuskamust contain the file system 703da5137abSMartin Matuska.Ar poolB/received . 704da5137abSMartin MatuskaIf 705da5137abSMartin Matuska.Ar poolB/received/fsA 706da5137abSMartin Matuskadoes not exist, it is created as an empty file system. 707da5137abSMartin Matuska.Bd -literal -compact -offset Ds 708da5137abSMartin Matuska.No # Nm zfs Cm send Ar poolA/fsA/fsB@snap | 709da5137abSMartin Matuska.No " " Nm ssh Ar host Nm zfs Cm receive Fl d Ar poolB/received 710da5137abSMartin Matuska.Ed 711da5137abSMartin Matuska. 712eda14cbcSMatt Macy.Sh SEE ALSO 713eda14cbcSMatt Macy.Xr zfs-bookmark 8 , 714eda14cbcSMatt Macy.Xr zfs-receive 8 , 715eda14cbcSMatt Macy.Xr zfs-redact 8 , 716eda14cbcSMatt Macy.Xr zfs-snapshot 8 717