> For the complete documentation index, see [llms.txt](https://mp-access.gitbook.io/access/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mp-access.gitbook.io/access/operations/backups.md).

# Backups

## MongoDB

#### Create Backup

```bash
# ./scripts/backup-mongo.sh <backup filename prefix> <destinationfolder>

./scripts/backup-mongo.sh mongo backups/
```

#### Restore from Backup

```bash
# ./scripts/restore-mongo-backups.sh <Relative path to backup file>. 
# Expected structure inside backup folder mongo-xxx/access/
# info1-mngr@inforecover-exercises:~/backup/mongodump/access$ ls -l
# total 252256
# -rw-r--r-- 1 ... ... 258302988 Oct 23 18:28 studentSubmissions.bson
# -rw-r--r-- 1 ... ...       173 Oct 23 18:28 studentSubmissions.metadata.json

./scripts/backup-mongo.sh <backup filename prefix> <folder where to place backups
```

## Postgres

#### Create Backup

```bash
# ./scripts/backup-postgres.sh <backup filename prefix> <folder where to place backups>

./scripts/backup-postgres.sh dump backups/
```

#### Restore from Backup

```bash
# stop postgres and keycloak
docker-compose stop keycloak && docker-compose stop postgres

# remove any database files
rm -rf volumes/postgres/data/db/*

# restart postgres
docker-compose start postgres

# restore from backup
# ./scripts/restore-postgres-backups.sh <Relative path to backup file>
./scripts/restore-postgres-backups.sh backups/dump-2019-09-26_21_22_20.sql

# restart keycloak
docker-compose start keycloak
```

{% hint style="info" %}
If no root access, do the following for the 'remove any database files' step:

```
docker-compose exec postgres bash
rm -rf /var/lib/postgresql/data/*

# Exit container ctrl+d
docker-compose restart postgres
```

{% endhint %}
