
Rsync For Windows
https://github.com/badlogic/rsync-win- Category
- Developer Tools
- Rank
- No. 2064Tools index
Previous survey · No. 2059 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- badlogic
- GitHub
- 11 stars
- Latest release
- v0.3.0
- Date
About
Rsync for Windows fork with extra flags (--chmod, --no-perms, --omit-dir-times, -z).
What it does
A Windows command-line front end that converts Windows paths, assembles transfer options, and launches bundled Cygwin rsync and SSH executables. It supports local paths, SSH destinations, rsync URLs, identity files, port selection, filtering, progress reporting, bandwidth limits, and destructive synchronization.
Why it's ranked here
This is a focused compatibility layer with a useful command surface and tolerant handling of unsupported arguments. Its compact Rust implementation is easy to inspect. However, disabled SSH host verification and ignored child-process exit status make it risky for security-sensitive or unattended automation.
What's good
Windows paths are converted before transfer, while standard controls cover checksums, archives, recursion, deletion, exclusions, partial files, progress, bandwidth, and IP versions. SSH users can select an identity and port. Unrecognized arguments pass through to rsync, extending usefulness beyond the explicitly modeled options.
Tradeoffs
SSH connections explicitly disable host-key checking, weakening protection against impersonated servers. The wrapper also ignores rsync's returned exit status, so its own successful completion may not mean the transfer succeeded. Distribution depends on a neighboring Cygwin bundle, and remote-path detection recognizes SSH through an at-sign heuristic.
How to use it well
Use it for interactive Windows synchronization when you want familiar rsync behavior, Windows path conversion, and a controlled set of common transfer switches. Verify transfer results independently in scripts, and avoid its SSH setup where host authentication matters. It is a CLI wrapper, not a library, API, or standalone rsync implementation.
Technical notes+
src/main.rs defines a clap-based Args structure, converts source and destination values through cygwin64/cygpath.exe, and invokes cygwin64/rsync.exe. parse_with_passthrough retries failed strict parsing after separating known switches from unknown arguments. prepare_rsync_options_with_ssh builds an -e command using cygwin64/ssh.exe, StrictHostKeyChecking=no, IdentitiesOnly=yes, an identity path, and a port. is_ssh_path treats values containing @ as SSH unless they contain rsync://. The result of the final Command::output is not checked for a nonzero status. Cargo.toml declares Rust 2021, clap and home dependencies, MIT licensing, link-time optimization, and symbol stripping. .github/workflows/release.yml builds on Windows, downloads the original fork's Cygwin bundle, and packages it with the compiled executable.
Observed
- License
- MIT
- Primary language
- Rust, edition 2021
- Interface
- Windows command-line application
- Packaging
- Release ZIP bundles the compiled executable with a cygwin64 directory
- Runtime components
- Launches bundled rsync.exe, cygpath.exe, and ssh.exe
- Build surface
- Cargo release build with link-time optimization and stripped symbols
Read from README.md, Cargo.toml, src/main.rs, .github/workflows/release.yml.
What it can do
Synchronize files and directories between locations
Source and destination file paths → Synchronized files and directories
Change file permissions during sync
Files with permission specifications → Files with modified permissions
Copy files without preserving original permissions
Files with existing permissions → Files with default system permissions
Sync files without updating directory timestamps
Directories with modification times → Synchronized directories with preserved timestamps
Compress data during file transfer
Files to be transferred → Compressed file transfer stream
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.