--- syncoid.orig 2025-06-11 08:10:52.000000000 -0400 +++ syncoid 2025-12-04 04:25:27.941325000 -0500 @@ -2197,7 +2197,7 @@ $date{'mday'} = sprintf ("%02u", $mday); $date{'mon'} = sprintf ("%02u", ($mon + 1)); $date{'tzoffset'} = sprintf ("GMT%s%02d:%02u", $sign, $hours, $minutes); - $date{'stamp'} = "$date{'year'}-$date{'mon'}-$date{'mday'}:$date{'hour'}:$date{'min'}:$date{'sec'}-$date{'tzoffset'}"; + $date{'stamp'} = "$date{'year'}-$date{'mon'}-$date{'mday'}_$date{'hour'}$date{'min'}$date{'sec'}-$date{'tzoffset'}"; return %date; } @@ -2400,45 +2400,129 @@ Options: - --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 (default) & none - --identifier=EXTRA Extra identifier which is included in the snapshot name. Can be used for replicating to multiple targets. - --recursive|r Also transfers child datasets - --skip-parent Skips syncing of the parent dataset. Does nothing without '--recursive' option. - --source-bwlimit= Bandwidth limit in bytes/kbytes/etc per second on the source transfer - --target-bwlimit= Bandwidth limit in bytes/kbytes/etc per second on the target transfer - --mbuffer-size=VALUE Specify the mbuffer size (default: 16M), please refer to mbuffer(1) manual page. - --pv-options=OPTIONS Configure how pv displays the progress bar, default '-p -t -e -r -b' - --no-stream Replicates using newest snapshot instead of intermediates - --no-sync-snap Does not create new snapshot, only transfers existing - --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 ... + --compress=FORMAT + Compresses data during transfer. Currently accepted options are: + lzo (default) pigz-slow zstdmt-fast + gzip xz zstdmt-slow + lz4 zstd-fast none + pigz-fast zstd-slow + + --identifier=EXTRA + Extra identifier which is included in the snapshot name. + Can be used for replicating to multiple targets. + + --recursive|r + Also transfers child datasets + + --skip-parent + Skips syncing of the parent dataset. + Does nothing without '--recursive' option. + + --source-bwlimit= + Bandwidth limit in bytes/kbytes/etc per second on the source transfer + + --target-bwlimit= + Bandwidth limit in bytes/kbytes/etc per second on the target transfer + + --mbuffer-size=VALUE + Specify the mbuffer size (default: 16M), please refer to mbuffer(1) + manual page. + + --pv-options=OPTIONS + Configure how pv displays the progress bar, default '-p -t -e -r -b' + + --no-stream + Replicates using newest snapshot instead of intermediates + + --no-sync-snap + Does not create new snapshot, only transfers existing + + --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 + + --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 --help Prints this helptext --version Prints the version number - --debug Prints out a lot of additional information during a syncoid run + --debug Prints much more information during a syncoid run --monitor-version Currently does nothing --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) + --no-command-checks + Do not check command existence before attempting transfer. + Not recommended + + --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)