垃圾目录如何工作?

垃圾目录如何工作?

因此,我正忙着为自己编写一个程序来从垃圾箱(回收站)中移动和恢复项目,目前我可以将其移动到垃圾箱,但是如果我尝试使用文件管理器从垃圾箱中恢复它,则会失败。

垃圾目录位于~/.local/share/Trash,里面有 2 个文件夹,files/用于存储要删除的文件,以及info/用于存储有关文件的数据。我在应用程序中的文件命名正确,所以这不是问题,而且我也得到了存储在 info/ 文件夹中的详细信息。然而,如果我用文件管理器删除某些内容,然后从垃圾箱中恢复它,就没有问题,但是当我用我的代码将其移动到垃圾箱时,只能通过手动移动它来恢复......

以下是我的应用程序的一些示例:

$ nrash todelete.txt
> Moved to trash

上面创建了这个:(在垃圾箱/文件内)

todelete.txt

(垃圾箱/信息内)

todelete.txt.trashinfo

在 - 的里面.trashinfo文件,包含以下内容:

[Trash Info]
Path=/home/netsu/Documents/todelete.txt
DeletionDate=2021-10-08T18:24:04

相反,在从文件管理器删除的文件的 .trashinfo 中,您会发现以下内容:

[Trash Info]
Path=/home/netsu/Documents/pp.txt
DeletionDate=2021-10-08T18:25:02

两者完全相同,但工作方式不同...将东西移至垃圾箱时我是否遗漏了什么?为什么文件管理器放在那里的文件可以恢复,而我放在那里的文件却不能恢复?这是垃圾在 Linux 发行版上工作的通用方式,还是会根据发行版/桌面环境而改变?

注意:当我在文件管理器中打开我的文件时,它确实出现在“废纸篓”中,但我无法恢复它。

  • 发行版:Solus
  • 德:马特
  • 文件管理器:Caja

答案1

所以,我无法恢复它的原因很简单,在这个链接中https://specations.freedesktop.org/trash-spec/trashspec-latest.html(谢谢阿卜杜拉!),它在下面指定垃圾目录的内容

当删除文件或目录时,实现必须首先在 $trash/info 中创建相应的文件。

我在创建信息文件之前移动了文件/文件夹,这反过来导致了上述问题的发生。另外,对于任何有兴趣了解垃圾箱/回收站如何工作的人,我强烈建议您阅读发布的链接。

相关内容