Trash

垃圾目錄是如何工作的?

  • October 9, 2021

所以,我正忙著為自己編寫一個程序來移動和恢復我的垃圾箱(資源回收筒)中的項目,目前我可以將它移動到垃圾箱,但是如果我嘗試使用文件管理器從垃圾箱中恢復它,它會失敗。

垃圾目錄位於~/.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 發行版上的通用方式,還是會根據發行版/桌面環境而改變?

注意:當我在文件管理器中打開文件時,我的文件確實出現在垃圾箱中,但我無法恢復它。

  • 發行版:單獨
  • 德:伴侶
  • 文件管理器:盒子

因此,我無法恢復它的原因很簡單,在此連結https://specifications.freedesktop.org/trash-spec/trashspec-latest.html(感謝 Abdullah!)中,它在垃圾目錄的內容下指定

刪除文件或目錄時,實現必須首先在 $trash/info 中創建相應的文件。

我在創建資訊文件之前移動了文件/文件夾,這反過來導致了上述問題的發生。此外,對於任何有興趣了解您的垃圾箱/資源回收筒如何工作的人,我真的建議您閱讀發布的連結。

引用自:https://unix.stackexchange.com/questions/672442