Linux文件回收機制:安全刪除文件不怕誤刪
文章目錄
- Linux文件回收機制:安全刪除文件不怕誤刪
- 一、Linux默認沒有“回收站”?
- 二、打造你自己的Linux回收站
- 1. 建立回收站目錄
- 2. 創建軟刪除命令remove
- 3. 定時清理回收站
- 4. 替換rm命令
- 5. 完整腳本
- 總結
在 Linux 的世界里,“刪除”可不等于“徹底消失”
,就像你在桌面上刪了文件,它并沒有灰飛煙滅,而是悄悄躲進了“回收站”——只不過這個“回收站”,你得自己搭。
今天我們來聊聊 Linux 的文件回收機制,也就是:
文件被刪掉后,是直接打入地獄,還是有機會重返人間?
一、Linux默認沒有“回收站”?
是的,Linux 可不像 Windows 那樣貼心,默認直接執行 rm 命令就像泰山壓頂——該文件當場升天,魂飛魄散。所以,誤刪文件在 Linux 下幾乎等同于災難。
不過別急,“沒有回收站”不代表沒有補救的辦法!
二、打造你自己的Linux回收站
1. 建立回收站目錄
如果 /trash 目錄不存在就創建它,并賦予所有用戶讀寫權限。這里我們把它作為“回收站”的家
[ ! -d /trash ] && mkdir /trash
chmod 777 /trash
2. 創建軟刪除命令remove
這個腳本就是我們自定義的“軟刪除”命令,會把你想刪除的文件或目錄移動到 /trash 目錄,并加上時間戳重命名,實現“假裝刪除”
cat > /usr/local/bin/remove <<-"EOF"
#!/bin/bash
TRASH_DIR="/trash"
for NAME in $*; doSTAMP=$(date +%s%N) # 獲取當前時間戳[ -f "$NAME" ] && mv "$NAME" ${TRASH_DIR}/$(basename "$NAME").${STAMP} >/dev/null 2>&1[ -d "$NAME" ] && mv "$NAME" ${TRASH_DIR}/$(basename "$NAME").${STAMP} >/dev/null 2>&1
done
EOFchmod +x /usr/local/bin/remove
3. 定時清理回收站
這個腳本會查找 /trash
目錄下 7 天前創建的文件,并徹底刪除,避免“回收站”被塞爆
cat > /usr/local/bin/clear-trash.sh <<-"EOF"
#!/bin/bash
find /trash -maxdepth 1 -ctime +7 -exec rm -rf {} \;
EOFchmod +x /usr/local/bin/clear-trash.sh# 定時清理垃圾站
if crontab -l | grep -q /usr/local/bin/clear-trash.sh ; thencat /dev/null
else(crontab -lecho "0 0 * * * bash /usr/local/bin/clear-trash.sh &>/dev/null") | crontab
fi
4. 替換rm命令
這會讓系統在啟動時自動加載這個別名,當你輸入 rm
命令時,其實執行的是 remove
腳本,幫你把文件“丟進回收站”,而不是直接刪除
sed -i '/rm/d' $HOME/.bashrc # 刪除舊的rm定義cat > /etc/profile.d/rm.sh <<-"EOF"
#rm
alias rm='bash /usr/local/bin/remove'
EOF
5. 完整腳本
復制執行即可
bash <<-"FOE"
mkdir -p /trash
chmod 777 /trash
cat > /usr/local/bin/remove <<-"EOF"
#!/bin/bash
TRASH_DIR="/trash"
for NAME in $*;do
STAMP=`date +%s%N`
[ -f "$NAME" ] && mv $NAME ${TRASH_DIR}/$(basename $NAME).${STAMP} >/dev/null 2>&1
[ -d "$NAME" ] && mv $NAME ${TRASH_DIR}/$(basename $NAME).${STAMP} >/dev/null 2>&1
done
EOF
cat > /usr/local/bin/clear-trash.sh <<-"EOF"
#!/bin/bash
touch /trash
find /trash -maxdepth 1 -ctime +7 -exec rm -rf {} \;
EOF
chmod +x /usr/local/bin/remove
chmod +x /usr/local/bin/clear-trash.sh
cat > /etc/profile.d/rm.sh <<-"EOF"
#rm
alias rm='bash /usr/local/bin/remove'
EOF
sed -i '/rm/d' $HOME/.bashrc
if crontab -l | grep -q /usr/local/bin/clear-trash.sh ; then cat /dev/null ; else
( crontab -l
echo "0 0 * * * bash /usr/local/bin/clear-trash.sh &>/dev/null"
) | crontab
fi
crontab -l | grep "/usr/local/bin/clear-trash.sh"
echo -e "\033[1;33msource /etc/profile && alias rm\033[0m"
FOE
總結
📌通過幾個簡單的腳本,就能讓 Linux 擁有“回收站”功能,安全刪除、定期清理、自動運行,統統搞定。這不是炫技,而是自保。
如果你是在生產環境使用,記得把 /trash 單獨掛載成一個邏輯卷或者掛載點,防止誤刪大文件把根目錄撐爆。