删除名称中包含特殊字符的 btrfs 快照

删除名称中包含特殊字符的 btrfs 快照

在使用 BTRFS 进行一些测试时,我使用名称时间戳(即包括特殊字符)创建了一些只读快照。现在我无法删除它们。

$ sudo btrfs subvolume list /test
...
ID 387 gen 289 top level 5 path snapshots/2022-08-22 20:41:00
ID 388 gen 293 top level 5 path snapshots/2022-08-23 07:55:00
...

尝试删除一个:

$ btrfs subvolume snapshot delete /test/snapshots/'2022-08-23 07:55:00'
ERROR: Could not statfs: No such file or directory

注意我可以获取此文件的统计信息,并且快照完全可用:

$ stat /test/snapshots/'2022-08-23 07:55:00'
  File: /test/snapshots/2022-08-23 07:55:00
  Size: 50          Blocks: 0          IO Block: 4096   directory
Device: 51h/81d Inode: 256         Links: 1
Access: (0755/drwxr-xr-x)  Uid: ( 1000/     que)   Gid: ( 1000/     que)
Access: 2022-08-23 00:00:04.349592125 -0500
Modify: 2022-08-23 00:00:02.257592094 -0500
Change: 2022-08-23 00:00:02.257592094 -0500
 Birth: 2022-08-16 12:14:14.154459488 -0500

我尝试了各种组合来转义文件名,但似乎没有任何效果。我看到有一个ID列出的,但似乎我不能通过 id 删除快照。关于如何删除快照名称中含有特殊字符的快照有什么想法吗?

答案1

该问题与字符(特殊或非特殊)无关。这是失败的命令:

btrfs subvolume snapshot delete /test/snapshots/'2022-08-23 07:55:00'

btrfs subvolume snapshot … 创造快照。子命令是snapshot.delete这里不是子命令,而是 的操作数snapshot

您的命令尝试从创建快照delete。遗憾的是No such file or directory在这种情况下是模糊的。如果这个错误是详细的并告诉你它的意思是“文件或目录”名为delete;那就更好了。这会给你一个delete被解释为路径名而不是子命令的提示。那好吧。

删除要删除的内容的正确语法是:

btrfs subvolume delete /test/snapshots/'2022-08-23 07:55:00'

哪里delete被放置在你曾经的地方snapshotdelete现在是一个子命令。

相关内容