Rsync parity: update/inplace/append transfer modes #127

Closed
opened 2026-07-21 16:24:03 +02:00 by TapTap · 0 comments
Owner

FastSync currently always overwrites destination files. Rsync provides several alternative transfer modes that FastSync should support:

Missing flags

  • -u, --update — skip files that are newer on the receiver
  • --inplace — update destination files in-place
  • --append — append data onto shorter files
  • --append-verify — append with verification
  • -I, --ignore-times — don't skip files matching size+mtime
  • --size-only — skip files matching size only
  • --checksum, -c — skip based on checksum (finding 5)
  • --modify-window — mtime tolerance (finding 27)
  • --existing — skip new files on receiver (finding 3)
  • --ignore-existing — skip existing files (finding 3)

Current code

  • file.c:209-246 — always overwrites, no inplace/append
  • file.c:467-503 — size+mtime comparison only
  • client_cli.c:85-244 — only --incremental flag

Impact

  • --append: incremental log file syncing
  • --update: live filesystem sync where receiver may be newer
  • --inplace: large file patching without full rewrite
  • --checksum: content-verified syncs

Implementation notes

  • --inplace: write to original file offset vs temp+rename
  • --update: server-side check in receive_incremental_check
  • --append: protocol changes to send only trailing bytes
FastSync currently always overwrites destination files. Rsync provides several alternative transfer modes that FastSync should support: ## Missing flags - `-u, --update` — skip files that are newer on the receiver - `--inplace` — update destination files in-place - `--append` — append data onto shorter files - `--append-verify` — append with verification - `-I, --ignore-times` — don't skip files matching size+mtime - `--size-only` — skip files matching size only - `--checksum, -c` — skip based on checksum (finding 5) - `--modify-window` — mtime tolerance (finding 27) - `--existing` — skip new files on receiver (finding 3) - `--ignore-existing` — skip existing files (finding 3) ## Current code - `file.c:209-246` — always overwrites, no inplace/append - `file.c:467-503` — size+mtime comparison only - `client_cli.c:85-244` — only `--incremental` flag ## Impact - `--append`: incremental log file syncing - `--update`: live filesystem sync where receiver may be newer - `--inplace`: large file patching without full rewrite - `--checksum`: content-verified syncs ## Implementation notes - `--inplace`: write to original file offset vs temp+rename - `--update`: server-side check in receive_incremental_check - `--append`: protocol changes to send only trailing bytes
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: TapTap/FastSync#127