Using restic for permanent archival purposes? Workflow?

I’ve been using restic backups for my various hosts with good success. I have a set of files that I would like to archive permanently and I’m curious if this is something I should do in restic and if so what a recommended workflow might look like.

An example of files I would like to backup:

/home/$USER/foo.tgz
/tank/google_takeout_20240101.tgz
/home/$USER/email_archive_20240102.tgz
/tank/docs/2016.tgz

Also for reference, this is what my current restic backup script looks like (run once per hour or per day depending on host):

/usr/bin/restic backup -q -x --exclude-caches --exclude-file /.resticignore $backup_paths \
&& /usr/bin/restic forget -q --keep-daily 7 --keep-weekly 8 --keep-monthly 24 --keep-yearly unlimited --host "$HOSTNAME" --prune \
&& /usr/bin/restic prune

I think if I were to use rclone, I would create an encrypted target and just incrementally add files to it and then rclone sync this around for redundancy. Personally I think this is relatively clean and simple in that all of your archived files are in a single “snapshot” and organized separately in rclone which could be different from the source path used as I think is forced in restic.

Some considerations for using restic for one-shot archival purposes:

  1. Does it make sense to use a separate repo for archival only? It could be the case that some of the files I want to archive may be already included in my host backup repos so dedup is a consideration?
  2. If I don’t make it a separate repo, then I will have archival snapshots containing perhaps 1 single file littered about my snapshots which may also make it more difficult to visualize given periodic snapshots from 3+ hosts already.
  3. Snapshot merging apparently isn’t supported in restic so indeed I believe I will end up with many separate snapshots.
  4. Is it possible to backup files and rewrite their paths so for example my snapshots could force all files irrespective of their source paths to be in say /?
  5. How can I 100% prevent their accidental auto pruning based on lifetime? I use --keep-yearly unlimited to prevent any sort of auto pruning but not sure if this is the recommended way of doing it.

Thanks!

I think as soon as you talk “permanent archive” you should not use any solution that can (by accident, because of a bug etc.) modify data or corrupt it.

Either copy data to long duration optical disc, tape where you can lock future writes or online storage with object locking (S3 support it). And of course you need multiple copies - on two different media etc. Keep it simple - tar with password is probably good way. restic might be not available in 20 years time…

Any point you talk about rules out treating it as a permanent archive IMO.

1 Like

The repository of restic is currently not designed for long term storage purposes, in particular there is no builtin data redundancy.