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 retrievel 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.
[[!img repomap.png caption="A real-world repository interconnection map (generated by git-annex map)"]]