有一些軟體,如:Linux 下的 recover, 或是 MS Windows 下的 FinalData? (商業軟體),可以經由掃瞄整顆硬碟,把所有堪用的檔案救回來。
而 LibTrash 的方法則完全不同,它會去攔截所有的檔案 I/O 的系統呼叫,在所有可能會產生修改檔案內容的動作之前將原始資料另外放置到『資源回收筒』中,如果您誤刪或是誤改了檔案時還可以從『資源回收筒』裡把原始資料找回來。
而缺點是您的硬碟往往很快就爆掉了,所以要記得常常去清理呀!
而在安裝了 LibTrash 之後,只要在環境變數中指定了 LD_PRELOAD,那麼 LibTrash 的功能就會啟動。
小技巧:
將以下文寫寫入 .bashrc 中,讓使用者登入時能夠啟動『資源回收筒』的功能
LD_PRELOAD=/usr/lib/libtrash/libtrash.so export LD_PRELOAD alias TrashON="export TRASH_OFF=NO" alias TrashOFF="export TRASH_OFF=YES"
以下為 LibTrash 的設定檔, .libtrash 的說明:
# DEBUG, PERSONAL_CONF_FILE, WARNING_STRING 這三個設定為編譯時的選項,無法在此變更。 # UNCOVER_DIRS 這個設定必須以環境變數的方式存在。 # PROTECT_TRASH 這個設定可以以環境變數的方式存在。 # 在設定檔中不要使用引號,在項目和設定值中以 = 隔開。 # 在以 ; 分隔的設定值間注意不要加上空白。 # 在 LibTrash 執行時要不要秀出運行訊息(在此設定無效) DEBUG = NO # 指定個人的設定檔名稱(在此設定無效) PERSONAL_CONF_FILE = .libtrash # 如果 SHOULD_WARN 設定為 YES 時所秀出的訊息(在此設定無效) WARNING_STRING = Remember that libtrash is disabled. # 是否攔截 unlink() (the one found in GNU libc) INTERCEPT_UNLINK = YES # 如果在呼叫 rename() (the one found in GNU libc) 時覆蓋了檔案,是否進行攔截 INTERCEPT_RENAME = YES # 如果在呼叫 fopen() (the one found in GNU libc) 時截短了檔案,是否進行攔截 INTERCEPT_FOPEN = YES # 如果在呼叫 freopen() (the one found in GNU libc) 時截短了檔案,是否進行攔截 INTERCEPT_FREOPEN = YES # 如果在呼叫 open() (the one found in GNU libc) 時截短了檔案,是否進行攔截 INTERCEPT_OPEN = YES # 被攔截後的檔案要送到哪一個資料夾中 TRASH_CAN = Trash # 如果 LibTrash 在執行過程中出現了問題時所採取的行動 # ALLOW_DESTRUCTION:執行原始命令,如:刪除檔案 # PROTECT:回報錯誤,並中斷原始命令的執行 IN_CASE_OF_FAILURE = PROTECT # 如果關閉 LibTrash,是否要顯示警告訊息 SHOULD_WARN = YES # 是否保護『資源回收筒』裡的檔案不被刪除 PROTECT_TRASH = YES # 不受保護檔案的類型 IGNORE_EXTENSIONS = o;log;aux # 是否不保謢隱藏檔案 IGNORE_HIDDEN = YES # 是否不保謢以 '~' 結尾的文字備份檔 IGNORE_EDITOR_BACKUP = YES # 是否不保謢以 '#' 開頭的文字暫存檔 IGNORE_EDITOR_TEMPORARY = YES # 是否保謢 LibTrash 的設定檔 LIBTRASH_CONFIG_FILE_UNREMOVABLE = YES # 是否對於 Home Directory 之外的檔案進行保護 # 注意:UNREMOVABLE_DIRS 裡的檔案將不受保護 # TEMPORARY_DIRS 的檔案將不受保護 # 如果所保護的檔案和 Trash Can 不在同一個磁碟分割區中, # LibTrash 將會使用『』的方法將檔案移到 Trash Can 中 GLOBAL_PROTECTION = YES # 攔截 Home Directory 之外的檔案時, # 把它們集中在 Trash Can 裡的哪一個目錄下 TRASH_SYSTEM_ROOT = SYSTEM_ROOT # 設定絕對無法更動的目錄 # 注意:這個設定可以被 UNCOVER_DIRS 這個環境變數所蓋過 #UNREMOVABLE_DIRS = UNREMOVABLE_DIRS=/bin;/boot;/dev;/etc;/lib;/sbin;/usr # 必須以環境變數的方式存在。用來暫時讓 UNREMOVABLE_DIRS 或 PROTECT_TRASH 失效 UNCOVER_DIRS = # 指定暫存檔存放位置。裡面的檔案將不受保護 TEMPORARY_DIRS = /tmp;/var # 指定使用者暫存檔存放位置。裡面的檔案將不受保護 USER_TEMPORARY_DIRS = # 指定可卸載媒體存放位置。裡面的檔案將不受保護 REMOVABLE_MEDIA_MOUNT_POINTS = /mnt # 指定不受保護的檔案 EXCEPTIONS = /etc/mtab;/etc/resolv.conf;/etc/adjtime;/etc/upsstatus;/etc/dhcpc # 指定不受保護的檔案的 Regular Expression IGNORE_RE =