SVN Server Backup and Restore Guide and Tutorials

Backup a local SVN repository over a SSH Console

The backup is done on the SSH console by using the SVN dump command specifying a file into which should be saved.

$ svnadmin dump /path/to/repository > svnexport.dump

The created file svnexport.dump now contains the complete repository with all revisions.
Please note that no hooks are secured with this SVN backup. These are located in the folder / PathToRepository / hooks and should be saved manually.

How to restore a local SVN repository by a SSH Console

The import of the dump file is just as easy, but of course must be a existing repository. If the SVN repository is not yet available use svnadmin create /path/to/repository.
Furthermore, it does not have to be imported in the same SVN repository path as the path from which the SVN repository was exported.

$ svnadmin load /path/to/repository < svnexport.dump

Compressed SVN Dump and Restore

As usually the dumps can be very large files, it is advisable to compress the dump. This can be done in a simple line at the command shell and this saves typically more than 50% of disk space.

svnadmin dump /path/to/repository | gzip -9 > svnexport.dump

The restore of a gzip compressed SVN repository is also possible as a simple one-liner.

gunzip -c svnexport.dump | svnadmin load /path/to/repository

Backup a Remote SVN Repository

Backing up is also done on a console using SSH svnrdump.
All you need is the URL of the repository, and as before, the file name for the dump.

svnrdump dump http://domain.tld/repo > svnexport.dump

If you need to authenticate with user and password against your SVN repository, use this command.

svnrdump dump http://domain.tld/repo > svnexport.dump --username admin --password admin --non-interactive

The created file svnexport.dump now contains all the repository revisions.
The remote SVN export is only possible with remote SVN servers from version 1.4!

Restore remote SVN repository

The import of the dump file is just as easy, but of course it must be existing repository.
For remote import into a SVN server, at least SVN server version 1.7 is required.

svnrdump load http://domain.tld/repo < svnexport.dump
# or, if the username and password are required
svnrdump load http://domain.tld/repo < svnexport.dump --username admin --password admin --non-interactive

In the best case will now start the import and all is well.
But in 99.99% of all cases you obtained now this error:

svnrdump: E175002: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svnrdump: E175008: At least one property change failed; repository is unchanged
svnrdump: E175002: Error setting property 'rdump-lock':
Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook

In this case, the target SVN repository hook ‘pre-revprop-change’ must be installed.
This is of course only possible if you have access to the file system at the target.
In the Hook directory the executable file pre-revprop-change with Exit 0 have to be created.
Use the following one-liner to create the hook script and make it executable.

printf '#!/bin/sh\nexit 0' > /path/to/repository/hooks/pre-revprop-change && chmod +x /path/to/repository/hooks/pre-revprop-change

Now the remote SVN import should work without any problem.

Rajesh Kumar
Follow me
Latest posts by Rajesh Kumar (see all)
Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x