bed6773346
Renaming is not supported; it might be possible to use --fuzzy to get rsync to notice the file is being renamed, but that is a bit ..fuzzy. On the other hand, interrupted transfers of an exported file are resumed, since rsync is great at that. Had to adjust the exporttree docs, which said interrupted transfers would restart. Note that remove no longer makes the empty directory dummy, instead sending the top-level empty directory. This works just as well and I noticed the dummy was unncessary when refactoring it into removeGeneric. Verified that behavior of remove is not changed, and git annex testremote does pass. This commit was sponsored by Brock Spratlen on Patreon.
64 lines
2.4 KiB
Markdown
64 lines
2.4 KiB
Markdown
This special remote type rsyncs file contents to somewhere else.
|
|
|
|
Setup example:
|
|
|
|
# git annex initremote myrsync type=rsync rsyncurl=rsync://rsync.example.com/myrsync keyid=id@joeyh.name encryption=shared
|
|
# git annex describe myrsync "rsync server"
|
|
|
|
Or for using rsync over SSH
|
|
|
|
# git annex initremote myrsync type=rsync rsyncurl=ssh.example.com:/myrsync keyid=id@joeyh.name encryption=shared
|
|
# git annex describe myrsync "rsync server"
|
|
|
|
## configuration
|
|
|
|
These parameters can be passed to `git annex initremote` to configure rsync:
|
|
|
|
* `rsyncurl` - Required. This is the url or `hostname:/directory` to
|
|
pass to rsync to tell it where to store content.
|
|
|
|
* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
|
|
See [[encryption]].
|
|
|
|
* `keyid` - Specifies the gpg key to use for [[encryption]].
|
|
|
|
* `exporttree` - Set to "yes" to make this special remote usable
|
|
by [[git-annex-export]]. It will not be usable as a general-purpose
|
|
special remote.
|
|
|
|
* `shellescape` - Optional. Set to "no" to avoid shell escaping normally
|
|
done when using rsync over ssh. That escaping is needed with typical
|
|
setups, but not with some hosting providers that do not expose rsynced
|
|
filenames to the shell. You'll know you need this option if `git annex get`
|
|
from the special remote fails with an error message containing a single
|
|
quote (`'`) character. If that happens, you can run enableremote
|
|
setting shellescape=no.
|
|
|
|
* `chunk` - Enables [[chunking]] when storing large files.
|
|
This is typically not a win for rsync, so no need to enable it.
|
|
But, it makes this interoperate with the [[directory]] special remote.
|
|
|
|
The `annex-rsync-options` git configuration setting can be used to pass
|
|
parameters to rsync.
|
|
|
|
## annex-rsync-transport
|
|
|
|
You can use the `annex-rsync-transport` git configuration setting to choose
|
|
whether we run rsync over ssh or rsh. This setting is also used to specify
|
|
parameters that git annex will pass to ssh/rsh.
|
|
|
|
ssh is the default transport; if you'd like to run rsync over rsh, modify your
|
|
.git/config to include
|
|
|
|
annex-rsync-transport = rsh
|
|
|
|
under the appropriate remote.
|
|
|
|
To pass parameters to ssh/rsh, include the parameters after "rsh" or
|
|
"ssh". For example, to configure ssh to use the private key at
|
|
`/path/to/private/key`, specify
|
|
|
|
annex-rsync-transport = ssh -i /path/to/private/key
|
|
|
|
Note that environment variables aren't expanded here, so for example, you
|
|
cannot specify `-i $HOME/.ssh/private_key`.
|