As soon as you said "svn" I got the idea you want revisions of files
you send to storage, which is a fine idea. Backups are fine, but if you
have to work at the granularity of "yesterday or maybe the day before"
it can become cumbersome.

To my mind the first question to answer is how do you want to commit
these files to a revision control system. This determines what you do
next. 

If you want it file-by-file, then getting a single file is a
simple svn checkout, but rolling everything back to yesterday (eg for
when you accidentally did an rm on .kde or .mail) will be tricky. To do
this, commit the files to remote svn and just put up with the hassles
of the binary files. Yes, I know binary in SVN is amazingly evil and
makes the worst ever out of Redmond look like child's play, but
sometimes you have no choice... Or use a revision control system that
can deal with binaries OK. All depends on what *you* need stuff to do.

If you are happy committing an entire Makefile run and are OK to work
with that, then you use an FS (or LVM) that can do snapshots, and make
one as the last command in your Makefile. Restores are a case of mount
the snapshot, find the file of interest and do what you need with it.

It really comes down to the old story of "precisely define first
what exactly you want to achieve" and then the tools to do that often
present themselves.


 On Sun, 2 Dec 2012 12:21:40 -0500
Randy Westlund <[email protected]> wrote:

> I've been using rsync to sync binary files, shell scripts, my
> workspace, and random user files under my home directory across
> multiple machines.  I'm using one server as the master copy, which
> makes daily incremental backups of my files to a separate disk with
> rsync.  At the moment, I have my sync script set up as a Makefile with
> the following targets.  I run this from multiple workstations.
> 
> It would be nice to use something as easy as svn, but many of my files
> are binary.  Or something like dropbox would be great.  I don't work
> from windows, so I don't need a cross-platform solution.
> 
> What utilities do you guys use?  Is there a better way to do this?  It
> would be nice to move everything to the background, but I've already
> clobbered a few files by calling this in the wrong order and might
> move the Makefile to an interactive script to protect against that.  I
> have to call 'make clobber' after I remove a local file to push that
> change to the server, and if I forgot to call 'make get' first, I have
> to fix it manually.
> 
> -------sync makefile--------
> get:
>         rsync -azOuvihh --progress -e ssh $(EXCLUDE) \
>         --delete \
>         $(HOST):$(SERVER_DIR) $(LOCAL_DIR)
> 
> put:
>         rsync -azOuvihh --progress -e ssh $(EXCLUDE) \
>         $(LOCAL_DIR) $(HOST):$(SERVER_DIR)
> 
> clobber:
>         rsync -azOuvihh --progress -e ssh $(EXCLUDE) \
>         --delete \
>         $(LOCAL_DIR) $(HOST):$(SERVER_DIR)
> ------end-------
> 
> -------backup script--------
> # if files are already there, hard link
> # the last lines mark it as complete and move a soft link pointer
> rsync -zavi --progress --delete \
>   --link-dest=$BACKUP_PATH/current \
>   $SOURCE $BACKUP_PATH/backup_part_$DATE \
>   && mv $BACKUP_PATH/backup_part_$DATE $BACKUP_PATH/backup_$DATE \
>   && unlink $BACKUP_PATH/current \
>   && ln -s $BACKUP_PATH/backup_$DATE $BACKUP_PATH/current
> -------end---------
> 
> Randy
> 



-- 
Alan McKinnon
[email protected]


Reply via email to