npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@gundu/rsy

v1.2.0

Published

A blazing fast parallel copy tool for Unix

Readme

rsy

A blazing fast parallel copy tool for Unix.

Benchmarks

Criterion-validated benchmarks (Linux x86_64, NVMe SSD, 16 cores). Run yourself: cargo bench

Cold copy - first sync, empty destination

10k files x 4KB (39MB total)

rsy src/ dst/

| Tool | Time (ms) | Effective Throughput (MB/s) | Relative to rsy | Time Saved vs Tool | |------|----------:|----------------------------:|----------------:|-------------------:| | rsy ✓ | 126 | 309.5 | 1.00x | - | | rsync | 483 | 80.7 | rsy is 3.83x faster | rsy saves 357 ms (73.9%) | | cp | 245 | 159.2 | rsy is 1.94x faster | rsy saves 119 ms (48.6%) |

Technical note: Small-file workloads are metadata and syscall heavy; rsy benefits from parallel file traversal and copy scheduling.

500 files x 1MB (500MB total)

rsy src/ dst/

| Tool | Time (ms) | Effective Throughput (MB/s) | Relative to rsy | Time Saved vs Tool | |------|----------:|----------------------------:|----------------:|-------------------:| | rsy ✓ | 35 | 14285.7 | 1.00x | - | | rsync | 272 | 1838.2 | rsy is 7.77x faster | rsy saves 237 ms (87.1%) | | cp | 116 | 4310.3 | rsy is 3.31x faster | rsy saves 81 ms (69.8%) |

Technical note: Parallel I/O and lower per-file overhead produce a large latency win.

100 files x 16MB (1.6GB total)

rsy src/ dst/

| Tool | Time (ms) | Effective Throughput (MB/s) | Relative to rsy | Time Saved vs Tool | |------|----------:|----------------------------:|----------------:|-------------------:| | rsy ✓ | 98 | 16326.5 | 1.00x | - | | rsync | 715 | 2237.8 | rsy is 7.30x faster | rsy saves 617 ms (86.3%) | | cp | 335 | 4776.1 | rsy is 3.42x faster | rsy saves 237 ms (70.7%) |

Technical note: On larger files, rsy keeps multiple workers active and sustains higher end-to-end throughput.

Incremental - re-sync with no changes

10k files x 4KB (39MB total)

rsy src/ dst/   # re-run, nothing changed

| Tool | Time (ms) | Relative to rsy | Time Saved vs Tool | |------|----------:|----------------:|-------------------:| | rsy ✓ | 15 | 1.00x | - | | rsync | 69 | rsy is 4.60x faster | rsy saves 54 ms (78.3%) |

Technical note: With no payload transfer, this reflects metadata scan and change detection cost.

500 files x 1MB (500MB total)

rsy src/ dst/   # re-run, nothing changed

| Tool | Time (ms) | Relative to rsy | Time Saved vs Tool | |------|----------:|----------------:|-------------------:| | rsy ✓ | 2.3 | 1.00x | - | | rsync | 45 | rsy is 19.57x faster | rsy saves 42.7 ms (94.9%) |

Technical note: rsy's parallel check path significantly reduces no-op sync latency.

Delta - re-sync with 10% of data changed

10 files x 10MB (100MB total, 10% mutated)

rsy src/ dst/   # re-run after partial changes

| Tool | Time (ms) | Relative to rsy | Time Saved vs Tool | |------|----------:|----------------:|-------------------:| | rsy ✓ | 1.4 | 1.00x | - | | rsync | 44 | rsy is 31.43x faster | rsy saves 42.6 ms (96.8%) |

Technical note: Rolling checksum plus parallel block scanning minimizes both scan and patch time.

Overall: In this benchmark set, rsy wins every case. Speedup vs rsync ranges from 3.83x to 31.43x.


Why rsy

  • Parallel I/O — Rayon distributes file work across all CPU cores
  • Rolling-checksum delta — only transfers changed bytes; parallel block scanning
  • APFS clonefile — O(1) copies on macOS same-volume syncs
  • 1.6 MB binary — zero runtime dependencies

Install

# npm
npm install -g @gundu/rsy

# cargo
cargo install rsy

# from source
cargo build --release

Usage

rsy src/ dst/                     # local sync
rsy src/ user@host:dst/           # push to remote
rsy user@host:src/ dst/           # pull from remote
rsy -a src/ dst/                  # archive (times, perms, owner, group)
rsy --delete src/ dst/            # remove dst files absent from src
rsy -n src/ dst/                  # dry run
rsy --log src/ dst/               # timestamped log, no TUI

Flags

| Flag | Description | |------|-------------| | -a | Archive: preserve times, perms, owner, group | | -v | Verbose | | -n | Dry run | | -u | Skip if destination is newer | | -W | Whole file (skip delta) | | -x | Don't cross filesystem boundaries | | -c | Compare by checksum instead of mtime+size | | -z | Compress (accepted, not yet implemented) | | --delete | Delete destination files absent from source | | --exclude PATTERN | Exclude matching files (repeatable) | | --include PATTERN | Include override for exclude rules | | --max-size SIZE | Skip files larger than SIZE (K/M/G) | | --no-tui | Plain output, no interactive display | | --log | Timestamped per-file log to stderr | | --stats | Print transfer statistics at end | | --jobs N | Worker threads (default: 2× CPU cores) |

Exit Codes

| Code | Meaning | |------|---------| | 0 | Success | | 23 | Partial transfer (some files failed) | | 1 | Fatal error |

License

MIT