• linux (rm指令) 及误删除解决


    今天在群里看见这一幕:

    看到这儿,我们学习一下 这个RM指令

    rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

    注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

    语法

    rm (选项)(参数)

    选项

    -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
    -f:强制删除文件或目录;
    -i:删除已有文件或目录之前先询问用户;
    -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
    --preserve-root:不对根目录进行递归操作;
    -v:显示指令的详细执行过程。

    参数

    文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。

    实例

    交互式删除当前目录下的文件test和example

    rm -i test example
    Remove test ?n(不删除文件test)
    Remove example ?y(删除文件example)

    删除当前目录下除隐含文件外的所有文件和子目录

    # rm -r *


    即:rm -rf /* (是强制删除根目录及全部的子文件)


    解决办法(解决误删除的办法集合):

      为了避免误删根目录,或者重要的文件,整理了以下方法:

    1、safe-rm

      safe-rm 是一个开源软件用来替代不太安全的rm,可以在/etc/safe-rm.conf中配置路径黑名单,定义哪些不能被safe-rm删除。

    可以将 safe-rm 更名为 rm 并放在 $PATH 中比 原rm 程序靠前的位置。一些脚本中使用完全路径/bin/rm则不会受此影响。 

    $ rm -rf /etc/
    safe-rm: skipping /etc/

    官方地址:http://freecode.com/projects/safe-rm,ubuntu可以直接apt-get安装,centos要下载源码安装。

    2、建立回收站机制

      它并不真正执行删除操作,而是将文件移动到一个特定目录,可以设置定时清楚回收站,或者在回收站里面的文件大小达到一定容量时(或者用时间做判断)执行删除操作以腾出空间。

    可以写个shell脚本替换rm命令,或者在需要删除文件的时候使用mv命令将文件移动到回收站。  

    1) 在/home/username/ 目录下新建一个目录,命名为:.trash

    2)在/home/username/tools/目录下,新建一个shell文件,命名为: remove.sh

    TRASH_DIR="/home/username/.trash"  
      
    for i in $*; do  
        STAMP=`date +%s`  
        fileName=`basename $i`  
        mv $i $TRASH_DIR/$fileName.$STAMP  
    done  

    3)修改~/.bashrc, 增加一行

    alias rm="sh /home/username/tools/remove.sh"

    用我们自建的remove.sh替代rm命令

    4)设置crontab,定期清空垃圾箱,如:

    0 0 * * * rm -rf /home/username/.trash/*

    每天0点清空垃圾箱

    5)source ~/.bashrc 使替换立即生效

    3、注意脚本中rm -rf 变量的使用

      在脚本尽量不要使用 rm -rf $FOO/, 请使用 rm -rf $FOO;另外删除尽量不要写相对路径,不要带变量。

    4、根文件系统设置只读挂载

    noauto,ro

    5、各种备份

      可以异地远程备份重要的数据,采用dump的增量备份机制,LVM快照,虚拟化环境中的快照、raid5等等。

    附录:How do I prevent accidental rm -rf /*?

    关注博客,每天进步一小点! 嘿嘿~~~




  • 相关阅读:
    32 renren-fast-vue安装报错问题
    31 element自定义图片上传
    30 图片预览
    29 element-table样式更改
    28 ant-design-vue-jeecg运行报错问题
    27 mysql8安装
    25 mybatis-plus常用语法
    24 element表单校验
    23 鼠标移入移出更换样式
    22 初识mysql外键
  • 原文地址:https://www.cnblogs.com/rianley/p/9259008.html
Copyright © 2020-2023  润新知