Backup and restore

Backup

The contacts are saved in Mongo database. The data files of the database are stored in /data/mongo directory on the host computer. This means that data are not lost if you remove mongo container. However, you should not back up these files by simply copying them while mongo is running unless your system provides instantaneous snapshots. To make regular backups of the database, we recommend you run the following command regularly. It will create a timestamped directory with database content inside of /data/mongo/dump which you can then backup normally.

docker exec contacts_mongo_1 mongodump -o /data/db/dump/$(date -I)

contacts_mongo_1 is the name of contacts container that was created when running docker-compose.

Besides these data you should also backup files located in /etc/acrobits.

Restore

Place your directory with backup (we will use name mybackup in this example) to into /data/mongo/dump. There should be a directory /data/mongo/dump/mybackup/contact_server/ containing several .bson files (and possibly others).

Stop container contacts_contact_server_1.

docker stop contacts_contact_server_1

And run the following commands:

docker exec -i contacts_mongo_1 mongorestore --drop /data/db/dump/mybackup

Note

If restore fails with error Failed: contact_server.contactBlock: error creating indexes for contact_server.contactBlock: createIndex error: WiredTigerIndex::insert: key too large to index run the following command and try restoring again.

echo "db.getSiblingDB('admin').runCommand( { setParameter: 1, failIndexKeyTooLong: false } )" | docker exec -i contacts_mongo_1 mongo