There are many threads comparing Rclone with Rsync, but most of them are already closed, so I start a new one.
In comparisons of Rclone with Rsync, a difference that is often mentioned is that Rclone transfers whole files, while Rsync is able to save bandwidth by transferring only file differences (deltas), i.e. chunks of files. But if the Chunker backend (currently beta) is used to wrap another backend, then Rclone does basically the same, doesn't it? And if so, are there any essential differences left?
have you considered restic on its own?
restic supports a small number of cloud providers.
if you use a cloud provider not supported by restic, restic can use rclone.
Nope. Not at all. With or without chunker rclone always operates on all files.
The purpose of chunker is to overcome some cloud storages' limitations regarding max object size stored. It does not support any form of delta transfers/updates.
I like to think about rclone as rsync for the cloud. And as rsync does not provide any cloud connectivity (beyond ssh) similarly rclone does not provide many features needed to effectively sync files locally (metadata, privileges) etc.
Then I wonder where I misunderstand. If chunker breaks down a file into n chunk files, and the file changes in a way so that only one of these chunk files changes, then Rclone would only transfer this single chunk file, wouldn't it? And Rsync does more or less this, except that the chunks are not persisted as chunk files, doesn't it?
Nope. Unlike rsync rclone will transfer all chunks again. These chunks are not for selective object (file) updates.
Not sure where you have this idea from that rclone works like rsync.
Not that this is not impossible:) Maybe one day somebody will extend chunker functionality to make it possible. But as it is today this is not how it works.
Today you can use chunker to store your 100GB file on some remote where maximum allowed files size is 1GB. And this is the only purpose why rclone chunker was implemented.
Only similarity I can think of is unbelievable number of flags and switches both programs have:)
You have great replies here. I will add something about rsync that may help clear it up:
To be clear, rsync is two things:
- Tool to mirror (or clone) a directory structure from one source to another. It is done either locally or via SSH. It is one-way mirror.
- Algorithm used by the tool to do these transfers efficiently when a small change is made. With rsync, if there is a small change to even a big file, very little data other than that change needs to be propagated. This actually makes it less efficient for a big change to a big file but the end result is still the same file.
rclone is like the first bullet for rsync. It does directory cloning but supports a ridiculous number of backends including some meta (wrapper) ones for compression, encryption, chunking, etc. But it does not do anything with existing data.
If you just have SSH (or local) remotes, which one is better depends on your use case. rsync, to my knowledge, does one transfer at a time while rclone can do many. But rsync can reuse data better than rclone. So if you have big files with small changes, rsync is better. If you have lots of little files, rclone is better.
Obviously if you want to connect to anything but SSH and local or you want encryption, then rclone is your only option.
rclone also has the ability to mount or serve a remote. This is unrelated to the comparison with rsync but is a common use case.
I had falsely assumed Chunker would work like this:
First split the local file, then compare.
Then update as needed.
But apparently it works like this:
First join remote chunks (only logically - actually metadata is used).
Then update the whole file, consequently including all chunks.
chunker remote only purpose today is split large file into small files. Nothing more.