Backup guide

Instructions on how to backup CVAT data with Docker.

About CVAT data volumes

Docker volumes are used to store all CVAT data:

  • cvat_db: PostgreSQL database files, used to store information about users, tasks, projects, annotations, etc.Mounted intocvat_db container by/var/lib/postgresql/data path.

  • cvat_data: used to store uploaded and prepared media data.Mounted intocvat container by/home/django/data path.

  • cvat_keys: used to store theDjango secret key.Mounted intocvat container by/home/django/keys path.

  • cvat_logs: used to store logs of CVAT backend processes managed by the supervisord service.Mounted intocvat container by/home/django/logs path.

  • cvat_events_db: this volume is used to store Clickhouse database files.Mounted intocvat_clickhouse container by/var/lib/clickhouse path.

How to backup all CVAT data

All CVAT containers should be stopped before backup:

docker compose stop

Please don’t forget to include all the compose config files that were used in thedocker compose commandusing the-f parameter.

Backup data:

mkdir backupdocker run --rm --name temp_backup --volumes-from cvat_db -v$(pwd)/backup:/backup ubuntu tar -czvf /backup/cvat_db.tar.gz /var/lib/postgresql/datadocker run --rm --name temp_backup --volumes-from cvat_server -v$(pwd)/backup:/backup ubuntu tar -czvf /backup/cvat_data.tar.gz /home/django/datadocker run --rm --name temp_backup --volumes-from cvat_clickhouse -v$(pwd)/backup:/backup ubuntu tar -czvf /backup/cvat_events_db.tar.gz /var/lib/clickhouse

Make sure the backup archives have been created, the output ofls backup command should look like this:

ls backupcvat_data.tar.gz  cvat_db.tar.gz  cvat_events_db.tar.gz

How to restore CVAT from backup

Warning: use exactly the same CVAT version to restore DB. Otherwiseit will not work because between CVAT releases the layout of DB can bechanged. You always can upgrade CVAT later. It will take care to migrateyour data properly internally.

Note: CVAT containers must exist (if no, please follow theinstallation guide).Stop all CVAT containers:

docker compose stop

Restore data:

cd <path_to_backup_folder>docker run --rm --name temp_backup --volumes-from cvat_db -v$(pwd):/backup ubuntu bash -c"cd /var/lib/postgresql/data && tar -xvf /backup/cvat_db.tar.gz --strip 4"docker run --rm --name temp_backup --volumes-from cvat_server -v$(pwd):/backup ubuntu bash -c"cd /home/django/data && tar -xvf /backup/cvat_data.tar.gz --strip 3"docker run --rm --name temp_backup --volumes-from cvat_clickhouse -v$(pwd):/backup ubuntu bash -c"cd /var/lib/clickhouse && tar -xvf /backup/cvat_events_db.tar.gz --strip 3"

After that run CVAT as usual:

docker compose up -d

Additional resources

Docker guide about volume backups