Roadmap for restic 0.17 to 0.19

The following is a rough roadmap draft for upcoming restic versions. The roadmap for restic
0.18 and 0.19 only contains the planned major features, we’ll see about the rest once we’re there.
The plan may change over time depending on newly arising issues or pull requests.

The “reduce number of … PR”
task is a wildcard task to slowly reduce the number of waiting PRs without completely
stopping the development of new features.

Restic 0.17

The current state is tracked at Restic 0.17 roadmap · GitHub

  • Feature flags #4601 + initial deprecations #4602
  • Restore inplace support #4575
  • Backup stats #693
  • Network connection timeouts #4193
  • Incremental prune #3806
    • index pruning as a scan over all index files
    • prune memory optimization #4354
  • Reduce number of pre-0.16.0 PR to 25-30
    • S3 AWS Assume Role #4474
    • Extended options for Windows VSS #3067
    • Add retries flag #2515
    • Forget with keeping unknown tag #4568
  • Repository refactoring
    • Drop CleanupHandlers and always use context cancellation
    • Refactor locking code into internal/repository + Readonly(accepts --no-lock)/Append-only/Remove(exclusive) mode
    • Ensure that only internal/repository can write/delete unpacked files other than snapshots

Restic 0.18

  • Support for large directories #2446 + #3583
    • efficient handling of very large files / xattrs #3643
  • limited variant of --strip-prefix ... #2092
  • Start concurrent prune discussion #1141
  • Reduce number of pre-0.17.0 PRs to 20-25
    • Only store device ID for hardlinks #4006
    • check with in-place cache #3747
    • reconnect SFTP #4058

Restic 0.19

  • Non-blocking prune #1141
    • refactor prune into repository, prevent delete/write that bypass the repository struct
    • prune with little additional temporary storage if possible
    • blast radius reduction
    • automatic removal of stale locks #2736
  • Reduce number of pre-0.18.0 PRs to 15-20
    • Support .gitignore #4227
24 Likes

Not knowing that restic 0.16.3 (great program, btw!) doesn’t do ‘inplace’ restore, I just did that a week ago. And for what I experienced, it worked. So, what am I missing? What did really happen when I restored /opt/local with restore -t / (as root)? It seems to have just worked.

There are some corner cases like readonly folders that cause problems; overwriting symlinks was only fixed a few releases ago. The main improvement for inplace restores will however be the support for resuming restores.

4 Likes

The roadmap part for restic 0.17 is now tracked at Restic 0.17 roadmap · GitHub .

The roadmap for restic 0.18 is now tracked at Restic 0.18 roadmap · GitHub . Given that the development for restic 0.17.0 took so long, we might end up splitting restic 0.18.0 into two smaller releases.

1 Like

Any chance that 4276 - Implemented a web server to browse a repository gets into the “0.18 roadmap”?

It would be great if “proper handling of sparse files” could be added to the roadmap as well.

Sparse files are a big weakness of Restic currently IMHO.


Could you please explain a bit why it is a BIG weakness?

--sparse flag will indeed as per docs:

Note that the exact location of the holes can differ from those in the original file, as their location is determined while restoring and is not stored explicitly.

does not restore exact sparse “format” but I am very curious what real life problem it causes? As if it is important than maybe it makes sense to prioritize it above some other issue. Or it is mostly “cosmetic”…

--sparse flag will indeed as per docs

During the backup, Restic does not store information about the “sparseness of a file” (such as how many “holes” it has). As a result, Restic is not able to restore sparse files to their original state. In fact, by default, Restic will restore sparse files as “normal” files (with inflated “on disk” sizes). The --sparse option applies to all files (even files that were not sparse before). If you run a restore with that option, all files could be restored as sparse files (which is bad).

Most users who have restored a backup with sparse files probably have experienced the “size surprise” … (or maybe even the “out of disk” surprise?).

PS

Duplicacy (also a deduplication backup tool) handles sparse files correctly.

How is it bad exactly, in practice?

Yes it would be nice if restic can preserve as much info and structure about files as possible including “sparseness of a file”,

but at least myself I do not see it as critical or very important. Unlike for example extended attributes preservation. Because latter leads to information loss.

I think I have few programs using sparse files - after restoring from restic backup they will work perfectly fine regardless if I remember about --sparse flag or not. As for the unexpected files becoming sparse - it is almost benefit:) saving me some disk space. Overall I do not think that it matters much for my (maybe minority) case.

Of course I can imagine some cases where people use some software which creates many large (exceeding real free disk space) sparse files. This is exactly where --sparse flag becomes handy.

Maybe it should be default for safety? But this is different story.

Overall I am saying that it is “would be nice to have” restic feature but by no means it is “must have”. So should be prioritised accordingly:)

The Restic developers will never make this option default, because having too many sparse files in a filesystem is bad for performance.

So should be prioritised accordingly

All I asked is to put it on the roadmap. I did not demand “it has to be in 0.17.5” asap :grinning: Just put in on the 0.19 milestone (which will probably be completed two to three years from now, based on the release history). Or on 0.20 …

In the meantime, I will be using Duplicacy for folders that contain sparse files.

I’m currently rather hesitant to add anything further to the roadmap for now. There’s already enough queued for 0.18 to probably require two releases and 0.19 also has the chance to spiral out of control.

Planning any further would require taking a look what other feature have also been asked for. But it’s too early to do that now.

A post was split to a new topic: Identifying Snapshots