You are not logged in.

#1 2018-05-08 19:51:01

dmerej
Member
From: Paris
Registered: 2016-04-09
Posts: 101
Website

rusync - rsync in Rust

Since rewriting stuff in rust is what cool kids do nowadays, I decided to give it a try.

So I'm working on an rewrite of rsync I chose to call rusync. The goal is to have a more ergonomic tool, kinda like fd did for find.

Basic functionnality has been implemented.

Here's how to install and run it:

$ cargo install rusync
# or install rusync from the AUR
$ 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)

If you know rust, I'd love to get your honest constructive critique of the code I wrote.

There's still a few big features missing (see the README for details), but I wanted to share early.


Cheers !

Last edited by dmerej (2018-06-05 19:16:57)


Responsible Coder, Python Fan, Rust enthusiast

Offline

#2 2018-05-26 12:56:29

Svenstaro
Administrator
From: Germany
Registered: 2008-11-19
Posts: 388

Re: rusync - rsync in Rust

This is really cool! Just to note: Your link doesn't work.

What I would love to see is threading support. There is a common problem with SSH that if you use a connection over a high-bandwidth but also high-latency link, you'll get bad transfer performance. It would be neat if you had a mode where you opened multiple SSH connections and were able to do multiple transfers at the same time over separate connections (maybe even for the same file!).

Offline

#3 2018-06-05 19:22:23

dmerej
Member
From: Paris
Registered: 2016-04-09
Posts: 101
Website

Re: rusync - rsync in Rust

Thanks for the feedback Svenstaro!

rusync currently does not work over ssh, sorry. Maybe you can still use it with sshfs, but I'm not sure performance will be great...

Anyway, I just released version 0.4.0 which features displaying an E.T.A:

rusync test/src test/dest
 50% 24/50 Downloads/archlinux.iso   00:01:32

The neat thing is that the ETA is computed by calculating the total size of the source folder, but while the transfer is running, using Rust channels.

Maybe for a next release I'll try implementing concurrent copy and see if I can get performance boost.

Cheers!

Last edited by dmerej (2018-06-05 19:24:26)


Responsible Coder, Python Fan, Rust enthusiast

Offline

Board footer

Powered by FluxBB