You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+83-81Lines changed: 83 additions & 81 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,29 +12,22 @@ This tool can approximately identify how much space will be freed when a snapsho
12
12
13
13
This tool identifies all subvolumes of a btrfs filesystem. For each subvolume all file extents which are not inline are parsed and kept. All other items are ignored.
14
14
15
-
Thus, we acquire a dictionary of chronologically ordered snapshots together with their set of file extents:
15
+
Thus, we create a tree of extents & ranges together with the snapshots that use them:
16
16
17
-
1.Snapshot 1
18
-
1.file extent 1
19
-
2.file extent 2
17
+
1.file extent 1
18
+
1.range1: [Snapshot 1, Snapshot 2]
19
+
2.range2: [Snapshot 3]
20
20
3. ...
21
-
4. file extent n
22
-
2. Snapshot 2
23
-
1. file extent 1
24
-
2. file extent 2
25
-
3. ...
26
-
4. file extent n
27
-
3. Snapshot n
28
-
1. ...
29
-
30
-
Now, the actual disk size of Snapshot 1 is the size of the extents of snapshot 1 minus the common extents with snapshot 2. (Set(Snapshot1) - Set(Snapshot2))
31
-
The actual disk size of Snapshot 2 is the size of the extents of snapshot 2 minus the common extents with snapshot 1 minus the common extents with snapshot 3. (Set(Snapshot2) - Set(Snapshot1)) - Set(Snapshot3)
21
+
2. file extent 2
22
+
3. range1: [...]
23
+
4. range2: [...]
32
24
25
+
Now, the actual disk size of Snapshot 1 can be extracted from each file extent
33
26
## Usage:
34
27
35
28
[python-btrfs](https://github.com/knorrie/python-btrfs) must be installed.
36
29
37
-
`subvolume.py /path/to/btrfs <subvolume id to ignore1> <subvolume id to ignore2> ...`
30
+
`subvolume.py -r <root tree, default 5> /path/to/btrfs/ <subvolume id to ignore1> <subvolume id to ignore2>`
38
31
39
32
You can find suvolume ids by using:
40
33
`btrfs subvolume list /path/to/btrfs`
@@ -44,90 +37,99 @@ You can find suvolume ids by using:
44
37
`btrfs subvolume list /path/to/btrfs`:
45
38
46
39
```
47
-
ID 258 gen 14468 top level 5 path mydata
48
-
ID 259 gen 14467 top level 5 path subvol_snapshots
40
+
ID 258 gen 15649 top level 5 path mydata
41
+
ID 259 gen 15651 top level 5 path subvol_snapshots
49
42
ID 1949 gen 3785 top level 259 path subvol_snapshots/283/snapshot
50
43
ID 2133 gen 5080 top level 259 path subvol_snapshots/435/snapshot
51
44
ID 2395 gen 6616 top level 259 path subvol_snapshots/660/snapshot
52
-
ID 2577 gen 8480 top level 259 path subvol_snapshots/783/snapshot
53
45
ID 2694 gen 8781 top level 259 path subvol_snapshots/888/snapshot
54
46
ID 3661 gen 10830 top level 259 path subvol_snapshots/1126/snapshot
55
-
ID 3764 gen 11594 top level 259 path subvol_snapshots/1189/snapshot
56
47
ID 3818 gen 11948 top level 259 path subvol_snapshots/1228/snapshot
57
-
ID 3857 gen 12035 top level 259 path subvol_snapshots/1258/snapshot
58
-
ID 3864 gen 12070 top level 259 path subvol_snapshots/1265/snapshot
59
48
ID 3887 gen 12351 top level 259 path subvol_snapshots/1285/snapshot
60
-
ID 3900 gen 12404 top level 259 path subvol_snapshots/1298/snapshot
61
-
ID 3913 gen 12505 top level 259 path subvol_snapshots/1311/snapshot
62
-
ID 3923 gen 12557 top level 259 path subvol_snapshots/1320/snapshot
63
49
ID 3942 gen 12628 top level 259 path subvol_snapshots/1333/snapshot
64
-
ID 3974 gen 13105 top level 259 path subvol_snapshots/1362/snapshot
65
50
ID 4040 gen 13778 top level 259 path subvol_snapshots/1412/snapshot
66
-
ID 4046 gen 13778 top level 259 path subvol_snapshots/1417/snapshot
67
51
ID 4072 gen 13778 top level 259 path subvol_snapshots/1438/snapshot
68
52
ID 4091 gen 13778 top level 259 path subvol_snapshots/1452/snapshot
69
53
ID 4130 gen 13853 top level 259 path subvol_snapshots/1477/snapshot
70
-
ID 4166 gen 14444 top level 259 path subvol_snapshots/1509/snapshot
71
-
ID 4175 gen 14444 top level 259 path subvol_snapshots/1517/snapshot
72
-
ID 4176 gen 14444 top level 259 path subvol_snapshots/1518/snapshot
73
-
ID 4177 gen 14444 top level 259 path subvol_snapshots/1519/snapshot
74
-
ID 4178 gen 14444 top level 259 path subvol_snapshots/1520/snapshot
75
-
ID 4179 gen 14444 top level 259 path subvol_snapshots/1521/snapshot
76
-
ID 4181 gen 14444 top level 259 path subvol_snapshots/1522/snapshot
77
-
ID 4182 gen 14444 top level 259 path subvol_snapshots/1523/snapshot
78
-
ID 4183 gen 14450 top level 259 path subvol_snapshots/1524/snapshot
79
-
ID 4184 gen 14455 top level 259 path subvol_snapshots/1525/snapshot
80
-
ID 4185 gen 14459 top level 259 path subvol_snapshots/1526/snapshot
81
-
ID 4186 gen 14464 top level 259 path subvol_snapshots/1527/snapshot
54
+
ID 4166 gen 14537 top level 259 path subvol_snapshots/1509/snapshot
55
+
ID 4182 gen 14537 top level 259 path subvol_snapshots/1523/snapshot
56
+
ID 4196 gen 14537 top level 259 path subvol_snapshots/1535/snapshot
57
+
ID 4211 gen 14753 top level 259 path subvol_snapshots/1545/snapshot
58
+
ID 4258 gen 15274 top level 259 path subvol_snapshots/1582/snapshot
59
+
ID 4337 gen 15274 top level 259 path subvol_snapshots/1652/snapshot
60
+
ID 4372 gen 15274 top level 259 path subvol_snapshots/1680/snapshot
61
+
ID 4392 gen 15341 top level 259 path subvol_snapshots/1691/snapshot
62
+
ID 4414 gen 15434 top level 259 path subvol_snapshots/1712/snapshot
63
+
ID 4444 gen 15538 top level 259 path subvol_snapshots/1740/snapshot
64
+
ID 4451 gen 15566 top level 259 path subvol_snapshots/1747/snapshot
65
+
ID 4452 gen 15570 top level 259 path subvol_snapshots/1748/snapshot
66
+
ID 4454 gen 15581 top level 259 path subvol_snapshots/1749/snapshot
67
+
ID 4455 gen 15584 top level 259 path subvol_snapshots/1750/snapshot
68
+
ID 4456 gen 15589 top level 259 path subvol_snapshots/1751/snapshot
69
+
ID 4457 gen 15592 top level 259 path subvol_snapshots/1752/snapshot
70
+
ID 4458 gen 15596 top level 259 path subvol_snapshots/1753/snapshot
71
+
ID 4459 gen 15598 top level 259 path subvol_snapshots/1754/snapshot
72
+
ID 4460 gen 15611 top level 259 path subvol_snapshots/1755/snapshot
73
+
ID 4461 gen 15612 top level 259 path subvol_snapshots/1756/snapshot
74
+
ID 4462 gen 15620 top level 259 path subvol_snapshots/1757/snapshot
75
+
ID 4463 gen 15639 top level 259 path subvol_snapshots/1758/snapshot
76
+
ID 4464 gen 15643 top level 259 path subvol_snapshots/1759/snapshot
77
+
ID 4465 gen 15646 top level 259 path subvol_snapshots/1760/snapshot
78
+
ID 4466 gen 15649 top level 259 path subvol_snapshots/1761/snapshot
0 commit comments