![垃圾目录如何工作?](https://linux22.com/image/196734/%E5%9E%83%E5%9C%BE%E7%9B%AE%E5%BD%95%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
因此,我正忙着为自己编写一个程序来从垃圾箱(回收站)中移动和恢复项目,目前我可以将其移动到垃圾箱,但是如果我尝试使用文件管理器从垃圾箱中恢复它,则会失败。
垃圾目录位于~/.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 中创建相应的文件。
我在创建信息文件之前移动了文件/文件夹,这反过来导致了上述问题的发生。另外,对于任何有兴趣了解垃圾箱/回收站如何工作的人,我强烈建议您阅读发布的链接。