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.
- Discover the Heart of India with Mera Apna Bihar - December 20, 2024
- Experience the Pulse of Bangalore with Bangalore Orbit - December 20, 2024
- Discover the City of Lakes with Bhopal Orbit - December 20, 2024