因爲有時後在 Linux 環境執行 rm 有可能會發生手殘按下去資料就不會來的慘劇,因此我們擴充了 rm 指令,在每次刪除的時候會自動建立一個隱藏檔並備份,但又怕硬碟爆掉,所以建立一個 crontab 排程每天晚上12點清掉。
rmpro.sh
#!/bin/bash
tmpdir="$HOME/.deleted-files"
realrm="$(which rm)"
copy="$(which cp) -R"
#如果沒有任何參數,那就用原本的 rm
if [ $# -eq 0 ] ; then
exec $realrm
fi
flags=""
while getopts "dfiPRrvW" opt
do
case $opt in
f ) exec $realrm "$@" ;;
* ) flags="$flags -$opt" ;;
esac
done
shift $(( $OPTIND - 1 ))
if [ ! -d $tmpdir ] ; then
if [ ! -w $HOME ] ; then
echo "$0 錯誤: 無法在 $HOME 建立 $tmpdir " >&2
exit 1
fi
mkdir $tmpdir
chmod 700 $tmpdir
fi
for arg
do
newname="$tmpdir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")"
if [ -f "$arg" -o -d "$arg" ] ; then
$copy "$arg" "$newname"
fi
done
exec $rmpro $flags "$@"
true-delete.sh
#!/bin/bash
cd $HOME/.deleted-files
rm *
crontab -e
0 12 * * * ~/true-delete.sh