在使用 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
被放置在你曾经的地方snapshot
。delete
现在是一个子命令。