防止rm的误删除解决办法

 对于rm这个命令相当的邪恶,若没有备份那是相当难恢复的,但是现在貌似是有一个叫extundelete的工具可以恢复,但是需要卸载分区,若是删除的根分区,那就不好做了!!但是现在有防止被rm误删的方法,方法如下:

创新互联长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为铁西企业提供专业的成都网站设计、做网站,铁西网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

     有一个recycle.zip包,其实里面就是recycle脚本和rm脚本两个脚本,两个脚本我稍微做了下修改,若机器比较多的话,可以搭建saltstack或者puppet工具,我们当时做的是和saltstack结合的,可以在master salt上将命令推送到salt client上,很方便的,前提需要在服务器上搭建salt master和salt client,在搭建salt时需要搭建salt的yum源,安装此包epel-release-6-8.noarch.rpm ,即可yum install -y salt。

 

     要想使用该recycle程序先手动执行以下两个命令

mkdir ~/.recycle   ### 建立recycle目录(这步在脚本中已添加)

alias rm='/usr/local/bin/rm'   ### /usr/local/rm改为附件中rm存放的路径 (这个可以使用salt推送)

注:rm这个路径必须是除/bin/rm和/sbin/rm,因为它会优先调用的还是/bin/rm和/sbin//rm命令,这样就不生效了。

(mv recycle.zip /usr/loca/bin

    cd /usr/local/bin

    unzip recycle.zip

    chmod +x recycle

    chmod +x rm)

 

附件中有rm和recycle两个命令

1.rm删除文件和文件夹,用法与自带rm命令相似

2.recycle显示回收站里面的内容:可以按名字排序,也可以按删除时间排序。

            recycle -d可以进入整理回收站的模式: 用法举例如下

           recycle -d -empty清空回收站

           recycle -d -t 3清空3天前的文件

           recycle -d -s 5清空超过5M的文件

           recycle -d -t 3 -s 5清空3天前且大小超过5M的文件

脚本中改的地方:

为了避免在计划任务中避免交互,将提示yes or no的脚本删除了,#行表示的是原有的,下面一行是自己更改的

recycle  : ###yesOrNo "empty the recycle " && $RM -rfv $RECYCLE_DIR/* && echo.ok recycle emptyed || return 0

                 $RM -rfv $RECYCLE_DIR/* && echo.ok recycle emptyed

rm:1.判断~/.recycle目录是否存在:加在脚本中的:[ -d ~/.recycle ] || mkdir ~/.recycle

 

         2.加了一行温馨提示去×××回

                        mv  -- "$1" "${RECYCLE_DIR}/${DATE}_${st}_${1}"  \

                        && echo.ok removed $t \`$1\`;

                        echo ------------------------------;

                        echo "如需要恢复请到~/.recycle目录里找回。"

 在salt主服务器上执行,推送过程:

 cd /srv/salt/files(rm recycle存放目录)

  salt '*' cp.get_file salt://files/rm /usr/local/bin/rm (*代表salt下的所有client)

  salt '*' cp.get_file salt://files/recycle /usr/local/bin/recycle

  salt '*' cmd.run 'chmod a+x /usr/local/bin/rm'

  salt '*' cmd.run 'chmod a+x /usr/local/bin/recycle'

  salt '*' cmd.run 'echo "alias rm='/usr/local/bin/rm'" >> /etc/bashrc'

  salt '*' cmd.run 'source /etc/bashrc'

在salt主服务器上添加计划任务:

 crontab -e

 * 5 */15 * * /usr/bin/salt '*' cmd.run '/usr/local/bin/recycle -d -empty' &> /dev/null

* 1 */15 * * /usr/bin/salt '*' cmd.run '/bin/mv /home/dev/.recycle/* /root/.recycle/' &> /dev/null

* */1 * * * /usr/bin/salt '*' cmd.run '/usr/local/bin/recycle.sh' &> /dev/null

[root@redmine files]# cat recycle.sh

#!/bin/bash

size=`du /root/.recycle/ | awk '{print $1}'`

date=`date +%F`

if [ $size -gt 10485760 ]; then

        recycle -d -empty &> /dev/null

        echo "删除日期:$date" >> /var/log/recycle.log

fi

 


分享标题:防止rm的误删除解决办法
链接地址:http://hbruida.cn/article/goigge.html