Rsync checks the files and only issues the copy if the file size/modified dates are different by default. Ignore existing will not overwrite a changed file afaik.
If the file is large it only sends the changed blocks (e.g. you have a 100gb database and only a dozen 4mb blocks have been modified it won’t send the full 100gb across the network)
Can it resume interrupted writes?
Heck to the yeah. I usually run
rsync -av src/ dst/
Which is verbose and archive mode (keeps mod times, user, etc). You can also add -P for progress.
Here is the man page https://linux.die.net/man/1/rsync
If it gets interrupted, just run that same command again.
Edit: also it’s usually preinstalled on every Linux distro and should be easy to install for Windows too.
By the way,
--info=progress2
will show a total progress information.Woah, that’s amazing! Can’t believe I’ve been sleeping on it for so long
I feel like rsync may genuinely be one of the best, most slept on tools out there. It even works over ssh.
I like to add --ignore-existing to it aswell in case it gets interrupted. Useful when it’s a timed backup or similar
If it doesn’t ignore existing by default, what’s the difference between that and plain old copy?
Rsync checks the files and only issues the copy if the file size/modified dates are different by default. Ignore existing will not overwrite a changed file afaik.
If the file is large it only sends the changed blocks (e.g. you have a 100gb database and only a dozen 4mb blocks have been modified it won’t send the full 100gb across the network)