xref: /freebsd/sys/contrib/openzfs/man/man8/zfs-redact.8 (revision 7fdf597e96a02165cfe22ff357b857d5fa15ed8a)
1.\"
2.\" CDDL HEADER START
3.\"
4.\" The contents of this file are subject to the terms of the
5.\" Common Development and Distribution License (the "License").
6.\" You may not use this file except in compliance with the License.
7.\"
8.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9.\" or https://opensource.org/licenses/CDDL-1.0.
10.\" See the License for the specific language governing permissions
11.\" and limitations under the License.
12.\"
13.\" When distributing Covered Code, include this CDDL HEADER in each
14.\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15.\" If applicable, add the following below this CDDL HEADER, with the
16.\" fields enclosed by brackets "[]" replaced with your own identifying
17.\" information: Portions Copyright [yyyy] [name of copyright owner]
18.\"
19.\" CDDL HEADER END
20.\"
21.\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
22.\" Copyright 2011 Joshua M. Clulow <josh@sysmgr.org>
23.\" Copyright (c) 2011, 2019 by Delphix. All rights reserved.
24.\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
25.\" Copyright (c) 2014, Joyent, Inc. All rights reserved.
26.\" Copyright (c) 2014 by Adam Stevko. All rights reserved.
27.\" Copyright (c) 2014 Integros [integros.com]
28.\" Copyright 2019 Richard Laager. All rights reserved.
29.\" Copyright 2018 Nexenta Systems, Inc.
30.\" Copyright 2019 Joyent, Inc.
31.\" Copyright (c) 2024, Klara, Inc.
32.\"
33.Dd October 2, 2024
34.Dt ZFS-SEND 8
35.Os
36.
37.Sh NAME
38.Nm zfs-send
39.Nd generate backup stream of ZFS dataset
40.Sh SYNOPSIS
41.Nm zfs
42.Cm send
43.Op Fl DLPVbcehnpsvw
44.Op Fl R Op Fl X Ar dataset Ns Oo , Ns Ar dataset Oc Ns …
45.Op Oo Fl I Ns | Ns Fl i Oc Ar snapshot
46.Ar snapshot
47.Nm zfs
48.Cm send
49.Op Fl DLPVcensvw
50.Op Fl i Ar snapshot Ns | Ns Ar bookmark
51.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
52.Nm zfs
53.Cm send
54.Fl -redact Ar redaction_bookmark
55.Op Fl DLPVcenpv
56.Op Fl i Ar snapshot Ns | Ns Ar bookmark
57.Ar snapshot
58.Nm zfs
59.Cm send
60.Op Fl PVenv
61.Fl t
62.Ar receive_resume_token
63.Nm zfs
64.Cm send
65.Op Fl PVnv
66.Fl S Ar filesystem
67.Nm zfs
68.Cm redact
69.Ar snapshot redaction_bookmark
70.Ar redaction_snapshot Ns …
71.
72.Sh DESCRIPTION
73.Bl -tag -width ""
74.It Xo
75.Nm zfs
76.Cm send
77.Op Fl DLPVbcehnpsvw
78.Op Fl R Op Fl X Ar dataset Ns Oo , Ns Ar dataset Oc Ns …
79.Op Oo Fl I Ns | Ns Fl i Oc Ar snapshot
80.Ar snapshot
81.Xc
82Creates a stream representation of the second
83.Ar snapshot ,
84which is written to standard output.
85The output can be redirected to a file or to a different system
86.Po for example, using
87.Xr ssh 1
88.Pc .
89By default, a full stream is generated.
90.Bl -tag -width "-D"
91.It Fl D , -dedup
92Deduplicated send is no longer supported.
93This flag is accepted for backwards compatibility, but a regular,
94non-deduplicated stream will be generated.
95.It Fl I Ar snapshot
96Generate a stream package that sends all intermediary snapshots from the first
97snapshot to the second snapshot.
98For example,
99.Fl I Em @a Em fs@d
100is similar to
101.Fl i Em @a Em fs@b Ns \&; Fl i Em @b Em fs@c Ns \&; Fl i Em @c Em fs@d .
102The incremental source may be specified as with the
103.Fl i
104option.
105.It Fl L , -large-block
106Generate a stream which may contain blocks larger than 128 KiB.
107This flag has no effect if the
108.Sy large_blocks
109pool feature is disabled, or if the
110.Sy recordsize
111property of this filesystem has never been set above 128 KiB.
112The receiving system must have the
113.Sy large_blocks
114pool feature enabled as well.
115This flag is required if the
116.Sy large_microzap
117pool feature is active.
118See
119.Xr zpool-features 7
120for details on ZFS feature flags and the
121.Sy large_blocks
122feature.
123.It Fl P , -parsable
124Print machine-parsable verbose information about the stream package generated.
125.It Fl R , -replicate
126Generate a replication stream package, which will replicate the specified
127file system, and all descendent file systems, up to the named snapshot.
128When received, all properties, snapshots, descendent file systems, and clones
129are preserved.
130.Pp
131If the
132.Fl i
133or
134.Fl I
135flags are used in conjunction with the
136.Fl R
137flag, an incremental replication stream is generated.
138The current values of properties, and current snapshot and file system names are
139set when the stream is received.
140If the
141.Fl F
142flag is specified when this stream is received, snapshots and file systems that
143do not exist on the sending side are destroyed.
144If the
145.Fl R
146flag is used to send encrypted datasets, then
147.Fl w
148must also be specified.
149.It Fl V , -proctitle
150Set the process title to a per-second report of how much data has been sent.
151.It Fl X , -exclude Ar dataset Ns Oo , Ns Ar dataset Oc Ns …
152With
153.Fl R ,
154.Fl X
155specifies a set of datasets (and, hence, their descendants),
156to be excluded from the send stream.
157The root dataset may not be excluded.
158.Fl X Ar a Fl X Ar b
159is equivalent to
160.Fl X Ar a , Ns Ar b .
161.It Fl e , -embed
162Generate a more compact stream by using
163.Sy WRITE_EMBEDDED
164records for blocks which are stored more compactly on disk by the
165.Sy embedded_data
166pool feature.
167This flag has no effect if the
168.Sy embedded_data
169feature is disabled.
170The receiving system must have the
171.Sy embedded_data
172feature enabled.
173If the
174.Sy lz4_compress
175feature is active on the sending system, then the receiving system must have
176that feature enabled as well.
177Datasets that are sent with this flag may not be
178received as an encrypted dataset, since encrypted datasets cannot use the
179.Sy embedded_data
180feature.
181See
182.Xr zpool-features 7
183for details on ZFS feature flags and the
184.Sy embedded_data
185feature.
186.It Fl b , -backup
187Sends only received property values whether or not they are overridden by local
188settings, but only if the dataset has ever been received.
189Use this option when you want
190.Nm zfs Cm receive
191to restore received properties backed up on the sent dataset and to avoid
192sending local settings that may have nothing to do with the source dataset,
193but only with how the data is backed up.
194.It Fl c , -compressed
195Generate a more compact stream by using compressed WRITE records for blocks
196which are compressed on disk and in memory
197.Po see the
198.Sy compression
199property for details
200.Pc .
201If the
202.Sy lz4_compress
203feature is active on the sending system, then the receiving system must have
204that feature enabled as well.
205If the
206.Sy large_blocks
207feature is enabled on the sending system but the
208.Fl L
209option is not supplied in conjunction with
210.Fl c ,
211then the data will be decompressed before sending so it can be split into
212smaller block sizes.
213Streams sent with
214.Fl c
215will not have their data recompressed on the receiver side using
216.Fl o Sy compress Ns = Ar value .
217The data will stay compressed as it was from the sender.
218The new compression property will be set for future data.
219Note that uncompressed data from the sender will still attempt to
220compress on the receiver, unless you specify
221.Fl o Sy compress Ns = Em off .
222.It Fl w , -raw
223For encrypted datasets, send data exactly as it exists on disk.
224This allows backups to be taken even if encryption keys are not currently
225loaded.
226The backup may then be received on an untrusted machine since that machine will
227not have the encryption keys to read the protected data or alter it without
228being detected.
229Upon being received, the dataset will have the same encryption
230keys as it did on the send side, although the
231.Sy keylocation
232property will be defaulted to
233.Sy prompt
234if not otherwise provided.
235For unencrypted datasets, this flag will be equivalent to
236.Fl Lec .
237Note that if you do not use this flag for sending encrypted datasets, data will
238be sent unencrypted and may be re-encrypted with a different encryption key on
239the receiving system, which will disable the ability to do a raw send to that
240system for incrementals.
241.It Fl h , -holds
242Generate a stream package that includes any snapshot holds (created with the
243.Nm zfs Cm hold
244command), and indicating to
245.Nm zfs Cm receive
246that the holds be applied to the dataset on the receiving system.
247.It Fl i Ar snapshot
248Generate an incremental stream from the first
249.Ar snapshot
250.Pq the incremental source
251to the second
252.Ar snapshot
253.Pq the incremental target .
254The incremental source can be specified as the last component of the snapshot
255name
256.Po the
257.Sy @
258character and following
259.Pc
260and it is assumed to be from the same file system as the incremental target.
261.Pp
262If the destination is a clone, the source may be the origin snapshot, which must
263be fully specified
264.Po for example,
265.Em pool/fs@origin ,
266not just
267.Em @origin
268.Pc .
269.It Fl n , -dryrun
270Do a dry-run
271.Pq Qq No-op
272send.
273Do not generate any actual send data.
274This is useful in conjunction with the
275.Fl v
276or
277.Fl P
278flags to determine what data will be sent.
279In this case, the verbose output will be written to standard output
280.Po contrast with a non-dry-run, where the stream is written to standard output
281and the verbose output goes to standard error
282.Pc .
283.It Fl p , -props
284Include the dataset's properties in the stream.
285This flag is implicit when
286.Fl R
287is specified.
288The receiving system must also support this feature.
289Sends of encrypted datasets must use
290.Fl w
291when using this flag.
292.It Fl s , -skip-missing
293Allows sending a replication stream even when there are snapshots missing in the
294hierarchy.
295When a snapshot is missing, instead of throwing an error and aborting the send,
296a warning is printed to the standard error stream and the dataset to which it
297belongs
298and its descendents are skipped.
299This flag can only be used in conjunction with
300.Fl R .
301.It Fl v , -verbose
302Print verbose information about the stream package generated.
303This information includes a per-second report of how much data has been sent.
304The same report can be requested by sending
305.Dv SIGINFO
306or
307.Dv SIGUSR1 ,
308regardless of
309.Fl v .
310.Pp
311The format of the stream is committed.
312You will be able to receive your streams on future versions of ZFS.
313.El
314.It Xo
315.Nm zfs
316.Cm send
317.Op Fl DLPVcenvw
318.Op Fl i Ar snapshot Ns | Ns Ar bookmark
319.Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
320.Xc
321Generate a send stream, which may be of a filesystem, and may be incremental
322from a bookmark.
323If the destination is a filesystem or volume, the pool must be read-only, or the
324filesystem must not be mounted.
325When the stream generated from a filesystem or volume is received, the default
326snapshot name will be
327.Qq --head-- .
328.Bl -tag -width "-D"
329.It Fl D , -dedup
330Deduplicated send is no longer supported.
331This flag is accepted for backwards compatibility, but a regular,
332non-deduplicated stream will be generated.
333.It Fl L , -large-block
334Generate a stream which may contain blocks larger than 128 KiB.
335This flag has no effect if the
336.Sy large_blocks
337pool feature is disabled, or if the
338.Sy recordsize
339property of this filesystem has never been set above 128 KiB.
340The receiving system must have the
341.Sy large_blocks
342pool feature enabled as well.
343See
344.Xr zpool-features 7
345for details on ZFS feature flags and the
346.Sy large_blocks
347feature.
348.It Fl P , -parsable
349Print machine-parsable verbose information about the stream package generated.
350.It Fl c , -compressed
351Generate a more compact stream by using compressed WRITE records for blocks
352which are compressed on disk and in memory
353.Po see the
354.Sy compression
355property for details
356.Pc .
357If the
358.Sy lz4_compress
359feature is active on the sending system, then the receiving system must have
360that feature enabled as well.
361If the
362.Sy large_blocks
363feature is enabled on the sending system but the
364.Fl L
365option is not supplied in conjunction with
366.Fl c ,
367then the data will be decompressed before sending so it can be split into
368smaller block sizes.
369.It Fl w , -raw
370For encrypted datasets, send data exactly as it exists on disk.
371This allows backups to be taken even if encryption keys are not currently
372loaded.
373The backup may then be received on an untrusted machine since that machine will
374not have the encryption keys to read the protected data or alter it without
375being detected.
376Upon being received, the dataset will have the same encryption
377keys as it did on the send side, although the
378.Sy keylocation
379property will be defaulted to
380.Sy prompt
381if not otherwise provided.
382For unencrypted datasets, this flag will be equivalent to
383.Fl Lec .
384Note that if you do not use this flag for sending encrypted datasets, data will
385be sent unencrypted and may be re-encrypted with a different encryption key on
386the receiving system, which will disable the ability to do a raw send to that
387system for incrementals.
388.It Fl e , -embed
389Generate a more compact stream by using
390.Sy WRITE_EMBEDDED
391records for blocks which are stored more compactly on disk by the
392.Sy embedded_data
393pool feature.
394This flag has no effect if the
395.Sy embedded_data
396feature is disabled.
397The receiving system must have the
398.Sy embedded_data
399feature enabled.
400If the
401.Sy lz4_compress
402feature is active on the sending system, then the receiving system must have
403that feature enabled as well.
404Datasets that are sent with this flag may not be received as an encrypted
405dataset,
406since encrypted datasets cannot use the
407.Sy embedded_data
408feature.
409See
410.Xr zpool-features 7
411for details on ZFS feature flags and the
412.Sy embedded_data
413feature.
414.It Fl i Ar snapshot Ns | Ns Ar bookmark
415Generate an incremental send stream.
416The incremental source must be an earlier snapshot in the destination's history.
417It will commonly be an earlier snapshot in the destination's file system, in
418which case it can be specified as the last component of the name
419.Po the
420.Sy #
421or
422.Sy @
423character and following
424.Pc .
425.Pp
426If the incremental target is a clone, the incremental source can be the origin
427snapshot, or an earlier snapshot in the origin's filesystem, or the origin's
428origin, etc.
429.It Fl n , -dryrun
430Do a dry-run
431.Pq Qq No-op
432send.
433Do not generate any actual send data.
434This is useful in conjunction with the
435.Fl v
436or
437.Fl P
438flags to determine what data will be sent.
439In this case, the verbose output will be written to standard output
440.Po contrast with a non-dry-run, where the stream is written to standard output
441and the verbose output goes to standard error
442.Pc .
443.It Fl v , -verbose
444Print verbose information about the stream package generated.
445This information includes a per-second report of how much data has been sent.
446The same report can be requested by sending
447.Dv SIGINFO
448or
449.Dv SIGUSR1 ,
450regardless of
451.Fl v .
452.El
453.It Xo
454.Nm zfs
455.Cm send
456.Fl -redact Ar redaction_bookmark
457.Op Fl DLPVcenpv
458.Op Fl i Ar snapshot Ns | Ns Ar bookmark
459.Ar snapshot
460.Xc
461Generate a redacted send stream.
462This send stream contains all blocks from the snapshot being sent that aren't
463included in the redaction list contained in the bookmark specified by the
464.Fl -redact
465(or
466.Fl d )
467flag.
468The resulting send stream is said to be redacted with respect to the snapshots
469the bookmark specified by the
470.Fl -redact No flag was created with .
471The bookmark must have been created by running
472.Nm zfs Cm redact
473on the snapshot being sent.
474.Pp
475This feature can be used to allow clones of a filesystem to be made available on
476a remote system, in the case where their parent need not (or needs to not) be
477usable.
478For example, if a filesystem contains sensitive data, and it has clones where
479that sensitive data has been secured or replaced with dummy data, redacted sends
480can be used to replicate the secured data without replicating the original
481sensitive data, while still sharing all possible blocks.
482A snapshot that has been redacted with respect to a set of snapshots will
483contain all blocks referenced by at least one snapshot in the set, but will
484contain none of the blocks referenced by none of the snapshots in the set.
485In other words, if all snapshots in the set have modified a given block in the
486parent, that block will not be sent; but if one or more snapshots have not
487modified a block in the parent, they will still reference the parent's block, so
488that block will be sent.
489Note that only user data will be redacted.
490.Pp
491When the redacted send stream is received, we will generate a redacted
492snapshot.
493Due to the nature of redaction, a redacted dataset can only be used in the
494following ways:
495.Bl -enum -width "a."
496.It
497To receive, as a clone, an incremental send from the original snapshot to one
498of the snapshots it was redacted with respect to.
499In this case, the stream will produce a valid dataset when received because all
500blocks that were redacted in the parent are guaranteed to be present in the
501child's send stream.
502This use case will produce a normal snapshot, which can be used just like other
503snapshots.
504.
505.It
506To receive an incremental send from the original snapshot to something
507redacted with respect to a subset of the set of snapshots the initial snapshot
508was redacted with respect to.
509In this case, each block that was redacted in the original is still redacted
510(redacting with respect to additional snapshots causes less data to be redacted
511(because the snapshots define what is permitted, and everything else is
512redacted)).
513This use case will produce a new redacted snapshot.
514.It
515To receive an incremental send from a redaction bookmark of the original
516snapshot that was created when redacting with respect to a subset of the set of
517snapshots the initial snapshot was created with respect to
518anything else.
519A send stream from such a redaction bookmark will contain all of the blocks
520necessary to fill in any redacted data, should it be needed, because the sending
521system is aware of what blocks were originally redacted.
522This will either produce a normal snapshot or a redacted one, depending on
523whether the new send stream is redacted.
524.It
525To receive an incremental send from a redacted version of the initial
526snapshot that is redacted with respect to a subject of the set of snapshots the
527initial snapshot was created with respect to.
528A send stream from a compatible redacted dataset will contain all of the blocks
529necessary to fill in any redacted data.
530This will either produce a normal snapshot or a redacted one, depending on
531whether the new send stream is redacted.
532.It
533To receive a full send as a clone of the redacted snapshot.
534Since the stream is a full send, it definitionally contains all the data needed
535to create a new dataset.
536This use case will either produce a normal snapshot or a redacted one, depending
537on whether the full send stream was redacted.
538.El
539.Pp
540These restrictions are detected and enforced by
541.Nm zfs Cm receive ;
542a redacted send stream will contain the list of snapshots that the stream is
543redacted with respect to.
544These are stored with the redacted snapshot, and are used to detect and
545correctly handle the cases above.
546Note that for technical reasons,
547raw sends and redacted sends cannot be combined at this time.
548.It Xo
549.Nm zfs
550.Cm send
551.Op Fl PVenv
552.Fl t
553.Ar receive_resume_token
554.Xc
555Creates a send stream which resumes an interrupted receive.
556The
557.Ar receive_resume_token
558is the value of this property on the filesystem or volume that was being
559received into.
560See the documentation for
561.Nm zfs Cm receive Fl s
562for more details.
563.It Xo
564.Nm zfs
565.Cm send
566.Op Fl PVnv
567.Op Fl i Ar snapshot Ns | Ns Ar bookmark
568.Fl S
569.Ar filesystem
570.Xc
571Generate a send stream from a dataset that has been partially received.
572.Bl -tag -width "-L"
573.It Fl S , -saved
574This flag requires that the specified filesystem previously received a resumable
575send that did not finish and was interrupted.
576In such scenarios this flag
577enables the user to send this partially received state.
578Using this flag will always use the last fully received snapshot
579as the incremental source if it exists.
580.El
581.It Xo
582.Nm zfs
583.Cm redact
584.Ar snapshot redaction_bookmark
585.Ar redaction_snapshot Ns …
586.Xc
587Generate a new redaction bookmark.
588In addition to the typical bookmark information, a redaction bookmark contains
589the list of redacted blocks and the list of redaction snapshots specified.
590The redacted blocks are blocks in the snapshot which are not referenced by any
591of the redaction snapshots.
592These blocks are found by iterating over the metadata in each redaction snapshot
593to determine what has been changed since the target snapshot.
594Redaction is designed to support redacted zfs sends; see the entry for
595.Nm zfs Cm send
596for more information on the purpose of this operation.
597If a redact operation fails partway through (due to an error or a system
598failure), the redaction can be resumed by rerunning the same command.
599.El
600.Ss Redaction
601ZFS has support for a limited version of data subsetting, in the form of
602redaction.
603Using the
604.Nm zfs Cm redact
605command, a
606.Sy redaction bookmark
607can be created that stores a list of blocks containing sensitive information.
608When provided to
609.Nm zfs Cm send ,
610this causes a
611.Sy redacted send
612to occur.
613Redacted sends omit the blocks containing sensitive information,
614replacing them with REDACT records.
615When these send streams are received, a
616.Sy redacted dataset
617is created.
618A redacted dataset cannot be mounted by default, since it is incomplete.
619It can be used to receive other send streams.
620In this way datasets can be used for data backup and replication,
621with all the benefits that zfs send and receive have to offer,
622while protecting sensitive information from being
623stored on less-trusted machines or services.
624.Pp
625For the purposes of redaction, there are two steps to the process.
626A redact step, and a send/receive step.
627First, a redaction bookmark is created.
628This is done by providing the
629.Nm zfs Cm redact
630command with a parent snapshot, a bookmark to be created, and a number of
631redaction snapshots.
632These redaction snapshots must be descendants of the parent snapshot,
633and they should modify data that is considered sensitive in some way.
634Any blocks of data modified by all of the redaction snapshots will
635be listed in the redaction bookmark, because it represents the truly sensitive
636information.
637When it comes to the send step, the send process will not send
638the blocks listed in the redaction bookmark, instead replacing them with
639REDACT records.
640When received on the target system, this will create a
641redacted dataset, missing the data that corresponds to the blocks in the
642redaction bookmark on the sending system.
643The incremental send streams from
644the original parent to the redaction snapshots can then also be received on
645the target system, and this will produce a complete snapshot that can be used
646normally.
647Incrementals from one snapshot on the parent filesystem and another
648can also be done by sending from the redaction bookmark, rather than the
649snapshots themselves.
650.Pp
651In order to make the purpose of the feature more clear, an example is provided.
652Consider a zfs filesystem containing four files.
653These files represent information for an online shopping service.
654One file contains a list of usernames and passwords, another contains purchase
655histories,
656a third contains click tracking data, and a fourth contains user preferences.
657The owner of this data wants to make it available for their development teams to
658test against, and their market research teams to do analysis on.
659The development teams need information about user preferences and the click
660tracking data, while the market research teams need information about purchase
661histories and user preferences.
662Neither needs access to the usernames and passwords.
663However, because all of this data is stored in one ZFS filesystem,
664it must all be sent and received together.
665In addition, the owner of the data
666wants to take advantage of features like compression, checksumming, and
667snapshots, so they do want to continue to use ZFS to store and transmit their
668data.
669Redaction can help them do so.
670First, they would make two clones of a snapshot of the data on the source.
671In one clone, they create the setup they want their market research team to see;
672they delete the usernames and passwords file,
673and overwrite the click tracking data with dummy information.
674In another, they create the setup they want the development teams
675to see, by replacing the passwords with fake information and replacing the
676purchase histories with randomly generated ones.
677They would then create a redaction bookmark on the parent snapshot,
678using snapshots on the two clones as redaction snapshots.
679The parent can then be sent, redacted, to the target
680server where the research and development teams have access.
681Finally, incremental sends from the parent snapshot to each of the clones can be
682sent
683to and received on the target server; these snapshots are identical to the
684ones on the source, and are ready to be used, while the parent snapshot on the
685target contains none of the username and password data present on the source,
686because it was removed by the redacted send operation.
687.
688.Sh SIGNALS
689See
690.Fl v .
691.
692.Sh EXAMPLES
693.\" These are, respectively, examples 12, 13 from zfs.8
694.\" Make sure to update them bidirectionally
695.Ss Example 1 : No Remotely Replicating ZFS Data
696The following commands send a full stream and then an incremental stream to a
697remote machine, restoring them into
698.Em poolB/received/fs@a
699and
700.Em poolB/received/fs@b ,
701respectively.
702.Em poolB
703must contain the file system
704.Em poolB/received ,
705and must not initially contain
706.Em poolB/received/fs .
707.Bd -literal -compact -offset Ds
708.No # Nm zfs Cm send Ar pool/fs@a |
709.No "   " Nm ssh Ar host Nm zfs Cm receive Ar poolB/received/fs Ns @ Ns Ar a
710.No # Nm zfs Cm send Fl i Ar a pool/fs@b |
711.No "   " Nm ssh Ar host Nm zfs Cm receive Ar poolB/received/fs
712.Ed
713.
714.Ss Example 2 : No Using the Nm zfs Cm receive Fl d No Option
715The following command sends a full stream of
716.Ar poolA/fsA/fsB@snap
717to a remote machine, receiving it into
718.Ar poolB/received/fsA/fsB@snap .
719The
720.Ar fsA/fsB@snap
721portion of the received snapshot's name is determined from the name of the sent
722snapshot.
723.Ar poolB
724must contain the file system
725.Ar poolB/received .
726If
727.Ar poolB/received/fsA
728does not exist, it is created as an empty file system.
729.Bd -literal -compact -offset Ds
730.No # Nm zfs Cm send Ar poolA/fsA/fsB@snap |
731.No "   " Nm ssh Ar host Nm zfs Cm receive Fl d Ar poolB/received
732.Ed
733.
734.Sh SEE ALSO
735.Xr zfs-bookmark 8 ,
736.Xr zfs-receive 8 ,
737.Xr zfs-redact 8 ,
738.Xr zfs-snapshot 8
739