在Linux上实现 Windows 回收站功能的脚本(3)

修订版本:
BUG现象:在安装了LINUX下的回收站后发现无法使用less命令,原因是less  会调用rm将less产生的在/tmp下临时文件删除,
解决方法:
加了一层��断,不对/tmp下的文件执行备份操作,而是直接删除
安装方法:
cp -rp /bin/rm /bin/rm.bak  #将系统原有rm 命令改成rm.bak,记住 一定要改成rm.bak,因为回收站脚本需要调用 rm.bak这个命令。
cp -rp rm.sh /bin/rm #将你的脚本文件rm.sh 覆盖成/bin/rm文件
echo "0 8  * * 6   /bin/sh  /fmnp/soft/clean-dump.sh " >>/var/spool/cron/tabs/root # 为了防止 /dump-file目录过大,采取每周进行一次删除操作,脚本如下:
    #!/bin/bash

    /bin/rm.bak -rf /dump-file/*
    /bin/rm.bak -rf /tmp/*.rm-dump
#########################################

mkdir /dump-file  &&chmod -R 777 /dump-file # 创建/dump-file 目录并给予所有用户可写的权限 。

更新后脚本:

#!/bin/bash
DumpFile=/dump-file/
File=`echo $line|awk '{print $2}'`
aa=$(echo $1|grep "^-")
DumpLog="`whoami`-`date +%m-%d-%H-%M`.rm-dump"

###

function TestDir(){

Test_Dir=$(echo $line|grep "/") #test if is a directory.
Test_Dir2=$(echo $line |awk '{print $2}'|grep "^/") # Test if the prameter starts with "/".
Test_Dir3=$(echo $line |awk '{print $2}'|grep "^/tmp") #
Dir2=$(echo $line |awk -F/ '{print $2}') #Extract the prameter after the first "/".
Dir=$(echo $line |awk '{print $2}'|awk -F/ '{print $1}') ##Extract the prameter before the first "/".
D1=`date +%F_%H:%M:%S.bak`
Date=`echo $line | awk '{print $2 "_" D1}' D1=$D1`
DumpLog="`whoami`-`date +%m-%d-%H-%M`.rm-dump"

if [[ $Test_Dir != "" ]] ;then #If parameters include directory
                if [[ $Test_Dir2 != "" ]] ;then #If parameter starts with "/",as formate /a/b/c/
                   if [[ $Test_Dir3 != "" ]];then # this test is for to repaire less command's error.
                        rm.bak -rf `echo $line|awk '{print $2}'`
                   else
                        #echo $line "start with /"
                        mkdir $DumpFile$Dir2"_"$D1 2>/tmp/$DumpLog # Create directory as format /dump-file/(first directory after "/")
                       
                        mv `echo $line|awk '{print $2}'` $DumpFile$Dir2"_"$D1
                        echo $DumpFile$Dir2"_"$D1
                   fi
                else #Means that parameter starts without "/" ,as format a/b/c
                        mkdir $DumpFile$Dir$D1 #Create directory as format /dump-file/(first directory before "/")
                        mv `echo $line|awk '{print $2}'` $DumpFile$Dir$D1
                        echo $line "starts before /"
                fi
        else
                Date=`echo $line | awk '{print $2 "_" D1}' D1=$D1`
                mv `echo $line|awk '{print $2}'` $DumpFile$Date
        fi

}
###
###
if [[ "$1" != "" ]] ;then #If the frist parameter is not empty.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwjfsy.html