Skip to content

Feature request: Lock snapshots #891

@grisu48

Description

@grisu48

It would be great being able to "lock" snapshots to prevent them from accidental deletion

User story

Before larger TW updated I typically create manual snapshots. This has saved me a couple of times in the past already.
However over time, the number of snapshots might get confusing and very large, so one is required to delete a whole range of them.

e.g.

   # | Type   | Pre # | Date                     | User | Used Space | Cleanup | Description                            | Userdata     
-----+--------+-------+--------------------------+------+------------+---------+----------------------------------------+--------------
  0  | single |       |                          | root |            |         | current                                |              
  1* | single |       | Tue Nov  7 14:02:39 2023 | root |  16.00 KiB |         | first root filesystem                  |              
  3  | single |       | Tue Nov  7 14:23:38 2023 | root |   4.76 GiB |         | Fresh                                  |              
101  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
102  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
109  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
111  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
124  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
131  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
142  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
156  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
159  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
161  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
163  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
191  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
199  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
201  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
289  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
301  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
305  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
310  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
321  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
333  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
339  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
342  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
352  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
362  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
372  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
389  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
399  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
405  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
409  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
411  | single |       | Tue Nov  7 14:23:38 2023 | root |   X.XX GiB |         | TW snapshot                            |              
605  | single |       | Wed Feb  7 10:52:55 2024 | root |   7.02 GiB |         | TW 20240205 on 2024-02-07              |              
665  | single |       | Thu Mar 14 09:21:15 2024 | root |   3.02 GiB |         | Before Plasma6                         |              
681  | pre    |       | Mon Mar 25 08:30:23 2024 | root |  38.25 MiB | number  | zypp(zypper)                           | important=yes
682  | post   |   281 | Mon Mar 25 08:30:38 2024 | root |  73.91 MiB | number  |                                        | important=yes
693  | pre    |       | Thu Mar 28 08:23:14 2024 | root | 567.48 MiB | number  | zypp(zypper)                           | important=yes
694  | post   |   293 | Thu Mar 28 08:29:58 2024 | root |   7.80 MiB | number  |                                        | important=yes
695  | single |       | Thu Mar 28 14:42:11 2024 | root |  11.27 MiB |         | TW 20240326 on 2024-03-28 with Plasma6 |              
696  | pre    |       | Tue Apr  2 07:52:02 2024 | root | 181.45 MiB | number  | zypp(zypper)                           | important=yes
697  | post   |   296 | Tue Apr  2 08:47:10 2024 | root |  14.96 MiB | number  |                                        | important=yes
698  | single |       | Tue Apr  2 08:52:47 2024 | root |  16.00 KiB |         | TW 20240329 - after libzma vuln        |     

Here at some point it becomes natural to just run a snapper rm 101-411. It could be however that one of those snapshots is important, and I want to lock if to prevent accidental deletion.

The approach of setting important=yes in userdata appears as too weak for this use case. There should be a harder policy, that really doesn't allow the user to delete a snapshot unless it is explicitly unlocked before.

Desired outcome

Here, let's assume snapshot 321 is important because of reasons. I propose a feature that allows the user to lock a snapshot, e.g.

# snapper lock 321

and then

# snapper rm 101-411
error: Snapshot 321 is locked

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions