Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages in full color showing how to combine Symfony with Docker, APIs, queues & async tasks, Webpack, Single-Page Applications, etc.

Buy printed version

Snapshots

Snapshots

A snapshot is a complete backup of an environment, including all persistent data from running services and files stored in mounted volumes.

Snapshots and Restore

Snapshots can be created with the following command:

1
$ symfony env:snapshot:create

Caution

Triggering a snapshot causes a momentary pause in site availability so that all requests can complete, allowing the snapshot to be taken against a known consistent state. The total interruption is usually only 1-2 seconds and any requests during that time are held temporarily, not dropped.

Use snapshot IDs via symfony env:snapshots to restore them:

1
2
$ symfony env:snapshots
$ symfony env:snapshot:restore 92c9a4b2aa75422efb3d

Tip

It is strongly recommended to make a snapshot of the live environment before merging an environment to the live environment, or when increasing the storage space of a service.

Automated Snapshots

No snapshots are triggered automatically. You can use the env:snapshot:create command to automate snapshots, including from the application container itself via a cron task:

1
2
3
4
5
6
7
8
9
crons:
    snapshot:
        # everyday at 5AM
        spec: 0 5 * * *
        cmd: |
            # only snapshot the master environment, aka production
            if [ "$SYMFONY_BRANCH" = master ]; then
                croncape symfony env:snapshot:create --no-wait
            fi

Caution

For the command to work, you first need to set up an API authentication token.

Note

Please do not schedule more than one snapshot a day to minimize data usage.

Retention

Snapshots are guaranteed to be kept for at least 7 days.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.