todo
This commit is contained in:
parent
f95f340c73
commit
40fe5e8927
1 changed files with 38 additions and 0 deletions
38
doc/todo/import_tree_from_rsync_special_remote.mdwn
Normal file
38
doc/todo/import_tree_from_rsync_special_remote.mdwn
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
The rsync special remote supports exporttree; it would be useful to also
|
||||||
|
support importtree.
|
||||||
|
|
||||||
|
The adb special remote shows this is possible using just some fairly
|
||||||
|
standard commands, although `find` and `stat` are not well enough
|
||||||
|
standardized to work on all unixes, it would be easy to at least support
|
||||||
|
linux.
|
||||||
|
|
||||||
|
So far, the rsync special remote really only needs rsync on the server.
|
||||||
|
And can be used with servers that lock down their shell to only
|
||||||
|
allow rsync to be run. It would be good to also only need rsync for
|
||||||
|
importtree, but there are several roadblocks:
|
||||||
|
|
||||||
|
* listing contents: Using rsync would involve a command like
|
||||||
|
`rsync --checksum -avz -i --dry-run --out-format='%C %l %M %f\n' $rsync-url empty-directory`;
|
||||||
|
that makes the remote rsync checksum all the files, which could be very
|
||||||
|
expensive. But without checksum, only mtime and size is available,
|
||||||
|
which is not really enough to be sure all edits to a file are imported
|
||||||
|
(eg a rename swap of two files that have the same mtime would not be
|
||||||
|
noticed).
|
||||||
|
|
||||||
|
It would be a lot nicer to use `find | stat`
|
||||||
|
|
||||||
|
* retrieving file with a specific content identifier:
|
||||||
|
If rsync --checksum is used, git-annex can just do the same checksum
|
||||||
|
on the downloaded file and make sure rsync retrieved the same content
|
||||||
|
identifier that was requested.
|
||||||
|
|
||||||
|
* store/remove/checkpresent with a content identifier:
|
||||||
|
If the only way available to check a content identifier is to run
|
||||||
|
rsync to get the current remote checksum of a file, very wide race
|
||||||
|
windows will be open when the file is large. So a file that is unmodified
|
||||||
|
at the start may get modified and that modification be overwritten.
|
||||||
|
|
||||||
|
**This is not acceptable**
|
||||||
|
|
||||||
|
So, it seems that, importtree would need to be able to run commands
|
||||||
|
other than rsync on the server. --[[Joey]]
|
Loading…
Add table
Reference in a new issue