垃圾目錄是如何工作的?
所以,我正忙著為自己編寫一個程序來移動和恢復我的垃圾箱(資源回收筒)中的項目,目前我可以將它移動到垃圾箱,但是如果我嘗試使用文件管理器從垃圾箱中恢復它,它會失敗。
垃圾目錄位於
~/.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 中創建相應的文件。
我在創建資訊文件之前移動了文件/文件夾,這反過來導致了上述問題的發生。此外,對於任何有興趣了解您的垃圾箱/資源回收筒如何工作的人,我真的建議您閱讀發布的連結。