# How to backup MetalSoft MetalSoft's Global Controller stores all data. The Site controller is stateless and its configuration can be regenerated and does not need any backup. b The Global controller uses two databases that need to be backed up, the rest of containers are stateless and can be re-deployed. Both databases run inside docker containers. * MySQL * CouchDB ## Enabling the automatic backup of the databases MetalSoft provides a script to perform the backup automatically as part of a cron job, available [on github](https://github.com/metalsoft-io/scripts/blob/main/helper-scripts/cron_metalsoft_backup_dbs). The script also supports the signing and shipping of the backup files to a remote location. To use it: 1. Create the destination folder is created and writable by the user ``` mkdir {{backup_folder}}DR/ ``` 2. Add it to the CRON of one of the head nodes of the kubernetes system: ``` 52 * * * * /usr/local/bin/cron_metalsoft_backup_dbs -u administrator -s 172.17.83.141 -d {{backup_folder}}DR/ ``` ## Parameters for the backup script The script can be invoked manually as well: ``` ./test.sh --help Usage: ./test.sh -e environment_namespace Available parameters: -e | -n = [required] environment namespace -k = kubectl command to use -l = Location of Backup Folder for all backups (default: {{backup_folder}}) -g = GPG email to use for signing the backup (check gpg --list-keys) PG_PASS env variable can be used to specify the GPG passphrase GPG_PASS_FILE env variable can be used to specify the GPG passphrase-file -s = ssh host to rsync to -p = ssh port (default: 22) -u = ssh user (default: root) -d = ssh destination ```