MCPcopy Index your code
hub / github.com/AlpinDale/parsync

github.com/AlpinDale/parsync @v0.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.0 ↗ · + Follow
247 symbols 532 edges 18 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

parsync

parsync is a high-throughput, resumable pull sync from SSH remotes, with parallel file transfers and optional block-delta sync.

demo

Installation

Download the binary for your platform from the releases page, or install from source:

make build
make install

Platform support

  • Linux: x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu
  • macOS: aarch64-apple-darwin, x86_64-apple-darwin
  • Windows: x86_64-pc-windows-msvc (best-effort metadata support)

Usage

parsync -vrPlu user@example.com:/remote/path /local/destination

With non-default SSH port:

parsync -vrPlu user@example.com:2222:/remote/path /local/destination

SSH config host aliases are supported.

Performance tuning

parsync -vrPlu --jobs 16 --chunk-size 16777216 --chunk-threshold 134217728 user@host:/src /dst

Balanced mode defaults:

  • no per-file sync_all barriers (atomic rename preserved)
  • existing-file digest checks are skipped unless requested
  • chunk completion state is committed in batches
  • post-transfer remote mutation stat check is skipped (enabled in strict mode)

Throughput flags:

  • --strict-durability: enable fsync-heavy strict mode
  • --verify-existing: hash existing files before skip decisions
  • --sftp-read-concurrency: parallel per-file read requests for large files
  • --sftp-read-chunk-size: read request size for SFTP range pulls

Notes on Windows metadata behavior

  • -A, -X: warn and continue (unsupported)
  • -o, -g: warn and continue (unsupported)
  • -p: best-effort (readonly mapping), then continue
  • -l: attempts symlink creation; if OS/privilege disallows it, symlink is skipped with warning

Enable strict mode to hard-fail on unsupported behavior:

parsync --strict-windows-metadata -vrPlu user@host:/src C:\\dst

Windows symlink troubleshooting

Windows symlink creation usually requires one of:

  • Administrator privileges
  • Developer Mode enabled

If not available, -l may skip symlinks (or fail with --strict-windows-metadata).

Extension points exported contracts — how you extend this code

RemoteClient (Interface)
(no doc) [3 implementers]
src/remote.rs

Core symbols most depended-on inside this repo

load
called by 20
src/state.rs
run_sync_with_client
called by 14
src/sync.rs
checkout
called by 10
src/remote.rs
opts
called by 10
src/sync.rs
save
called by 9
src/state.rs
vlog
called by 7
src/sync.rs
replace
called by 6
src/remote.rs
log_debug
called by 6
src/sync.rs

Shape

Function 125
Method 81
Class 38
Enum 2
Interface 1

Languages

Rust100%

Modules by API surface

src/remote.rs89 symbols
src/sync.rs63 symbols
src/state.rs35 symbols
tests/perf_smoke.rs9 symbols
tests/e2e_sshd.rs7 symbols
src/delta/checksum.rs7 symbols
src/config.rs7 symbols
src/cli.rs7 symbols
src/delta/signature.rs6 symbols
src/delta/protocol.rs5 symbols
src/hashing.rs4 symbols
tests/cli.rs2 symbols

For agents

$ claude mcp add parsync \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact