我有一个要删除的快照:
04:03:21::mlissner@pounamu::~
? sudo btrfs subvolume list /
ID 257 gen 267078 top level 5 path @badroot
ID 258 gen 267151 top level 5 path @home
ID 422 gen 267151 top level 5 path @
Run Code Online (Sandbox Code Playgroud)
那个叫@badroot 的人很糟糕,必须去。但:
04:03:23::mlissner@pounamu::~
? sudo btrfs subvolume delete \@badroot
ERROR: error accessing '@badroot'
04:03:31::mlissner@pounamu::~
Run Code Online (Sandbox Code Playgroud)
所以我不知道从哪里开始。我尝试阅读帮助文件:
? sudo btrfs subvolume delete --help
usage: btrfs subvolume delete <subvolume> [<subvolume>...]
Delete subvolume(s)
Run Code Online (Sandbox Code Playgroud)
但这也无济于事。也许互联网的好心人有想法。
Cel*_*ada 17
似乎您指的是@badroot
使用错误的路径。
如果我正确阅读了您的 shell 提示,那么您当前的目录是~
,您的主目录 — 可能是/home/mlissner
或类似的。您将子卷的路径指定为相对路径(不以 开头/
),因此您实际上是在要求删除诸如/home/mlissner/@badroot
... 之类的不存在的内容。
尝试使用绝对路径:
sudo btrfs subvolume delete /@badroot
Run Code Online (Sandbox Code Playgroud)
也许您在 上安装了一个非默认子卷/
,例如编号 422、@
. 在这种情况下,只有该子卷出现在/
该路径下,您看不到该路径上方的任何内容,包括其他两个子卷以及位于 Btrfs 根目录中的任何常规文件。
在这种情况下,将真正的 Btrfs 根挂载到其他位置,以便您可以访问其内容。Btrfs 的真正根被称为子卷 ID 0(并且未由 列出btrfs subvolume list
)。查找或创建空闲挂载点并挂载如下:
mount -o subvolid=0 /dev/some-device /mnt
Run Code Online (Sandbox Code Playgroud)
现在您应该能够看到/mnt/@
, /mnt/@badroot
, /mnt/@home
, 以及/mnt
. 您可以/mnt/@badroot
照常删除子卷。