rsync through a server storing the changes, time delayed rsync

Matt McCutchen hashproduct at verizon.net
Sun Feb 26 02:04:31 GMT 2006


On Sat, 2006-02-25 at 15:48 +0100, Torbjörn Nordling wrote:
> True, it is a one-way-and-then-the-other-way system, except when I 
> forget to do the sync, so for safety it would be better to have two-way.

Keep in mind that two-way systems are several times as complex as
one-way systems and thus several times as likely to do something you
don't expect.  Unison is one of the few tools that has taken on the full
task of two-way synchronization, but it requires a direct connection
between the two ends.  Maybe a one-way-and-then-the-other-way system
that warns you if you have forgotten to do the sync would be more
practical.

> The last sounds doable, but then it would again depend on mtimes and 
> other programs messing it up, wouldn't it?

True, but only to the same extent that rsync itself depends on mtimes.

>  Taking inspiration from the 
> two copies suggestion, which unfortunately is not doable (too much data 
> ~40GB): 1. Store a file list with check sums locally, which is updated 
> last in a sync.
> 2. Sync, by first comparing with local lastsync file list in order to 
> detect changes, which are to be uploaded to the server. 3. Compare 
> these changes with the changes stored on the server (file list 
> including only check sums of changed files) in order to detect possible 
> conflicts caused by same file being changed on both. 4. Download 
> changes (rsync changed parts of file) from server and merge them with 
> existing files. (I suppose that if a conflict occur then the only 
> practical possibility is to select the local version, since only 
> changed parts of file exist on server.)
> 5. Upload final changes that have been made to local files (including 
> conflicts solved manually) and the file list including only check sums 
> of changed files. 6. Update local file list of check sums.
> Would this do the trick? Maintaining the strength of rsync, sending 
> only changed parts of files, while localy only having to store check 
> sums from last sync instead of two copies of the files.

I started coding a full two-way synchronizer along those lines for you,
but I got discouraged when I realized how nasty conflict resolution was
going to be.  (Typical nasty case: add a file to a directory on one
side, delete the whole directory on the other.)  My script used
size/mtime pairs like rsync's default quick check instead of checksums
and used line-by-line diffing and patching on find-like file listings.
I attach it in case you can make some use of it.  Most of the framework
is there, but I was only beginning to code the process of translating
file listing differences to rsync files-from lists and filter lists.  It
was to be called sisync, for small-intermediary sync.
-- 
Matt McCutchen
hashproduct at verizon.net
http://hashproduct.metaesthetics.net/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sisync
Type: application/x-shellscript
Size: 3269 bytes
Desc: not available
Url : http://lists.samba.org/archive/rsync/attachments/20060225/67707a21/sisync.bin


More information about the rsync mailing list