2025年4月28日 星期一

在「終端機」中操作「丟進回收筒」、還原「回收筒(Trash)」的指令

現在的作業系統對於 “將檔案、目錄「丟進回收筒」” 這個命令,增加了一些保障。當看到檔案、目錄從原來的地方消失了,並不是立即被刪除了,而是『暫時』搬到「回收筒(Trash)」。使用者接下來可能的做法有:
  • 還原誤刪之檔案、目錄
  • 清空「回收筒」取回硬碟空間
這些操作在「圖形化桌面」中很方便,在「回收筒」按「滑鼠右鍵」會出現「開啟回收筒」或「清理回收筒」的選項,接著就依畫面指示操作,很是方便。但是,
當透過「(遠端)終端機」操作 Linux 系統時,如何以『文字命令』執行上述「還原」、「清空」的動作呢?

1.「回收筒」的檔案結構及原理

在說明這些指令前,先說明 Linux 中「回收筒」的檔案結構及原理:當使用者下達 “將檔案、目錄「丟進回收筒」” 這個操作後,
  • 這些檔案、目錄即被搬移到使用者「家目錄」下的隱藏目錄『~/.local/share/Trash/files』內,
  • 而這個檔案、目錄的「刪除」(其實是「搬移」)記錄,則放在『~/.local/share/Trash/info』之下
當使用者下「還原」或「清空」命令時,
  • 還原:檔案、目錄依之前的「搬移」記錄,搬回原地,再清除記錄。
  • 清空:刪除檔案、目錄及之前的「搬移」記錄,徹底刪除。

2. 從「(遠端) 終端機」還原或清空「回收筒」的檔案、目錄

既然知道「回收筒」的原理和檔案暫存位置,就可以將之取回。
[SiB@Fedora ~]$ mv ~/.local/share/Trash/files/File_back.txt ~/temp

a.「還原」檔案、目錄

要完全「還原」到「未刪除」前狀態,除了要將檔案、目錄搬回原位置外,還要將「刪除」記錄清除。
[SiB@Fedora ~]$ mv ~/.local/share/Trash/files/File_back.txt ~/temp
如果不確定「被刪除」檔案的原位址,可以查詢之前的「刪除」記錄
[SiB@Fedora ~]$ cat ~/.local/share/Trash/info/File_back.txt.trashinfo

[Trash Info]
Path=/home/SiB/temp/File_back.txt
DeletionDate=2012-12-02T16:35:55
「被刪除」的檔案搬回原位後,「刪除」記錄也可以刪除了
[SiB@Fedora ~]$ rm ~/.local/share/Trash/info/File_back.txt.trashinfo

b.「清空」檔案、目錄

這個操作簡單多了,把「被刪除」的檔案和「刪除」記錄都刪除。
[SiB@Fedora ~]$ rm -rf ~/.local/share/Trash/files/*
[SiB@Fedora ~]$ rm -rf ~/.local/share/Trash/info/*
這兩個命令會將「回收筒」內的檔案,永久刪除無法再還原。

3. 從「(遠端)終端機」操作「丟進回收筒」及還原

讀者應該會發現到:在「(遠端)終端機」中下「刪除」命令,被「刪除」的檔案、目錄用上一個步驟的方法不能還原。原因是「刪除」指令 (rm …) 並不會將這些「被刪除」的檔案、目錄搬到「回收筒」暫存。

a. 安裝 trash-cli 套件

想要能全面預防誤刪檔案、目錄,需再補安裝一個套件「trash-cli」才行。
[root@Fedora ~]# dnf install trash-cli

b. 使用 trash-cli 套件

安裝 trash-cli 後,提供幾個方便的指令
trash-put 刪除指定的檔案或目錄,相當於「丟進回收筒」。
trash-list 顯示「回收筒」的內容,相當於「查看回收筒」。
trash-rm 從「回收筒」中刪除單一檔案或目錄,相當於永久刪除該檔案。
trash-empty 從「回收筒」中刪除所有檔案和目錄,相當於「清理回收筒」。
restore-trash 從「回收筒」還原指定的檔案或目錄,若未指定檔案或目錄名則會列出「回收筒」內的所有檔案並編號,再指定編號刪除特定檔案。

已測試版本:

  • Fedora: 40, 41
參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)