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