Linux實現刪除撤回的方法。


RM命令改造
vim /etc/bashrc
 
在文件的最前端添加如下代碼
 
#修改rm命令
alias rm=delete  #命令別名,通過delete來實現rm改為mv
alias r=delete
alias rl='ls /trash' #rl 命令顯示回收站中的文件
alias ur=undelfile #ur 命令找回回收站的文件
undelfile()
{
    mv /trash/$@ ./
}
delete()
{
if [ ! -d "/trash/" ];then
         mkdir /trash
fi
\mv --backup=numbered $@ /trash/
}
cleartrash()
{
    read -p "clear sure?[n]" confirm
    [ $confirm == 'y' ] || [ $confirm == 'Y' ]  && /bin/rm -rf /trash/*
}
source /etc/bashrc
 
還有一種改造的方法見這里
 
使用原生刪除
/bin/rm -rf /trash
 
定時清空回收站
新建一個shell文件,比如trash.sh,核心代碼如下
 
# (empty trash)clean the trash directory
# everyday on 3am,delete all files 3 days ago 
# and write deleted files information into speacial file 
* 3 * * * find /trash/* -ctime +3 -fls /home/crontab/trash.txt
* 3 * * * find /trash/* -ctime +3 -delete
* 3 * * * /home/crontab/./trashdate.sh
 
一共有3行命令,執行時間都是每天凌晨三點 
命令一:找到回收站中三天前偽刪除的文件,並把這些文件的相信信息寫入到指定文件中 
命令二:找到回收站中三天前偽刪除的文件,並把這些文件徹底刪除 
命令三:執行另外一個腳本文件,見下一個標題 
然后提交給crontab
 
crontab trash.sh
 
提交完成后,這個trash.sh就可以刪除了,因為trash.sh中的內容已經在執行了,當然還有其他命令
 
crontab -l #查看在執行的定時器任務
crontab -e #編輯定時器
crontab -r #刪除定時器
crontab trash.sh #找回定時器
 
記錄刪除時間
trashdate.sh的核心代碼如下
 
sed -i "1i$(date "+%Y-%m-%d %H:%M:%S")" /home/crontab/trash_date.txt #代碼1
 
原來使用的是
 
date >> /home/crontab/trash_date.txt #代碼2
 
代碼2只是寫入到文件的內容類似以下格式
 
Thu Jan 18 03:06:01 CST 2018
 
而且 >> 這個是linux到追加命令,只會把新的內容追加寫入到文件末尾
 
而代碼1就不一樣了,sed -i可以把內容指定寫入到某一行,再加上linux中到日期變量,最后代碼1寫入到文件的內容類似以下格式
 
2018-01-01 08:30:01
 
使用方式
1、刪除文件時,比如文件為test.txt
 
rm test.txt 或者 r test.txt
 
這里不需要加任何參數,比如-r之類的
 
2、查看回收站內容
 
rl
 
要查看回收站內容詳細信息,只要加個參數就好
 
rl -lh 
 
3、清空回收站
 
cleartrash #會彈出是否清空
 
4、找回被“刪除“的文件
 
undelfile test.txt 或者 ur test.txt #把該文件還原到當前所在目錄
--------------------- 
作者:xun-ming 
來源:CSDN 
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM