We are running Bamboo and Postgres on the same Linux server. We are taking snapshots of the whole machine multiple times a day as backups (and possibly restore in case of a failure) Is this a sufficiently good practice? Should we worry that the snapshot will happen in the middle of a DB write and therefore will leave the DB in an inconsistent state?
Should we also do an export from Bamboo periodically? The only expected downtime for Bamboo is early hours on Sunday (so maybe not frequent enough).
from my own experience the PostgreSQL backups are done best using stock backup techniques of PostgreSQL. This way the database is agnostic to what it is serving (PostgreSQL just 'don't care' if there is a Bamboo, a Jira or something else stored in it).
For this, you can simply refer to PostgreSQL documentation - nothing special.
With snapshot it depends - they have to produce a consistent output, yes - best is to do several test restores on a non-production environment to check if they are done correctly.
Last but not least you can do backups from Bamboo within (via Application). For that kind of approach I will link the documentation on this for you: