I have been testing some apps and made various backups (on local storage, the node itself) and now I want to delete these obsolete backups. There are also some faulty backups (not trusted) that I want to remove, so they can not be restored.
I fear that this is only possible via the console, so far.
You need access to restic, so if it is not already there you need to install it.
You need the encryption password from your cluster.
As you are using local storage i assume the backups are located at /var/lib/containers/storage/volumes/backup00/_data
As root, cd /var/lib/containers/storage/volumes/backup00/_data
Here all modules have separate directory for backups. Inside these you see one or more directories named with a uuid (i suppose that is the module uuid). Each of these directories is a restic backup repository. Also a file with the same name exists but with a .json extension. Inside this you can find the module_id.
You can delete the entire directory for a module if you want to get rid of all snapshots for particular module.
For snapshots you can list all for the webserver for example execute restic -r webserver/<uuid> snapshots, at this point you will be asked for you encryption password. A list is presented with an id and a timestamp.
To delete a snapshot use restic -r webserver/<uuid> forget <snapshot-id>. Like restic -r webserver/2c31bdff-d0e0-414e-88fb-cddb4c57cf27 forget b4ac8ead.
To free the disk space used by the “forgot” snapshot run the prune command. Like: restic -r webserver/2c31bdff-d0e0-414e-88fb-cddb4c57cf27 prune
Warning.
Did some clean up of my backups for my webserver while i was at it.
Today my backup of the webserver failed. I did not yet find the root cause of the issue, but i suspect that it is related to the cleaning yesterday. Backup of other modules seems to be fine.
I only have a few log messages to work with:
rclone: 2025/07/24 10:55:10 ERROR : index/a67ddcaa12e1a6d68207b40a142662377c33a9be3c0cbf4ca4d4b47efaf043d2: Didn't finish writing GET request (wrote 0/3075 bytes): unexpected EOF\nLoad(<index/a67ddcaa12>, 0, 0) returned error, retrying after 1m2.282507972s: Copy: unexpected EOF\nrclone: 2025/07/24 10:56:12 ERROR : index/a67ddcaa12e1a6d68207b40a142662377c33a9be3c0cbf4ca4d4b47efaf043d2: Didn't finish writing GET request (wrote 0/3075 bytes): unexpected EOF\nLoad(<index/a67ddcaa12>, 0, 0) failed: Copy: unexpected EOF\ncircuit breaker open for file <index/a67ddcaa12>\n<3>Restic restore command failed with exit code 1.\n’, ‘exit_code’: 1}
If you deleted the destination and the encryption key isn’t there anymore, you’ll need to remove the backup files and start over using a new destination.
Just wondering, are the snapshots incremental or full? Are there no dependencies between snapshots? I am asking for a full initial backup of my immich app takes 12 minutes and a nightly with very few changes is around 1 minute and 40 secs…
It is more like differential i would say. You can remove any snapshot, only unique stuff to that snapshot will be remove, i.e stiff that is not included in other snapshots.
You can read more about it in the restic docs: Removing backup snapshots