Vibeleaderboard
Index / tool
Visit greaber.github.io
Category
Developer Tools
Rank
No. 3210Tools index

Previous survey · No. 3074 ·

Type
TOOL
Use case
Deployment & Operations
Interfaces
CLI
GitHub
37 stars
Latest release
v0.7.1
Date

About

syq is a command-line tool for copying, reorganizing, and removing files locally or across machines, using its own protocol instead of rsync's so the receiving machine needs no SSH server or open incoming port. It supports resumable transfers, remote command execution, rsync-style syntax compatibility, and scripting via a JSON API or Python SDK.

What it does

A single Rust binary for Linux and macOS that moves files between disks, servers and S3-style buckets. It logs in over SSH, installs a matching helper on the far side if one is missing, then sends file data over parallel encrypted TCP connections on ports 47600 to 47699, falling back to SSH when those ports are blocked. It can also run with an rsync-shaped command line, so existing scripts can switch over with limited edits.

Why it's ranked here

Speed plus a careful security model. The author's own benchmark project shows one 1.07 GB file going from Germany to the US East Coast at 159.9 MB/s against 18.3 MB/s for rsync, with your results expected to differ. The security notes are unusually specific: symlink races are blocked by working through open directory handles, release downloads are checked against an Ed25519-signed manifest, and server-to-server copies run on a signed, single-use grant instead of a forwarded SSH agent. It is MIT licensed and still pre-1.0.

What's good

The written principles commit to things users care about: an incomplete copy must never look successful, and a failed direct route never silently relays your data through a third machine. Removal is designed to work on a completely full disk. The rsync compatibility notes list every behavioural difference in a table instead of hiding them. Scripts can pin an exact release, which is downloaded, verified and cached, or refuse to run on the wrong version. Copies between two servers end with a receipt the destination signs, so the machine in the middle cannot fake success.

Tradeoffs

Not a drop-in rsync. Rsync filter rules such as exclude and include are rejected in favour of gitignore syntax with last-match-wins, there are no backup or link-dest trees, no rsync daemon support, and the delta step only reuses blocks at the same offset, so inserted data defeats it. There is no Windows build. The update reminder contacts a maintainer-run host that logs your IP address and derived city, though it can be switched off. The pipe-to-shell installer checks a hash embedded in the script but not the release signature. Copies take no snapshot, so files changing mid-copy can mix versions.

How to use it well

Best for people who regularly push large trees between their own machines over SSH, especially across long or lossy links, and want to send results back to a laptop that runs no SSH server. Open the TCP port range on servers you control or you only get the SSH path. Read the compatibility table before swapping it into an rsync script that relies on filter rules. Pin a version in automation. For point-in-time backups, take a filesystem snapshot first, since the tool reads files as they are.

Technical notes+

Cargo.toml declares rust-version 1.94 and MIT, pulling in aws-sdk-s3 for buckets, hpke and ed25519-dalek for key exchange and release signing, blake3 and xxhash-rust for hashing, zstd and lz4 for compression, and a bundled rusqlite. src/main.rs dispatches hidden internal roles (--server, --restricted-receiver, --session-pool) before user subcommands, calls tune_allocator to raise glibc M_MMAP_THRESHOLD to 32 MiB so block buffers stay on the heap, and raise_nofile lifts the descriptor soft limit toward the hard limit, capped near one million. Receiver modules deny subprocess launches on macOS because SCM_RIGHTS lacks atomic close-on-exec there. src/cli.rs makes TransferStrategy::Locality the default: whole-file locally, aligned-block reuse for same-size files with a remote endpoint.

Observed

License
MIT
Language
Rust
Platform support
Linux and macOS, x86-64 and ARM64; no Windows build documented
Install surface
Standalone shell installer into the user's local bin directory without sudo, or a Homebrew tap
Interfaces
Native CLI plus an rsync-compatible command, with structured results and a Python SDK for scripting
Transport
SSH for authentication; encrypted TCP data on ports 47600 to 47699 when reachable, otherwise SSH
Rsync filter rules
Unsupported; gitignore-style ignore options instead
Delta transfer
Reuses matching blocks only at the same offsets; shifted blocks are not matched
Release verification
Self-updates and remote helpers checked against an Ed25519-signed manifest; first-time installer script does not verify the signature
Update-check telemetry
Interactive update reminder logs time, version, platform, IP and derived location; can be disabled
Consistency
No snapshot is taken during a copy

Read from README.md, Cargo.toml, LICENSE, PRINCIPLES.md, docs/rsync-compat.md, docs/security.md, docs/speed.md, docs/install.md, docs/integrity-checking.md, src/main.rs, src/cli.rs.

What it can do

  • Copy files locally or across machines using a custom protocol

    Local or remote file paths → Copied files

  • Resume interrupted file transfers

    Partially transferred file → Completed file transfer

  • Execute commands remotely

    Command string → Command execution result

  • Reorganize files

    File paths → Reorganized file structure

  • Remove files locally or remotely

    File paths → Deleted files

  • Accept rsync-style command syntax

    rsync-style command → Executed file operation

  • Script file operations via JSON API

    JSON commands → Executed file operation

  • Script file operations via Python SDK

    Python code → Executed file operation

Tags

file-transferclirsync-alternativepython-sdkremote-copydevopsautomation

Tech Stack

Rust

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.