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