SYNCOID(8)

πŸ“¦
version 2.3.0 Β· 3 versions
, in ubuntu resolute, ubuntu stonking

✨ NAME ✨

syncoid β€” a tool that facilitates the asynchronous incremental replication of ZFS filesystems. bestie it's literally the glow-up your datasets deserve πŸ’–


πŸ¦‹ DESCRIPTION πŸ¦‹

okay so, syncoid is a whole vibe: it takes your ZFS datasets and replicates them, incrementally, asynchronously, from one place to another. local, remote, whatever β€” it ate. no cap.

🌸 Usage 🌸

here's how you call her:

syncoid [options]... SOURCE TARGET
syncoid [options]... SOURCE [[USER]@]HOST:TARGET
syncoid [options]... [[USER]@]HOST:SOURCE TARGET
syncoid [options]... [[USER]@]HOST:SOURCE [[USER]@]HOST:TARGET
  • SOURCE β€” the source ZFS dataset. can be either local or remote 🏠🌍
  • TARGET β€” the target ZFS dataset. can be either local or remote 🏠🌍

πŸ‘‘ OPTIONS πŸ‘‘

the main character section. every single flag, no gatekeeping πŸ’…

  • --compress=FORMAT β€” compresses data during transfer. currently accepted options are gzip, pigz-fast, pigz-slow, zstd-fast, zstdmt-fast, zstd-slow, zstdmt-slow, lz4, xz, lzo (that one's the default, btw) & none
  • --identifier=EXTRA β€” an extra identifier that gets included in the snapshot name. use it when you're replicating to multiple targets, so they don't all get the same name fr fr
  • --recursive|r β€” also transfers child datasets 🧚 (yes, the whole family)
  • --skip-parent β€” skips syncing of the parent dataset. does absolutely nothing without the --recursive option. literally nothing. it's giving unemployed 😭
  • --source-bwlimit=<limit k|m|g|t> β€” bandwidth limit in bytes/kbytes/etc per second on the source transfer
  • --target-bwlimit=<limit k|m|g|t> β€” bandwidth limit in bytes/kbytes/etc per second on the target transfer
  • --mbuffer-size=VALUE β€” specify the mbuffer size (default: 16M). please refer to the mbuffer(1) manual page for the deets 🫢
  • --pv-options=OPTIONS β€” configure how pv displays the progress bar, default is -p -t -e -r -b
  • --no-stream β€” replicates using the newest snapshot instead of intermediates
  • --no-sync-snap β€” does not create a new snapshot, only transfers existing ones
  • --keep-sync-snap β€” don't destroy created sync snapshots
  • --create-bookmark β€” creates a zfs bookmark for the newest snapshot on the source after replication succeeds (only works with --no-sync-snap)
  • --use-hold β€” adds a hold to the newest snapshot on the source and target after replication succeeds, and removes the hold after the next successful replication. the hold name includes the identifier if set. this allows for separate holds in case of multiple targets
  • --preserve-recordsize β€” preserves the recordsize on initial sends to the target
  • --preserve-properties β€” preserves locally set dataset properties similar to the zfs send -p flag, but this one will also work for encrypted datasets in non raw sends ✨
  • --no-rollback β€” does not rollback snapshots on target (it probably requires a readonly target)
  • --delete-target-snapshots β€” with this argument, snapshots which are missing on the source will be destroyed on the target. use this if you only want to handle snapshots on the source
  • --exclude=REGEX β€” DEPRECATED. equivalent to --exclude-datasets, but will be removed in a future release. ignored if --exclude-datasets is also provided
  • --exclude-datasets=REGEX β€” exclude specific datasets which match the given regular expression. can be specified multiple times
  • --exclude-snaps=REGEX β€” exclude specific snapshots that match the given regular expression. can be specified multiple times. if a snapshot matches both the exclude-snaps and include-snaps patterns, then it will be excluded
  • --include-snaps=REGEX β€” only include snapshots that match the given regular expression. can be specified multiple times. if a snapshot matches both the exclude-snaps and include-snaps patterns, then it will be excluded
  • --sendoptions=OPTIONS β€” use advanced options for zfs send (the arguments are filtered as needed), e.g. syncoid --sendoptions="Lc e" sets zfs send -L -c -e ...
  • --recvoptions=OPTIONS β€” use advanced options for zfs receive (the arguments are filtered as needed), e.g. syncoid --recvoptions="ux recordsize o compression=lz4" sets zfs receive -u -x recordsize -o compression=lz4 ...
  • --sshconfig=FILE β€” specifies an ssh_config(5) file to be used
  • --sshkey=FILE β€” specifies a ssh key to use to connect πŸ”‘
  • --sshport=PORT β€” connects to remote on a particular port
  • --sshcipher|c=CIPHER β€” passes CIPHER to ssh to use a particular cipher set
  • --sshoption|o=OPTION β€” passes OPTION to ssh for remote usage. can be specified multiple times
  • --insecure-direct-connection=IP:PORT[,IP:PORT] β€” WARNING: DATA IS NOT ENCRYPTED. first address pair is for connecting to the target and the second for listening at the target. pls be careful bestie, this one is not playing around πŸ’€
  • --help β€” prints this helptext
  • --version β€” prints the version number
  • --debug β€” prints out a lot of additional information during a syncoid run. it's giving yapper mode πŸ—£οΈ
  • --monitor-version β€” currently does nothing πŸ™ˆ (iconic behaviour honestly)
  • --quiet β€” suppresses non-error output
  • --dumpsnaps β€” dumps a list of snapshots during the run
  • --no-command-checks β€” do not check command existence before attempting transfer. not recommended.
  • --no-resume β€” don't use the ZFS resume feature if available
  • --no-clone-handling β€” don't try to recreate clones on target
  • --no-privilege-elevation β€” bypass the root check, for use with ZFS permission delegation
  • --force-delete β€” remove target datasets recursively, if there are no matching snapshots/bookmarks (also overwrites conflicting named snapshots). yes, that's as real as it sounds ⚠️

that's the whole page, you're literally certified now πŸ‘‘ this one's syncoid 2.3.0, from August 2025, filed under the System Administration Utilities corner of the syncoid(8) manual β€” slay, go replicate something, mwah πŸ’–βœ¨

πŸ“¦ where this page comes from