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