CentOS定制Recycle(回收站)的常見方法
CentOS系統默認未內置圖形化回收站功能,但可通過以下方法手動實現或增強回收站特性,滿足不同場景需求:
安裝:通過yum包管理器安裝trash-cli,支持回收站的完整操作(移動、查看、清空、恢復)。
sudo yum install trash-cli
配置:編輯/etc/trash.conf
文件,調整回收站參數(如大小、保留時間、忽略文件類型):
[Trash]
trash_dir = ~/.local/share/Trash/files # 回收站文件存儲路徑
trash_info_dir = ~/.local/share/Trash/info # 回收站元信息路徑
trash_max_file_size = 10485760 # 單個文件最大10MB(可選)
trash_max_files = 1000 # 最多存儲1000個文件(可選)
trash_keep_days = 7 # 文件保留7天(可選)
常用命令:
trash /path/to/file_or_directory
trash-list
trash-empty
(可指定天數,如trash-empty 30
清空30天前的文件)trash-restore
(交互式選擇需恢復的文件)安裝:適用于圖形界面用戶,集成于GNOME桌面環境,操作更直觀。
sudo yum install gvfs-trash
使用方法:
gvfs-trash /path/to/file
gvfs-trash-list
gvfs-trash-empty
步驟:通過腳本將rm
命令重定向到回收站目錄,替代直接刪除。
mkdir -p ~/.local/share/Trash/files # 用戶級回收站
/bin
目錄):#!/bin/bash
TRASH_DIR="$HOME/.local/share/Trash/files"
for item in "$@"; do
timestamp=$(date +%s)
filename=$(basename "$item")
mv "$item" "$TRASH_DIR/${filename}.${timestamp}" # 添加時間戳避免重名
done
cp remove.sh /bin/rm
chmod +x /bin/rm
~/.bashrc
):alias rm='/bin/rm' # 將rm指向自定義腳本
alias rtrash='ls ~/.local/share/Trash/files/' # 查看回收站
alias cleartrash='read -p "確定清空回收站?(y/n)" && [[ $REPLY == "y" ]] && rm -rf ~/.local/share/Trash/files/*' # 清空回收站
source ~/.bashrc # 重新加載環境變量
效果:執行rm
命令時,文件會移動到~/.local/share/Trash/files
目錄,而非永久刪除
適用場景:需要系統級回收站支持(如ext4文件系統),通過掛載選項啟用擴展屬性。
/
或/home
),添加user_xattr,acl
選項:UUID=your-uuid / ext4 defaults,user_xattr,acl 1 1
sudo mount -o remount /
mkdir -p ~/.Trash-1000 # 1000為用戶ID(可通過id -u查看)
chmod 1730 ~/.Trash-1000 # 設置權限(所有者可讀寫執行,組和其他用戶無權限)
原理:user_xattr
選項允許用戶為文件設置擴展屬性,acl
選項支持訪問控制列表,配合.Trash-1000
目錄可實現系統級回收站功能
適用場景:需要實時捕獲文件刪除操作(如腳本或批量刪除),避免遺漏。
sudo yum install inotify-tools
monitor_trash.sh
):#!/bin/bash
MONITOR_DIR="/path/to/monitor" # 需要監控的目錄(如/home)
TRASH_DIR="$HOME/.local/share/Trash/files"
inotifywait -m -r -e delete --format '%w%f' "$MONITOR_DIR" | while read FILE; do
mv "$FILE" "$TRASH_DIR"
done
chmod +x monitor_trash.sh
./monitor_trash.sh & # 后臺運行
注意:需確保腳本持續運行(可通過nohup
或systemd
服務管理),否則監控會中斷
目的:避免回收站占用過多磁盤空間,定期清理過期文件。
clean_trash.sh
):#!/bin/bash
TRASH_DIR="$HOME/.local/share/Trash/files"
find "$TRASH_DIR" -type f -mtime +7 -exec rm -f {} \; # 刪除7天前的文件
crontab -e
):0 0 * * * /bin/bash /path/to/clean_trash.sh # 每天午夜執行
說明:可根據需求調整-mtime
參數(如+30
表示30天),或結合trash-cli
的trash-empty
命令實現更靈活的清理
/.local/share/Trash
)需對所有用戶可寫(chmod 1777
),用戶級回收站目錄(如~/.local/share/Trash
)僅對當前用戶可寫。gvfs-trash
,其與文件管理器(如Nautilus)集成更好;若使用命令行,trash-cli
是更通用的選擇。