diff --git a/README.md b/README.md index 7ebd330..8f52a59 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ replacement for every rsync feature or protocol mode. - Recursive directory scanning. - Rsync-style source and destination arguments. -- SSH transport using `user@host:/path` destinations. +- SSH transport using `user@host:destination` paths below the remote authorized root. - TCP client/server transfers. - Dry runs, excludes, includes, size filters, backups, statistics, and bandwidth limiting. @@ -79,8 +79,10 @@ partial, alternate, and planned behavior. ### Build -Requirements: C11 compiler, CMake 3.22 or newer, zstd, OpenSSL, pthreads, -and an SSH client for SSH transport. +Requirements: C11 compiler, CMake 3.22 or newer, xxHash, zstd, OpenSSL, +pthreads, and an SSH client for SSH transport. The first CMake configure fetches +xxHash from GitHub, so network access is required unless the dependency is +already cached. ```bash cmake -B build -S . @@ -98,10 +100,12 @@ cmake --build build -j$(nproc) ### SSH transfer The remote host must have `fastsync-server` available in `PATH`, or use -`--fastsync-server-path`. +`--fastsync-server-path`. SSH starts `fastsync-server --stdio` in its remote +working directory, so use a destination below that directory unless the +remote server is otherwise configured with a matching authorized root. ```bash -./build/client /path/to/source user@host:/path/to/destination +./build/client /path/to/source user@host:destination ``` ### TCP transfer @@ -140,30 +144,30 @@ FastSync-native are optional performance or transport extensions. ./build/client /source/ /destination/ # Archive-style synchronization (current FastSync archive behavior) -./build/client -a /source/ user@host:/destination/ +./build/client -a /source/ user@host:destination/ # Preview a transfer without changing the destination ./build/client -n /source/ /destination/ # Exclude temporary and object files ./build/client --exclude '*.tmp' --exclude '*.o' \ - /source/ user@host:/destination/ + /source/ user@host:destination/ # Remove destination entries not present in the source -./build/client --delete /source/ user@host:/destination/ +./build/client --delete /source/ user@host:destination/ # Skip unchanged files using size and modification time -./build/client --incremental /source/ user@host:/destination/ +./build/client --incremental /source/ user@host:destination/ # Verify content when size and time are not sufficient -./build/client --incremental --checksum /source/ user@host:/destination/ +./build/client --incremental --checksum /source/ user@host:destination/ # Preserve supported mode and timestamp metadata -./build/client -M /source/ user@host:/destination/ +./build/client -M /source/ user@host:destination/ # Keep backups of overwritten destination files -./build/client --backup --backup-dir /backups \ - /source/ user@host:/destination/ +./build/client --backup --backup-dir backups \ + /source/ user@host:destination/ ``` ## FastSync Extensions @@ -217,8 +221,8 @@ before FastSync can claim full rsync CLI compatibility. | `--backup` | Back up overwritten files. | | `--backup-dir ` | Store backups under a separate directory. | | `--suffix ` | Set the backup filename suffix. | -| `--partial` | Keep received data under the configured partial location. Full resume semantics are planned. | -| `--partial-dir ` | Set the partial transfer directory. | +| `--partial` | Select partial-transfer handling. With `--partial-dir`, completed files are written there; resumable transfers are not implemented. | +| `--partial-dir ` | Set a relative partial-transfer directory below the server destination root; use with `--partial`. | | `--inplace` | Write directly to the destination instead of using a temporary file. | ### Metadata and links diff --git a/RSYNC_COMPAT.md b/RSYNC_COMPAT.md index 65a265b..4b236ec 100644 --- a/RSYNC_COMPAT.md +++ b/RSYNC_COMPAT.md @@ -152,14 +152,14 @@ This document maps rsync's full feature set to FastSync's current implementation | Flag | Rsync Description | FastSync Status | Notes | |------|-------------------|-----------------|-------| -| `-S`, `--sparse` | Sparse block handling | ✅ Implemented | `preserve_sparse` config field | +| `-S`, `--sparse` | Sparse block handling | ⚠️ Partial | Flag is accepted, but full hole preservation is not implemented | | `--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` | Skip based on checksum | ✅ Implemented | With `--incremental`, compares xxHash64 content checksums; `-c` remains 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 |