On 7/25/2011 11:33 PM, Andy Canfield wrote:
For your information, this is my backup script. It produces a zip file
that can be tranported to another computer. The zip file unpacks into
a repository collection, giving, for each repository, a hotcopy of the
repository and a dump of the repository. The hotcopy can be reloaded
on a computer with the same characteristics as the original server;
the dumps can be loaded onto a different computer. Comments are welcome.
The dump should use the hot copy as its source. Otherwise it may differ
from the hot copy. See my note inline.
#! /bin/bash
# requires root access
if [ ! `whoami` == root ]
then
sudo $0
exit
fi
# controlling parameters
SRCE=/data/svn
ls -ld $SRCE
DEST=/data/svnbackup
APACHE_USER=www-data
APACHE_GROUP=www-data
# Construct a new empty SVNParent repository collection
rm -rf $DEST
mkdir $DEST
chown $APACHE_USER $DEST
chgrp $APACHE_GROUP $DEST
chmod 0700 $DEST
ls -ld $DEST
# Get all the names of all the repositories
# (Also gets names of any other entry in the SVNParent directory)
cd $SRCE
ls -d1 * >/tmp/SVNBackup.tmp
# Process each repository
for REPO in `cat /tmp/SVNBackup.tmp`
do
# some things are not repositories; ignore them
if [ -d $SRCE/$REPO ]
then
# back up this repository
echo "Backing up $REPO"
# use hotcopy to get an exact copy
# that can be reloaded onto the same system
svnadmin hotcopy $SRCE/$REPO $DEST/$REPO
# use dump to get an inexact copy
# that can be reloaded anywhere
svnadmin dump $SRCE/$REPO >$DEST/$REPO.dump
svnadmin dump $DEST/$REPO >$DEST/${REPO}.dump
I generally use curly braces when punctuation is present to make sure
variable substitution occurs the way I want it.
fi
done
# Show the contents
echo "Contents of the backup:"
ls -ld $DEST/*
# zip up the result
cd $DEST
zip -r -q -y $DEST.zip .
# Talk to the user
echo "Backup is in file $DEST.zip:"
ls -ld $DEST.zip
# The file $DEST.zip can now be transported to another computer.
--
David Chapman dcchap...@acm.org
Chapman Consulting -- San Jose, CA