git-annex can transfer data to or from any of a repository's git remotes. Depending on where the remote is, the data transfer is done using rsync (over ssh or locally), or plain cp (with copy-on-write optimisations on supported filesystems), or using curl (for repositories on the web). Some special remotes are also supported that are not traditional git remotes.

If a data transfer is interrupted, git-annex retains the partial transfer to allow it to be automatically resumed later.

It's equally easy to transfer a single file to or from a repository, or to launch a retrieval of a massive pile of files from whatever repositories they are scattered amongst.

git-annex automatically uses whatever remotes are currently accessible, preferring ones that are less expensive to talk to.

A real-world repository interconnection map (generated by git-annex map)