Skip to Content

Introducing rusync

Today I wrote my first “real” rust project.

It’s a re-write of rsync in Rust called rusync.

Here’s what its installation and usage look like:

$ cargo install rusync
$ rusync test/src test/dest
:: Syncing from test/src to test/dest …
-> foo/baz.txt
-> foo/bar.txt
 ✓ Synced 2 files (1 up to date)

You can find the sources on github.

Feedback request #

I wrote this because I wanted to give Rust a try.

If you’re already are a Rust developer, I’d appreciate it if you could give me a honest review of the code I wrote.

See the contact page for all the possible ways to reach me, and many thanks in advance!

What’s next #

Here’s a list of features I plan to implement

  • Option to delete extraneous files
  • Global progress bar

The last one is interesting: we need to recursively walk through all the files in the source folder in order to estimate the total size of the transfer, but we want to do that while the transfer is in progress.

That will be an opportunity to play a little bit with Rust concurrency features :)


Update: well, I implemented this features using a pipeline of std::sync::mpsc channels, and it worked great! Here’s the relevant commit if you want to take a look.

Thanks for reading this far :)

I'd love to hear what you have to say, so please feel free to leave a comment below, or read the contact page for more ways to get in touch with me.

Note that to get notified when new articles are published, you can either: