Files
FastSync/RSYNC_COMPAT.md
T
TapTap d146e1bb7c
CI / lint (pull_request) Failing after 3s
CI / build-and-test (pull_request) Has been skipped
CI / sanitizers (address) (pull_request) Has been skipped
CI / sanitizers (undefined) (pull_request) Has been skipped
CI / fuzz-build (pull_request) Has been skipped
CI / coverage (pull_request) Has been skipped
CI / valgrind (pull_request) Has been skipped
Remove unimplemented CLI options
2026-08-11 20:59:06 +02:00

16 KiB

Rsync Feature Compatibility

This document maps rsync's full feature set to FastSync's current implementation status.

Summary

Status Count Description
Implemented 34 Feature works end-to-end
🔀 Alt Arg 3 Functionality exists but under different flag/semantics
⚠️ Partial 1 Flag parsed/stored but behavior incomplete
Not Implemented 98 Flag not recognized or no behavior
Total 136

1. General Options

Flag Rsync Description FastSync Status Notes
-a, --archive Archive mode is -rlptgoD 🔀 Alt Arg Maps to -c -m -M (compression + multithread + metadata)
-v, --verbose Increase verbosity Implemented Sets log_level=DEBUG
-q, --quiet Suppress non-error messages Not Implemented Removed because it had no effect
--help Show help Implemented Prints usage and exits; -h is not accepted
-V, --version Print version Implemented
--info=FLAGS Fine-grained info verbosity Not Implemented Removed because it had no effect
--debug=FLAGS Fine-grained debug verbosity Not Implemented Removed because it had no effect
--stderr=MODE Change stderr output mode Not Implemented
--no-motd Suppress daemon MOTD Not Implemented
--exclude=PATTERN Exclude files matching pattern Implemented Glob matching in scanner
--include=PATTERN Include files matching pattern Implemented Glob matching in scanner
-C, --cvs-exclude Auto-ignore CVS files Not Implemented Removed because it had no effect

2. Modifying Output

Flag Rsync Description FastSync Status Notes
--stats Give transfer stats Implemented Prints file/byte counts
-h, --human-readable Human-readable numbers Not Implemented Removed because it had no effect
-i, --itemize-changes Per-file change summary Not Implemented Removed because it had no effect
--progress Show progress Implemented Progress callback in sender
-P Same as --partial --progress Not Implemented
--out-format=FORMAT Custom output format Not Implemented Removed because it had no effect
--log-file=FILE Log to file Implemented log_file config field
--log-file-format=FMT Log format Not Implemented
--8-bit-output Leave high-bit chars unescaped Not Implemented
--list-only List files instead of copying Not Implemented Removed because it had no effect

3. File Selection

Flag Rsync Description FastSync Status Notes
--exclude-from=FILE Read exclude patterns from file Implemented Reads patterns from file
--include-from=FILE Read include patterns from file Implemented Reads patterns from file
--filter=RULE Add file-filtering rule Not Implemented Removed because it had no effect
--files-from=FILE Read source file list from file Not Implemented Removed because it had no effect
-0, --from0 Delimit *-from files with NULs Not Implemented
--max-size=SIZE Skip files larger than SIZE Implemented max_size in scanner
--min-size=SIZE Skip files smaller than SIZE Implemented min_size in scanner
-I, --ignore-times Don't skip files matching size+time Not Implemented
--size-only Skip based on size only Not Implemented
-@, --modify-window=NUM Mod-time comparison accuracy Not Implemented
--existing Skip creating new files on receiver Not Implemented
--ignore-existing Skip updating existing files Not Implemented
--remove-source-files Sender removes synced files Not Implemented

4. Directory Options

Flag Rsync Description FastSync Status Notes
-r, --recursive Recurse into directories Implemented Default behavior
-R, --relative Use relative path names Not Implemented Removed because it had no effect
--no-implied-dirs Don't send implied dirs with -R Not Implemented
-d, --dirs Transfer dirs without recursing Not Implemented
--mkpath Create missing path components Not Implemented

5. Transfer Modifications

Flag Rsync Description FastSync Status Notes
-u, --update Skip files newer on receiver Not Implemented Removed because it had no effect
--inplace Update files in-place Implemented Direct write mode
--append Append data to shorter files Not Implemented Removed because it had no effect
--append-verify Append with old-data checksum Not Implemented Removed because it had no effect
-W, --whole-file Copy whole file (no delta) Not Implemented
--block-size=SIZE Force checksum block-size ⚠️ Partial Parsed as --delta-block; controls delta transfer block size

6. Destination Handling

Flag Rsync Description FastSync Status Notes
-n, --dry-run Trial run with no changes Implemented dry_run config field
-b, --backup Make backups of overwritten files Implemented Backup before overwrite
--backup-dir=DIR Backup directory hierarchy Implemented backup_dir config field
--suffix=SUFFIX Backup suffix (default ~) Implemented suffix config field
--delay-updates Put updated files in place at end Not Implemented

7. Deletion

Flag Rsync Description FastSync Status Notes
--delete Delete extraneous files from dest Implemented use_delete config field
--delete-before Delete before transfer Not Implemented Removed because it had no effect
--delete-during Delete during transfer Not Implemented
--delete-delay Find deletions during, delete after Not Implemented
--delete-after Delete after transfer Not Implemented Removed because it had no effect
--delete-excluded Also delete excluded files Not Implemented Removed because it had no effect
--max-delete=NUM Max files to delete Not Implemented Removed because it had no effect
--ignore-errors Delete even with I/O errors Not Implemented
--force Force deletion of non-empty dirs Not Implemented
--prune-empty-dirs Prune empty dir chains Not Implemented Removed because it had no effect

8. Metadata Preservation

Flag Rsync Description FastSync Status Notes
-M, --preserve Preserve file metadata Implemented Mode, uid, gid, mtime
-p, --perms Preserve permissions 🔀 Alt Arg -p means SSH port; permissions preserved via -M/--preserve
-o, --owner Preserve owner Implemented Part of -M
-g, --group Preserve group Implemented Part of -M
-t, --times Preserve modification times Implemented Part of -M
-E, --executability Preserve executability Not Implemented
--chmod=CHMOD Affect file permissions Not Implemented
-A, --acls Preserve ACLs Not Implemented Removed because it had no effect
-X, --xattrs Preserve extended attributes Not Implemented Removed because it had no effect
-H, --hard-links Preserve hard links Not Implemented Removed because it had no effect
-D Same as --devices --specials Not Implemented Removed because device-file handling is not implemented
--devices Preserve device files Not Implemented Removed because it had no effect
--specials Preserve special files Not Implemented
--copy-devices Copy device contents as file Not Implemented
--write-devices Write to devices as files Not Implemented
-U, --atimes Preserve access times Not Implemented
-N, --crtimes Preserve create times Not Implemented
-O, --omit-dir-times Omit dirs from --times Not Implemented
-J, --omit-link-times Omit symlinks from --times Not Implemented
--super Receiver attempts super-user activities Not Implemented
--fake-super Store/recover privileged attrs via xattrs Not Implemented
Flag Rsync Description FastSync Status Notes
-l, --links Copy symlinks as symlinks ⚠️ Partial Scanner includes symlinks; target path not transmitted
-L, --copy-links Transform symlink to referent Implemented copy_links config field
--copy-unsafe-links Transform unsafe symlinks Implemented copy_unsafe_links config field
--safe-links Ignore symlinks outside tree Implemented safe_links config field
--munge-links Munge symlinks for safety Not Implemented
-k, --copy-dirlinks Transform symlink to dir Not Implemented
-K, --keep-dirlinks Treat symlinked dir as dir Not Implemented

10. Sparse & Device

Flag Rsync Description FastSync Status Notes
-S, --sparse Sparse block handling Implemented preserve_sparse config field
--preallocate Allocate dest files before writing Not Implemented

11. Checksum & Comparison

Flag Rsync Description FastSync Status Notes
--checksum Skip based on checksum Not Implemented Removed because it had no effect; -c means compression
--checksum-choice=STR Choose checksum algorithm Not Implemented xxHash used internally
--compare-dest=DIR Compare dest files relative to DIR Not Implemented Removed because it had no effect
--copy-dest=DIR Include copies of unchanged files Not Implemented Removed because it had no effect
--link-dest=DIR Hardlink to files when unchanged Not Implemented Removed because it had no effect
--fuzzy, --no-fuzzy Find similar file for basis Not Implemented

12. Compression

Flag Rsync Description FastSync Status Notes
-z, --compress Compress file data 🔀 Alt Arg Always uses zstd (rsync supports multiple algorithms)
--compress-choice=STR Choose compression algorithm Not Implemented Removed because it had no effect; FastSync always uses zstd
--compress-level=NUM Set compression level Implemented 1-22, default 5
--compress-threads=NUM Set compression threads Not Implemented
--skip-compress=LIST Skip compress for suffixes Not Implemented Internal skip for hardcoded types; not user-configurable

13. Connectivity

Flag Rsync Description FastSync Status Notes
-e, --rsh=COMMAND Remote shell to use Not Implemented Removed; SSH invokes ssh directly
--rsync-path=PROGRAM rsync binary on remote Not Implemented Removed; use --fastsync-server-path
--port=PORT Alternate daemon port Implemented server_port config field
--sockopts=OPTIONS Custom TCP options Not Implemented
--blocking-io Use blocking I/O for remote shell Not Implemented
--outbuf=N|L|B Set output buffering Not Implemented
--address=ADDRESS Bind address for outgoing socket Not Implemented Removed because it had no effect
-4, --ipv4 Prefer IPv4 Not Implemented Removed because it had no effect
-6, --ipv6 Prefer IPv6 Not Implemented Removed because it had no effect

14. Daemon Mode

Flag Rsync Description FastSync Status Notes
--daemon Run as rsync daemon Not Implemented Removed because it had no effect
--config=FILE Alternate rsyncd.conf file Not Implemented Removed because it had no effect
--dparam=OVERRIDE Override global daemon config Not Implemented
--no-detach Don't detach from parent Not Implemented
--password-file=FILE Read daemon password from file Not Implemented
--early-input=FILE Use FILE for daemon early exec Not Implemented

15. Safety & Security

Flag Rsync Description FastSync Status Notes
Path escape detection Ensure files stay within root Implemented has_path_traversal() + realpath
Symlink-safe delete Skip symlinks in delete walk Implemented delete_extras_walk()
Protocol version check Verify compatible versions Implemented config_receive()
Max data/string/chunk sizes Prevent OOM attacks Implemented Per-message limits
Per-connection memory limit 1GB per connection Implemented MAX_CONNECTION_MEMORY
--trust-sender Trust remote sender's file list Not Implemented
--old-args Disable modern arg protection Not Implemented
--ignore-missing-args Ignore missing source args Not Implemented
--delete-missing-args Delete missing source args Not Implemented

16. Batch Operations

Flag Rsync Description FastSync Status Notes
--write-batch=FILE Write batched update to file Not Implemented
--only-write-batch=FILE Write batch without updating dest Not Implemented
--read-batch=FILE Read batched update from file Not Implemented

17. Advanced

Flag Rsync Description FastSync Status Notes
--stop-after=MINS Stop after N minutes Not Implemented
--stop-at=TIME Stop at specified time Not Implemented
--fsync Fsync every written file Not Implemented
--protocol=NUM Force older protocol version Not Implemented
--iconv=CONVERT_SPEC Charset conversion Not Implemented
--checksum-seed=NUM Set checksum seed Not Implemented
-s, --secluded-args Use protocol to send args Not Implemented
--no-OPTION Turn off implied option Not Implemented

Recommendations: Top Features to Implement Next

Ranked by user demand, implementation complexity, and interoperability impact:

Priority Feature Effort Impact
1 --whole-file / -W Low High — users expect opt-out of delta
2 --ignore-times / -I Low Medium — useful for forcing re-transfer
3 --size-only Low Medium — common migration scenario
4 --existing / --ignore-existing Low Medium — common sync patterns
5 --remove-source-files Low High — common for moves/backup
6 --delete-during Medium High — performance improvement
7 --delay-updates Medium High — atomic updates
8 --chmod Low Medium — permission flexibility
9 --executability / -E Low Low — simple flag
10 --skip-compress Low Medium — performance tuning

FastSync-Specific Features (Not in rsync)

Feature Description
-m Multithreaded pipeline (scanner/loader/sender)
-s Chunk serialization mode
-f / --sendfile Zero-copy sendfile() syscall (TCP only)
-c [level] zstd compression level (1-22)
--chunk-size Configurable chunk size
--tls TLS encryption (mutual auth)
--fastsync-server-path Path to fastsync-server binary
--server-host / --server-port Direct TCP connection
Incremental sync Skip unchanged files (size+mtime)
Delta transfer Block-level delta for changed files