Which is more efficient: rsync over ssh or rsync to a drive mounted locally via ssh tunnel

The RSync option will be FAR better.

When RSync is running over SSH, it actually uses both system's processors when doing file comparison.

Basically, rsync runs on both devices (literally, rsync connects to the remote device using ssh, executes the rsync binary file on the remote device, and then the two running executables interact over the ssh pipe), enabling files to be compared by having the two systems exchange file hashes, rather then transferring the entire file over the pipe, as would have to be done if you have the remote system mounted as a local drive.

This is obviously only an advantage when you are significantly speed-constrained, but most remote backups are.

Also, rsync when run over SSH compressed files as they are transfered, to speed up transfer times. I do not believe ExpanDrive does compression, but even if it does, it will significantly lose out when comparing files between the two systems.

RSync has a fundamentally different operating mode when performing local backups vs backups over a network. When working locally, it does not bother with hashing for file comparison, and does no file compression.


Running rsync as a daemon is really only useful when you have multiple clients backing up to the same device, or your devices are heavily CPU constrained (such as on an embedded NAS). It basically just lets you avoid the SSH overhead, and having to have each device have a SSH account.


IMHO rsync over ssh would be better, however my recommendation is to start a rsync daemon on the other side and access it via secure VPN (openvpn, pptp). SSH encryption is hard on the cpu usage and depending on the size transferred, it might be a painful experience, however rsync in daemon mode has no encryption and is the fastest solution. Note that rsyncd (rsync in daemon mode) does not employ any encryption and authentication is very limited.