Linux下安全刪除和恢復(fù)文件的方法

2013-06-26 10:32:07來源:cpplive作者:

由于目前大家使用的Linux文件系統(tǒng)大多是Ext3格式的,文件一旦刪除,很可能無法恢復(fù),即便可以恢復(fù)也十分麻煩。所以執(zhí)行rm命令變得異常危險(xiǎn),為此,我們可以編寫兩個(gè)Shell腳本來實(shí)現(xiàn)安全刪除和恢復(fù)文件的功能。 

由于目前大家使用的Linux文件系統(tǒng)大多是Ext3格式的,文件一旦刪除,很可能無法恢復(fù),即便可以恢復(fù)也十分麻煩。所以執(zhí)行rm命令變得異常危險(xiǎn),為此,我們可以編寫兩個(gè)Shell腳本來實(shí)現(xiàn)安全刪除和恢復(fù)文件的功能。
   
原理很簡(jiǎn)單,在當(dāng)前用戶的家目錄下創(chuàng)建一個(gè)隱藏文件夾“.temp”,它相當(dāng)于Windows系統(tǒng)中的回收站。當(dāng)我們想安全刪除一個(gè)文件時(shí),將要?jiǎng)h除的文件剪切到該目錄下即可。如果想要恢復(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 

保存這兩個(gè)文件,并使用chmod命令為其添加可執(zhí)行權(quán)限,然后拷貝到“/usr/bin”目錄下,之后我們就可以像使用rm命令一樣來使用erase跟unerase命令了。下圖演示了刪除test文件、恢復(fù)test文件以及“~/.temp”目錄下文件的變化。

\

要安全刪除某些文件,使用eares命令跟上要?jiǎng)h除的文件,既支持相對(duì)路徑也支持絕對(duì)路徑。要安全恢復(fù)某些文件,使用unerase命令跟上要恢復(fù)的文件名即可,如果不跟文件名,默認(rèn)恢復(fù)“~/.temp”目錄下的所有文件。

關(guān)鍵詞:Linux

贊助商鏈接: