萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 打造資源回收筒機制:防止 rm 誤刪的腳本與定時清理

rm 無回收筒、不可逆,誤刪風險極高。本文教您以 Shell 腳本包裝 rm,將刪除檔案搬移至回收目錄並加上時間戳記,搭配 crontab 定期清理舊檔。

1. 建立回收筒腳本 /bin/rm.sh

#!/bin/sh
# 安全移除:移至回收目錄並加時間戳
dirpath="/data/Recycle"
now=$(date +%Y%m%d_%H_%M_%S_)
filename="${now}$1"

[ ! -d "$dirpath" ] && mkdir -p "$dirpath"
mv "$1" "${dirpath}/${filename}"

2. 部署與生效

chmod 755 /bin/rm.sh
echo "alias rm='/bin/rm.sh'" >> /etc/bashrc
source /etc/bashrc

之後執行 rm file.txt 實際執行腳本,檔案移至 /data/Recycle/20240115_10_30_00_file.txt。

3. 永久刪除(繞過回收筒)

/bin/rm -rf /data/Recycle/file.txt   # 直接刪除回收區檔案
/bin/rm -rf filename                 # 直接刪除(不經回收筒)

4. 定時清理超過 30 天回收檔

cat > /root/clean_recycle.sh <<'EOF'
#!/bin/sh
dirpath="/data/Recycle/"
find "$dirpath" -mtime +30 -exec /bin/rm -rf {} \;
EOF
chmod +x /root/clean_recycle.sh

# 加入 crontab(每週日 05:01 執行)
crontab -e
# 1 5 * * 0 sh /root/clean_recycle.sh

5. 注意事項

  • 腳本未處理目錄遞迴、多檔案參數,生產環境建議改用 trash-cli(trash-put/trash-list/trash-restore)。
  • 掛載獨立分區作為回收區,避免佔滿根分區。
  • 異地備份仍不可少,回收筒僅防「手滑」,不防磁碟損壞/勒索軟體。
copyright © 萬盛學電腦網 all rights reserved