Add init
backend config to automatically initialize restic repository
#401
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a new
init
option to the backend config. Settinginit: true
on a backend makes it so thatautorestic
will automatically initialize therestic
repository that powers that backend.This initialization is done in a lazy fashion. If the repository is already initialized nothing will happen.
The initialization process will happen when a backup is triggered through:
autorestic backup ...
autorestic cron
(the initialization happens only when the backup happens, not during each invocation of the cron handler)Note that I've updated
autorestic check
to keep its auto-init behavior but to rely on the new implementation for this PR.Checking if a repo exists is done by calling
restic cat config
as documented in https://restic.readthedocs.io/en/latest/075_scripting.html#check-if-a-repository-is-already-initialized. I chose this method over the existing method of callingrestic check
because this method performs fewer IO operations on the repository. This matters in cases where the repo is stored on a cloud platform where these IO operations turn into API calls which end up costing money for the user.