由于目前大家使用的Linux文件系統(tǒng)大多是Ext3格式的,文件一旦刪除,很可能無法恢復(fù),即便可以恢復(fù)也十分麻煩。所以執(zhí)行rm命令變得異常危險,為此,我們可以編寫兩個Shell腳本來實現(xiàn)安全刪除和恢復(fù)文件的功能。
原理很簡單,在當(dāng)前用戶的家目錄下創(chuàng)建一個隱藏文件夾“.temp”,它相當(dāng)于Windows系統(tǒng)中的回收站。當(dāng)我們想安全刪除一個文件時,將要刪除的文件剪切到該目錄下即可。如果想要恢復(fù),再將“.temp”目錄內(nèi)的文件剪切到原始位置便是。
刪除文件的Shell腳本我們命名為erase,代碼如下:
#! /bin/bash
RecycleBin=~/.temp
(($#==0)) && { echo "No paraments!";exit 1; }
if [ ! -d $RecycleBin ]; then
mkdir $RecycleBin
fi
for i in $*
do
if test -e $i
then
cd $(dirname $i)
mv -f $(basename $i) $RecycleBin/$(find $(pwd) -maxdepth 1 -name $(basename $i) | tr "/" "=")
cd -
else
echo "$i:No such file or directory!"
fi
done
恢復(fù)文件的Shell腳本我們命名為unerase,代碼如下:
#! /bin/bash
cd ~/.temp
list=$(for i in $*; do ls |grep "\<$i\>"; done)
(($#==0)) && { list=$(ls|grep ""); }
for j in $list
do
file=$(echo $j | tr "=" "/")
mv $j ${file%/*}/${file##*/}
done
保存這兩個文件,并使用chmod命令為其添加可執(zhí)行權(quán)限,然后拷貝到“/usr/bin”目錄下,之后我們就可以像使用rm命令一樣來使用erase跟unerase命令了。下圖演示了刪除test文件、恢復(fù)test文件以及“~/.temp”目錄下文件的變化。
要安全刪除某些文件,使用eares命令跟上要刪除的文件,既支持相對路徑也支持絕對路徑。要安全恢復(fù)某些文件,使用unerase命令跟上要恢復(fù)的文件名即可,如果不跟文件名,默認(rèn)恢復(fù)“~/.temp”目錄下的所有文件。