Parallel rsync-like pull sync over SSH with resume
Find a file
2026-03-06 19:19:38 +04:30
.github/workflows chore: rename project to parsync 2026-03-06 03:38:25 +04:30
assets chore: add demo 2026-03-05 23:06:25 +04:30
scripts [ci skip] chore: add install scripts 2026-03-06 04:46:08 +04:30
src feat: receiver-side destination validator (#5) 2026-03-06 19:19:38 +04:30
tests chore: rename project to parsync 2026-03-06 03:38:25 +04:30
.gitignore chore: add demo 2026-03-05 23:06:25 +04:30
Cargo.lock chore: rename project to parsync 2026-03-06 03:38:25 +04:30
Cargo.toml [ci skip] fix: add repo/homepage/documentation to Cargo.toml 2026-03-06 04:32:56 +04:30
LICENSE chore: add license 2026-03-05 13:43:54 +04:30
Makefile chore: add delta mode and rolling checksumming 2026-03-05 13:41:49 +04:30
README.md chore: add one-line installation commands 2026-03-06 05:00:31 +04:30

parsync

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

demo

Installation

Linux and macOS:

curl -fsSL https://alpindale.net/install.sh | bash

Windows:

powershell -ExecutionPolicy Bypass -c "irm https://alpindale.net/install.ps1 | iex"

You can also install with cargo:

cargo install parsync

You may also 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 creation usually requires one of:

  • Administrator privileges
  • Developer Mode enabled

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