Rsync-compatible flags: -a, -n, -p, --exclude, --delete #8

Merged
TapTap merged 3 commits from rsync-flags into main 2026-07-16 13:38:20 +02:00
Owner

Implements five rsync-compatible flags across 15 files:

  • -a/--archive: enables -c -m -M (compression + multithreading + metadata). Does NOT enable -s (chunk serialization) since that slows transfers.
  • -n/--dry-run: scans source and prints what would be transferred without connecting.
  • -p : custom SSH port, passed as -p to the ssh subprocess. Switched from execlp to execvp for dynamic args.
  • --exclude : glob-based filename filtering (supports * and ?) in the scanner.
  • --delete: sender collects a manifest of all transferred files; receiver walks the destination tree and deletes anything not in the manifest.

Protocol: added STATUS_MANIFEST and use_delete field to Config wire format.
New utilities in utils.c: glob_match(), delete_extras() with recursive directory walk.

Builds clean (zero new warnings), all 7 tests pass.

Implements five rsync-compatible flags across 15 files: - **-a/--archive**: enables -c -m -M (compression + multithreading + metadata). Does NOT enable -s (chunk serialization) since that slows transfers. - **-n/--dry-run**: scans source and prints what would be transferred without connecting. - **-p <port>**: custom SSH port, passed as -p to the ssh subprocess. Switched from execlp to execvp for dynamic args. - **--exclude <pattern>**: glob-based filename filtering (supports * and ?) in the scanner. - **--delete**: sender collects a manifest of all transferred files; receiver walks the destination tree and deletes anything not in the manifest. Protocol: added STATUS_MANIFEST and use_delete field to Config wire format. New utilities in utils.c: glob_match(), delete_extras() with recursive directory walk. Builds clean (zero new warnings), all 7 tests pass.
TapTap added 1 commit 2026-07-16 12:39:20 +02:00
Feature changes across 15 files:

- -a/--archive: enables -c -m -M (no -s, which slows transfers)
- -n/--dry-run: scan + print without connecting or transferring
- -p <port>: custom SSH port (passed as -p to ssh via execvp)
- --exclude <pattern>: glob-based filename filtering in scanner
- --delete: sender collects file manifest; receiver deletes unlisted files

Protocol: added STATUS_MANIFEST, use_delete field in Config wire format.
New utilities: glob_match(), delete_extras() with recursive directory walk.
Scanner: accepts exclude patterns; skips matching entries.
SSH transport: switched from execlp to execvp for dynamic port arg.
Server + multiprocessing: handle STATUS_MANIFEST in both single and
multithreaded receive paths.

Builds clean, all 7 tests pass.
TapTap added 2 commits 2026-07-16 13:38:15 +02:00
TapTap merged commit eff00fa021 into main 2026-07-16 13:38:20 +02:00
Sign in to join this conversation.