docs: clarify rsync compatibility roadmap #215
@@ -45,7 +45,7 @@ replacement for every rsync feature or protocol mode.
|
|||||||
|
|
||||||
- Recursive directory scanning.
|
- Recursive directory scanning.
|
||||||
- Rsync-style source and destination arguments.
|
- 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.
|
- TCP client/server transfers.
|
||||||
- Dry runs, excludes, includes, size filters, backups, statistics, and
|
- Dry runs, excludes, includes, size filters, backups, statistics, and
|
||||||
bandwidth limiting.
|
bandwidth limiting.
|
||||||
@@ -79,8 +79,10 @@ partial, alternate, and planned behavior.
|
|||||||
|
|
||||||
### Build
|
### Build
|
||||||
|
|
||||||
Requirements: C11 compiler, CMake 3.22 or newer, zstd, OpenSSL, pthreads,
|
Requirements: C11 compiler, CMake 3.22 or newer, xxHash, zstd, OpenSSL,
|
||||||
and an SSH client for SSH transport.
|
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
|
```bash
|
||||||
cmake -B build -S .
|
cmake -B build -S .
|
||||||
@@ -98,10 +100,12 @@ cmake --build build -j$(nproc)
|
|||||||
### SSH transfer
|
### SSH transfer
|
||||||
|
|
||||||
The remote host must have `fastsync-server` available in `PATH`, or use
|
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
|
```bash
|
||||||
./build/client /path/to/source user@host:/path/to/destination
|
./build/client /path/to/source user@host:destination
|
||||||
```
|
```
|
||||||
|
|
||||||
### TCP transfer
|
### TCP transfer
|
||||||
@@ -140,30 +144,30 @@ FastSync-native are optional performance or transport extensions.
|
|||||||
./build/client /source/ /destination/
|
./build/client /source/ /destination/
|
||||||
|
|
||||||
# Archive-style synchronization (current FastSync archive behavior)
|
# 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
|
# Preview a transfer without changing the destination
|
||||||
./build/client -n /source/ /destination/
|
./build/client -n /source/ /destination/
|
||||||
|
|
||||||
# Exclude temporary and object files
|
# Exclude temporary and object files
|
||||||
./build/client --exclude '*.tmp' --exclude '*.o' \
|
./build/client --exclude '*.tmp' --exclude '*.o' \
|
||||||
/source/ user@host:/destination/
|
/source/ user@host:destination/
|
||||||
|
|
||||||
# Remove destination entries not present in the source
|
# 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
|
# 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
|
# 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
|
# 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
|
# Keep backups of overwritten destination files
|
||||||
./build/client --backup --backup-dir /backups \
|
./build/client --backup --backup-dir backups \
|
||||||
/source/ user@host:/destination/
|
/source/ user@host:destination/
|
||||||
```
|
```
|
||||||
|
|
||||||
## FastSync Extensions
|
## FastSync Extensions
|
||||||
@@ -217,8 +221,8 @@ before FastSync can claim full rsync CLI compatibility.
|
|||||||
| `--backup` | Back up overwritten files. |
|
| `--backup` | Back up overwritten files. |
|
||||||
| `--backup-dir <dir>` | Store backups under a separate directory. |
|
| `--backup-dir <dir>` | Store backups under a separate directory. |
|
||||||
| `--suffix <suffix>` | Set the backup filename suffix. |
|
| `--suffix <suffix>` | Set the backup filename suffix. |
|
||||||
| `--partial` | Keep received data under the configured partial location. Full resume semantics are planned. |
|
| `--partial` | Select partial-transfer handling. With `--partial-dir`, completed files are written there; resumable transfers are not implemented. |
|
||||||
| `--partial-dir <dir>` | Set the partial transfer directory. |
|
| `--partial-dir <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. |
|
| `--inplace` | Write directly to the destination instead of using a temporary file. |
|
||||||
|
|
||||||
### Metadata and links
|
### Metadata and links
|
||||||
|
|||||||
+2
-2
@@ -152,14 +152,14 @@ This document maps rsync's full feature set to FastSync's current implementation
|
|||||||
|
|
||||||
| Flag | Rsync Description | FastSync Status | Notes |
|
| 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 | |
|
| `--preallocate` | Allocate dest files before writing | ❌ Not Implemented | |
|
||||||
|
|
||||||
## 11. Checksum & Comparison
|
## 11. Checksum & Comparison
|
||||||
|
|
||||||
| Flag | Rsync Description | FastSync Status | Notes |
|
| 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 |
|
| `--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 |
|
| `--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 |
|
| `--copy-dest=DIR` | Include copies of unchanged files | ❌ Not Implemented | Removed because it had no effect |
|
||||||
|
|||||||
Reference in New Issue
Block a user