lxc export gets you a tarball you can put on a USB drive or ship to a backup server.
lxc snapshot uses the filesystem to create a copy-on-write snapshot of the data.
If you care about a container, having an automatic snapshot policy configured (snapshot schedule and snapshot expiry properties) is a must. That will let you recover from any accidental data deletion in the container, failed upgrades, …
This however doesn’t save you from something bad happening to your LXD host.
If the host drive gets corrupted, then snapshots won’t help you recover your containers.
To prevent this kind of issue you have two options:
lxc export once a day or once a week and ship the resulting tarballs to an external system, backup server, external hard drive, whatever…
- Use a second LXD server and send incremental container updates to it. You can do that with
lxc copy CTN destination:CTN --refresh. It will sync the snapshots and container state to the remote server so that should the local server die, you can easily start them back up on that other system, or copy/move them elsewhere.