Backup and Restore¶
“The condition of any backup is unknown until a restore is attempted.” Schrödinger’s Backup
To snapshot an instance of RhodeCode Enterprise, and save its settings, you need to backup the following parts of the system at the same time.
- The repositories managed by the instance together with the stored Gists.
- The RhodeCode Enterprise database.
- Any configuration files or extensions that you’ve configured. In most
cases it’s only the
- Installer files such as those in /opt/rhodecode can be backed-up, however it’s not required since in case of a recovery installer simply re-creates those.
Ideally you should script all of these functions so that it creates a backup snapshot of your system at a particular timestamp and then run that script regularly.
To backup the relevant parts of RhodeCode Enterprise required to restore your system, use the information in this section to identify what is important to you.
To back up your repositories, use the API to get a list of all repositories managed, and then clone them to your backup location. This is the most safe backup option. Backing up the storage directory could potentially result in a backup of partially committed files or commits. (Backup taking place during a big push) As an alternative you could use a rsync or simple cp commands if you can ensure your instance is only in read-only mode or stopped at the moment.
get_repos method to list all your managed repositories,
and use the
clone_uri information that is returned. See the API Documentation
for more information. Be sure to keep the structure or repositories with their
This will not work for Subversion repositories. Currently the only way to back up your Subversion repositories is to make a copy of them.
It is also important to note, that you can only restore the Subversion repositories using the same version as they were saved with.
The instance database contains all the RhodeCode Enterprise permissions settings, and user management information. To backup your database, export it using the following appropriate example, and then move it to your backup location:
# For MySQL DBs $ mysqldump -u <uname> -p <pass> rhodecode_db_name > mysql-db-backup # MySQL restore command $ mysql -u <uname> -p <pass> rhodecode_db_name < mysql-db-backup # For PostgreSQL DBs $ PGPASSWORD=<pass> pg_dump --inserts -U <uname> -h localhost rhodecode_db_name > postgresql-db-backup # PosgreSQL restore $ PGPASSWORD=<pass> psql -U <uname> -h localhost -d rhodecode_db_name -1 -f postgresql-db-backup # For SQLite $ sqlite3 rhodecode.db ‘.dump’ > sqlite-db-backup # SQLite restore $ copy sqlite-db-backup rhodecode.db
The default RhodeCode Enterprise SQLite database location is
If running MySQL or PostgreSQL databases, you will have configured these separately, for more information see Supported Databases
Configuration File Backup¶
Depending on your setup, you could have a number of configuration files that should be backed up. You may have some, or all of the configuration files listed in the Configuration Files section. Ideally you should back these up at the same time as the database and repositories. It really depends on if you need the configuration file like logs, custom modules. We always recommend backing those up.
To backup the gists on your RhodeCode Enterprise instance you usually have to backup the
gist storage path. If this haven’t been changed it’s located inside
.rc_gist_store and the metadata in
You can use the
get_gists API methods to fetch the
gists for each user on the instance.
You should also backup any extensions added in the
To restore an instance of RhodeCode Enterprise from its backed up components, to a fresh system use the following steps.
- Install a new instance of RhodeCode Enterprise using sqlite option as database.
- Restore your database.
- Once installed, replace you backed up the
rhodecode.iniwith your backup version. Ensure this file points to the restored database, see the Make Database Changes section.
- Restart RhodeCode Enterprise and remap and rescan your repositories to verify filesystem access, see the Remap and Rescan Repositories section.
Post Restoration Steps¶
Once you have restored your RhodeCode Enterprise instance to basic functionality, you can then work on restoring any specific setup changes you had made.
- To recreate the RhodeCode Enterprise index, use the backed up
search_mapping.inifile if you had made changes and rerun the indexer. See the Full-text Search section for details.
- To reconfigure any extensions, copy the backed up extensions into the
/home/user/.rccontrol/instance-id/rcextensionsand also specify any custom hooks if necessary. See the Extensions & Hooks section for details.