What is it?
A Perl cron script that creates and rotates backups of one or more Subversion repositories.
What does it do?
- Verifies repositories (svnadmin verify)
- Hot copies -or- dumps repositories (uses svnadmin hotcopy -or- svnadmin dump)
- Archives all repositories to a single tar file
- Gzips tar file
- Backup rotation
Other Features
- Email notifications
- Nice output
- Free
Requirements
Operating System: *nix
Perl (5.8.5 or higher)
Subversion
tar
gzip
Proc::Reliable
MIME::Lite
Math::Round
Configure

svnbak.pl Configuration Section
At the top of svnbak.pl is a "Configuration Section" that you must add specific information to in order for the script to work.
- reposDir: full path to your Subversion repository, or the parent directory of all your repositories.
- destDir: full path to the directory where the backups should be saved. To save backups to a network file system, first mount the file system, then specify the mounted path.
- maxBaks: maximum number of backups to retain. Once this limit is reached, the script will automatically remove the oldest backup based on it's last modified time.
- svnBakMethod: type of Subversion backup to create ('hotcopy' or 'dump').
- tarballName: the name of the backup file. Each backup file will be appended with a 14 digit time stamp to preserve singularity.
- tmpDir: full path to a new temporary directory to store files before tarballing. This directory should not be an existing directory - it will be deleted!
- emailPref: when the admin should receive emails ('always', 'errors', 'none').
- displayTime: display execution time in seconds, per task.
Change Log
0.0.7 - 20100209
- fixed failure of external commands running longer than 60 seconds
0.0.6 - 20091116
- fixed fatal error when backing up a single repository
- destination directory is created if it does not already exist
- changed elapsed time format: 'seconds' -> 's'
0.0.5 - 20090326
- added backup option of dumping repositories via svnadmin dump
- increased error checking
- fixed: some repositories skipped when there was a large number of repositories
0.0.1 - 20090108
- initial release


It is working. thanks for the script.
But i am also looking for a way to backup (scp) to remote server for offside. is there anyway we can add to the script?
Thanks
@Leap-
Sure an SCP command could easily be added to this script. If I were you, I'd add it to the "if gzip successful" code block at Line 344 (v0.0.7).
Since SCP uses SSH, another option would be to mount the remote filesystem using SSHFS (ie: /mnt/remoteserver). Once mounted, just set the "destDir" config option to the directory on the remote server (ie /mnt/remoteserver/path/to/destination/directory).
It is working for the scp to remote server. thanks so much.
But the email is not working. do you have any detail instruction to configure email.
Thanks again
@Leap I typically use Postfix. Check out: http://www.zulius.com/how-to/set-up-postfix-with-a-remote-smtp-relay-host/
How about incremental backup?
Thanks
@Leap - incremental backup isn't implemented. Admittedly, that would be a nice feature (I believe "svnadmin dump" even has an incremental flag).