20.3. Backup and restore
20.3.1. Default backup destination
NextGIS Web Docker configuration provides default destination for created
backup files. By default it is located in /opt/ngw/backup
directory
and mounted as docker volume. So if the file name for the backup is not
specified, it is automatically created in this directory. Since directory
/opt/ngw
is used by default, the archive path will look like
backup/some-filename-with-extension
.
20.3.2. Offline backups with archivist
NextGIS Web Docker stores all data inside docker volumes. For convenient
data backup, the package provides archivist
tool that copies all from
volumes the data to a file.
Since files can be modified during copying, this tool only works in offline mode. All services modifying files must be stopped before copying.
Technically an archive created using archivist
is a GNU Tar archive
compressed using the zstandard library with default extension .tar.zst
.
The archive contains data from all components and services, including
PostgreSQL data and NextGIS Web file storage.
Warning
Remember to stop all services before doing backup. Otherwise the resulting file cannot be restored.
20.3.2.1. Backup
Stop all services before you begin:
$ docker-compose stop
Stopping ngwdocker_app_1 ... done
Stopping ngwdocker_postgres_1 ... done
And make sure that there are no active containers - state of all
containers must be Exit
:
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------
ngwdocker_app_1 /opt/ngw/bin/docker-entryp ... Exit 137
ngwdocker_postgres_1 docker-entrypoint postgres Exit 0
Now create backup with default filename:
$ docker-compose run --rm archivist backup
backup/archivist-20200217-230615.tar.zst
In case backup directory is mounted as bind mount (not as docker volume)
resulting file is located under backup/
directory. You can use scp or any
other utility upload file to another host:
$ scp backup/archivist-20200217-230615.tar.zst example.com:/remote/directory
In case of docker volume you can also copy this file to another host via ssh
or any other tool such as s3cmd put
:
$ docker-compose run --rm archivist cat backup/archivist-20200217-230615.tar.zst | \
> ssh user@example.com 'cat > archivist-20200217-230615.tar.zst'
Start all services again:
$ docker-compose start
20.3.2.2. Restore
Stop all services before you begin:
$ docker-compose stop
Restore archive:
$ docker-compose run --rm archivist restore backup/archivist-20200217-230615.tar.zst
Start all services again:
$ docker-compose start
20.3.3. Online backups with nextgisweb
NextGIS Web also provides backup tool that can be used online without stopping services. Further information on this tool is available in the NextGIS Web documentation. Aspects specific to NextGIS Web Docker are listed below.
20.3.3.1. Backup
To create a backup with default filename, run the command:
$ docker-compose run --rm app nextgisweb backup
( A lot of debug messages here )
backup/nextgisweb-20200220-164818.ngwbackup
In case backup directory is mounted as bind mount (not as docker volume)
resulting file is located under backup/
directory. You can use scp
or
any other utility upload file to another host:
$ scp backup/nextgisweb-20200220-164818.ngwbackup example.com:/remote/directory
20.3.3.2. Restore
Stop all services before you begin:
$ docker-compose stop
Restore archive:
$ docker-compose run --rm app nextgisweb restore FILENAME
Start all services again:
$ docker-compose start