Create dumpfiles to backup a subversion repository.
svn-backup-dumps <repos> <dumpdir>
svn-backup-dumps creates dumpfiles from a subversion repository. It is intended for use in cron jobs and post-commit hooks.
The basic modes of operation are:
Create a full dump (revisions 0 to HEAD)
Create incremental dump containing at most N revisions.
Create incremental single-revision dumps (for use in post-commit).
Dumpfiles are named in the format basename.rev.svndmp or basename.rev.rev.svndmp, where basename is the repository directory name, and the rev arguments are the first and last revision numbers represented in the dumpfile, zero-padded to 6 digits.
Optionally, svn-backup-dumps can compress dumpfiles with gzip or bzip2, and can transfer them to another host using FTP or SMB (using smbclient).
--version
Show program's version number and exit.
-h, --help
Show this help message and exit.
-b
Compress the dump using bzip2.
--deltas
This is passed through to svnadmin dump.
-c count
Maximum number of revisions per dumpfile.
-o
Overwrite files.
-O
Overwrite all files.
-q
Quiet.
-r rev
Specify a single-revision dumpfile.
-t ftp:host:user:password:path
-t smb:share:user:password:path
Transfer dumps to another machine using the FTP or SMB protocols. path is where to store the dumpfiles on the remote server; any occurrence of %r in the path is replaced by the repository name. Support for "smb:" requires the smbclient program.
-z
Compress the dump using gzip.
To create a full dump of all revisions of a repository /srv/svn/foo in the directory /var/backup/svn:
svn-backup-dumps /srv/svn/foo /var/backup/svn
The dumpfile will be named src.000000-NNNNNN.svndmp.gz where NNNNNN is the head revision number.
To create incremental dumps containing at most 1000 revisions:
svn-backup-dumps --deltas -z -c 1000 /srv/svn/foo /var/backup/svn
If the youngest revision is 2923, it creates the following files:
foo.000000-000999.svndmp.gz
foo.001000-001999.svndmp.gz
foo.002000-002923.svndmp.gz
If run again, later, when the youngest revision is 3045, it creates these two files:
foo.002000-002999.svndmp.gz
foo.003000-003045.svndmp.gz
Note that it does not remove the redundant file foo.002000-002923.svndmp.gz.
To create incremental single-revision dumps from a post-commit hook:
svn-backup-dumps -r $rev $repos /var/backups/svn
where $rev and $repos are variables previously set in the post-commit script from its command line. The dumpfile name will be in the form foo.000352.svndmp.
To send the dumpfiles to the SMB share \\\\ERNEST\\BACKUPS in a directory \\svn\\foo with user svnuser and password w0rth1ng:
svn-backup-dumps -t "smb://ERNEST/BACKUPS:svnuser:w0rth1ng:svn/%r /srv/svn/foo /tmp/tmpbackup
Note that the %r in the path is replaced by the repository name foo. Note also that a local backup directory is required, at present, even when using the -t option.
Voluntary contributions made by many individuals. Copyright © 2006 CollabNet.