Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

These docs describe unreleased changes on master. Read the latest stable documentation.

Rsync compatibility

See syq rsync for the option list.

syq rsync accepts common rsync commands for local copies, pushes, and pulls. It uses its own protocol: the remote program must be syq, not rsync. Run syq rsync --help-all for all accepted flags.

syq rsync -av project/ server:backup/project/

Differences to check before switching

AreaSyq behavior
FiltersGitignore syntax via --syq-ignore / --syq-ignore-from; rsync filters are unsupported
Deletion timingExtras are deleted after copying; no delete-before or delete-during mode
Positive --max-delete NDeletes nothing if the plan exceeds N; rsync deletes up to N
Destination collisionsDistinct sources claiming the same destination fail before copying
--ignore-existingKeeps an existing non-directory even where the source would create a directory
Type changesRefuses replacement between a directory and any non-directory, even when the directory is empty
--updateChecks mtimes only for regular files; replacements between non-directory types still occur
ResumeAlways keeps syq partial files; cannot reuse rsync partials
Delta transferReuses matching blocks at the same offsets; does not find shifted blocks
--rsync-path PATHExact syq executable path, not a shell fragment
Remote-to-remoteRefused; use native syq cp

Scan and copy errors prevent deletion. A destination that contains its source on the same host cannot be pruned. Preview deletion scope with --dry-run -v; see deletion rules.

The compatibility command uses rsync’s default size-and-whole-second timestamp quick check. Native syq cp also compares fractional seconds at the precision suggested by the destination timestamp; see timestamp matching. Use -c to compare contents when size and timestamp match; source timestamps are preserved, so ordinary clock skew does not require the source timestamp to be newer.

Syq uses numeric IDs and always keeps partial files, so --numeric-ids and --partial are accepted no-ops. -P enables progress. Compression is on by default; -z does not enable anything extra. -B / --block-size changes syq’s comparison and reuse block size; see the tuning table for its default and allowed range. Values outside that range are rejected.

Unsupported features

FeatureOptions or syntax
Rsync filter rules--exclude, --include, --filter
Hard links, ACLs, xattrs, sparse files-H, -A, -X, -S
Backup and alternate destination trees--backup, --backup-dir, --suffix, --link-dest, --compare-dest, --copy-dest
Following descendant links-L, --copy-links, --copy-unsafe-links, -k, --copy-dirlinks, -K, --keep-dirlinks
Link filtering or rewriting--safe-links, --munge-links
Other placement and filesystem controls-R / --relative, --partial-dir, -x / --one-file-system
Early deletion--delete-before, --delete-during, --force
Other comparison and output controls--size-only, -I / --ignore-times, --modify-window, --chmod, --log-file, -i / --itemize-changes
Daemon connectionsrsync://, host::module

Unsupported common flags are rejected with an explanation. Selected symlink targets are copied unchanged. --insecure-links does not enable any of the unsupported descendant-link options.

File-list parsing and help

--files-from cannot combine with syq ignore rules or deletion. A listed source whose parent is a symlink fails that entry with exit 23, without creating its implied destination parent. --insecure-links only relaxes the ownership check on symlinks in typed local paths; it does not allow symlink traversal beneath a selected source, including entries from --files-from.

Other parsing differences:

  • .. components are rejected rather than clamped at the source root.
  • dir/ and dir select the same entry. Neither selects contents unless -r is explicitly supplied; -a alone does not enable recursion here.
  • . and / are rejected as root entries.
  • Use --from0 for NUL separators; -0 is unsupported.

Blank entries and comment-looking names starting with # or ; are ignored in both separator modes. Use ./#name for a literal name. The paths are relative to one source directory; destination parents are created as needed.

-h alone does not show help; use --help or --help-all.

Syq extensions

Most syq-specific options carry a --syq- prefix. Common ones are --syq-ignore, --syq-ignore-from, and --syq-verify-only. The last compares selected contents without writing; it does not produce rsync’s itemized-change format.

The hashing controls are --integrity-checking and --syq-expected-hash in rsync mode. -c still selects content comparison.

Filters are last-match-wins with ! re-inclusion, unlike rsync’s first-match rules. Check the gitignore examples when converting a filtered command.

The compatibility tests record comparison evidence and version-specific details.

Compare without copying

syq rsync -a --syq-verify-only project/ backup/

Hashes selected contents on both sides, writes nothing, and reports DIFFERS or MISSING. Differences or inspection failures produce a nonzero exit status.

Performance controls use --performance-tuning; resource ceilings use --resource-limits. The standard rsync spelling --bwlimit remains available in syq rsync, as does --checksum for BLAKE3 content comparison.