cpx: a rust based cp replacement that’s up to 5× faster benchmarks.
One thing that makes cpx powerful is that it’s configurable.
You can define excludes, parallelism, progress styles, and more.
But first, here’s what copying actually looks like(some variants):

Let's start with config, with cpx config init it creates the config file , a sample config:
[exclude]
patterns = ["*.tmp", "*.log", "node_modules", ".git"]
[copy]
parallel = 8
[preserve]
mode = "default"
[progress]
style = "detailed"
[reflink]
mode = "auto"
With a simple config file, you can:
- Exclude files and directories
- Control parallelism
- Customize progress bars
- Tune copy and preserve behavior
You can safely interrupt a copy and resume it later.
It’s checksum safe and automatically skips already copied files.
Why I built it
I am a firm believer of learn by doing philosophy. Last year after completing Google Summer of Code langchain-openvino, I was interested to learn rust. I asked myself why? Part of it was genuine curiosity, and part of it was the hype rust gets on platforms like X. Generally its said in opensource its good practice & people do it for the projects they use, I do that too but I also contribute to learn and to solve interesting problems. This might not be the “correct” open source path, but it works for me.
So I started with my first issue on ruff & made the PR, Since it was a tracking issue with many related problems, I kept digging deeper.
Over time, that curiosity led to 20+ merged PRs in ruff.
As I spent more time contributing, grew curious about the maintainers and their work. Digging through their profiles led me to tools like fd, bat, and ripgrep rust based drop in replacements for traditional Unix utilities. Around this time to further strengthen my rust concepts I came to know about this 100 exercises to learn rust naturally it felt difficult for me to complete as opposing of my learn by doing however I did complete it somehow, but it's still better than tutorials, and an idea came why not work on a better version of cp with visual feedback, speed, & some other features so that's how it started to came to be.
A little easter egg: the gifs I have attached are recursively copying the 100 exercises to learn rust as a small token of gratitude for helping me get comfortable with the language. I hope you enjoyed this blog, and will soon write a detailed technical architecture about the architecture of cpx the choices, design etc.


Top comments (0)