<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 回收站功能在 Linux 中的實(shí)現

回收站功能在 Linux 中的實(shí)現

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

調用 logTrashDir 腳本,將中的新文件名、原文件名、刪除時(shí)間、原文件絕對路徑記錄到隱藏文件中

將文件通過(guò) mv 命令移動(dòng)到 Trash 目錄下。詳細代碼如下所示:

清單 6.移動(dòng)文件到并做記錄

now=`date +%Y%m%d_%H_%M_%S`

filename=${file##*/}

newfilename=${file##*/}_${now}

mark1=.

mark2=/

if [ $file = ${file/$mark2} ]

then

fullpath=$(pwd)/$file

elif [ $file != ${file/$mark1} ]

then

fullpath=$(pwd)${file/$mark1}

else

fullpath=$file

fi

echo the full path of this file is :$fullpath

if mv -f $file ~/trash/$newfilename

then

$(/logTrashDir $newfilename $filename $now $fullpath)

echo files: $file is deleted

else

echo the operation is failed

fi

logTrashDir 腳本

該腳本較簡(jiǎn)單,僅是一個(gè)簡(jiǎn)單的文件寫(xiě)入操作,之所以單獨作為一個(gè)腳本,是為了以后擴展的方便,具體代碼如下:

清單 7.logTrashDir 代碼

if [ ! -f ~/trash/.log ]

then

touch ~/trash/.log

chmod 700~/trash/.log

fi

echo $1 $2 $3 $4>> ~/trash/.log

該腳本先建立.log 隱藏文件,然后往里添加刪除文件的記錄。

restoreTrash 腳本

該腳本主要完成以下功能:

從.log 文件中找到用戶(hù)想要恢復的文件對應的記錄。此處依然使用 awk,通過(guò)正表達式匹配找到包含被刪除文件名的一行

從記錄中找到記錄原文件名的字段,以給用戶(hù)提示

中的文件移動(dòng)到原來(lái)的位置,在這里運用了 mv –b 移動(dòng)文件,之所以加入-b 選項是為了防止原位置有同名文件的情況。

將.log 文件中與被恢復文件相對應的記錄刪除

清單 8.獲取相應記錄

1originalPath=$(awk /$filename/'{print $4}' $HOME/trash/.log)

清單 9.查找原文件名及現文件名字段

filenameNow=$(awk /$filename/'{print $1}' ~/trash/.log)

filenamebefore=$(awk /$filename/'{print $2}' ~/trash/.log)

echo you are about to restore $filenameNow,original name is $filenamebefore

echo original path is $originalPath

清單 10.恢復文件到原來(lái)位置并刪除相應記錄

echo Are you sure to do that?[Y/N]

read reply

if [ $reply = y ] || [ $reply = Y ]

then

$(mv -b $HOME/trash/$filename $originalPath)

$(sed -i /$filename/'d' $HOME/trash/.log)

else

echo no files restored

fi

自動(dòng)定期清理 trash 目錄

因為 delete 操作并不是真正刪除文件,而是移動(dòng)操作,經(jīng)過(guò)一段時(shí)間的積累,trash 目錄可能會(huì )占用大量的硬盤(pán)空間,造成資源浪費,所以定期自動(dòng)清理 trash 目錄下的文件是必須得。本文的清理規則是:在回收站中存在 7 天以上的文件及目錄將會(huì )被自動(dòng)從硬盤(pán)中刪除。運用的工具是 自帶的 crontab。

Crontab 是 用來(lái)定期執行程序的命令。當安裝完成操作系統之后,默認便會(huì )啟動(dòng)此任務(wù)調度命令。Crontab 命令會(huì )定期檢查是否有要執行的工作,如果有要執行的工作便會(huì )自動(dòng)執行該工作。而 任務(wù)調度的工作主要分為以下兩類(lèi):

1、系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存

2、個(gè)人執行的工作:某個(gè)用戶(hù)定期要做的工作,例如每隔 10 分鐘檢查郵件服務(wù)器是否有新信,這些工作可由每個(gè)用戶(hù)自行設置。

首先編寫(xiě) crontab 執行時(shí)要調用的腳本 cleanTrashCan.如清單 10 所示,該腳本主要完成兩項功能:

判斷回收站中的文件存放時(shí)間是否已超過(guò) 7 天,如果超過(guò)則從回收站中刪除。

將刪除文件在.log 文件中相應的記錄刪除,保持其中數據的有效性,提高查找效率。

清單 11.刪除存在回收站超過(guò) 7 天的文件并刪除.log 中相應記錄

arrayA=($(find ~/trash/* -mtime +7 | awk '{print $1}'))

for file in ${arrayA[@]}

do

$(rm -rf ${file})

filename=${file##*/}

echo $filename

$(sed -i /$filename/'d' $HOME/trash/.log)

done

腳本編寫(xiě)完成后通過(guò) chmod 命令賦予其執行權限,然后運過(guò) crontab –e 命令添加一條新的任務(wù)調度:

110 18 * * * /bin/ cleanTrashCan

該語(yǔ)句的含義為,在每天的下午 6 點(diǎn) 10 分執行 cleanTrashCan 腳本

通過(guò)這條任務(wù)調度,trash 的大小會(huì )得到有效的控制,不會(huì )持續增大以致影響用戶(hù)的正常操作。

實(shí)際應用

首先要將 delete 腳本,logTrashDir 腳本,restoreTrash 腳本和 cleanTrashCan 放到/bin 目錄下,然后用 chmod +x delete restoreTrash logTrashDir cleanTrashCan 命令賦予這三個(gè)腳本可執行權限。

運用 delete 腳本刪除文件,例如要刪除在/usr 目錄下的 useless 文件。根據用戶(hù)目前所在的位置,可以用相對路徑或絕對路徑來(lái)指定參數,如:delete useless,delete ./useless 或者 delete /usr/useless。執行過(guò)程如圖 1 所示:

圖 1.delete 腳本執行過(guò)程

image003

執行之后,useless 文件會(huì )從原目錄中刪除,被移動(dòng)到$HOME/trash 下,并被重命名,如圖 2.所示:



關(guān)鍵詞: 回收站 Linux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>