温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

防止rm的误删除解决办法

发布时间:2020-06-28 23:38:23 来源:网络 阅读:1131 作者:雪的尘埃 栏目:安全技术

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

     有一个recycle.zip包,其实里面就是recycle脚本和rm脚本两个脚本,两个脚本我稍微做了下修改,若机器比较多的话,可以搭建saltstack或者puppet工具,我们当时做的是和saltstack结合的,可以在master salt上将命令推送到salt client上,很方便的,前提需要在服务器上搭建salt mastersalt client,在搭建salt时需要搭建saltyum源,安装此包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)

 

附件中有rmrecycle两个命令

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

rm1.判断~/.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/filesrm 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

 


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI