返回顶部
首页 > 资讯 > 操作系统 >Linux自定义防误删脚本的思路与测试
  • 545
分享到

Linux自定义防误删脚本的思路与测试

linux防误删脚本linux误删文件linux删除脚本 2022-06-04 23:06:52 545人浏览 安东尼
摘要

目录一、背景二、思路三、测试四、扩展附:linux中利用chattr命令防止文件被删除1. 概述2. 具体的语法格式3. 重要选项详细解释4. 文件属性五、总结一、背景 俗话说的真好,常在河边走,怎能不湿鞋,本想删除服

目录
  • 一、背景
  • 二、思路
  • 三、测试
  • 四、扩展
  • 附:linux中利用chattr命令防止文件被删除
    • 1. 概述
    • 2. 具体的语法格式
    • 3. 重要选项详细解释
    • 4. 文件属性
  • 五、总结

    一、背景

    俗话说的真好,常在河边走,怎能不湿鞋,本想删除服务器上临时的系统扫描文件如下图:

    Linux自定义防误删脚本的思路与测试

    由于是在root的家目录,本想这/tmp/下有很多系统扫描文件,系统性的tab了一下,由于是自己的监控测试服务器也没多想,tab了一下应该是有多个文件,之后直接跟*然后删除全部扫描文件,但发现回车的一瞬间,发现/tmp只有一个扫描文件,瞬间头皮发麻,虽然只是自己的测试服务器,但下面也有很多脚本和数据文件,心里又气又恨。查看了下测试服务器只有一个根也没其他磁盘,此时ext3grep/extundelete这类工具就没办法了,想想也是有其他办法,但比较麻烦,算了就当买个教训吧,里面写个自定义rm命令脚本,来避免此类事情的发生。

    二、思路

    由于是RENkc过度自信,操作执行rm -rf手速感人,也没多看,因此自定义rm命令即可

    • 通过alias rm来移动文件到一个回收站目录
    • 定期的在系统磁盘允许可控的使用率情况下来对文件进行删除

    因此写了一下脚本来实现,与其说放勿删,不如说是延迟删除更为确切

    git地址

    
    #!/bin/bash
    # auth:kaliarch
    # function:自定义rm命令,每天晚上定时清理
    
    # 定义rm删除命令替换脚本
    CMD_SCRIPTS=$HOME/.rm_scripts.sh
    # 定义回收站目录
    TRASH_DIR=$HOME/.TRASH_DIR
    CRON_FILE=/var/spool/cron/root
    BASHRC=$HOME/.bashrc
    
    [ ! -d ${TRASH_DIR} ] && mkdir -p ${TRASH_DIR}
    
    cat > $CMD_SCRIPTS <> $CRON_FILE
    echo "删除目录:$TRASH_DIR"
    echo "删除脚本:$CMD_SCRIPTS"
    echo "请执行:source $BASHRC 来加载文件或退出当前shell重新登录"
    

    三、测试

    运行脚本替换rm命令

    Linux自定义防误删脚本的思路与测试

    之后推出重新登录,或按提示source文件加载生效

    脚本生成文件

    Linux自定义防误删脚本的思路与测试

    Linux自定义防误删脚本的思路与测试

    可以看到在脚本运行用户的家目录,会生成回收站目录和文件删除脚本,会创建定时任务定时清理回收站,可以根据后期磁盘情况,自定义周期清理,

    测试文件删除

    Linux自定义防误删脚本的思路与测试

    对文件或目录进行rm命令操作,可以发现是已经成功移动到回收站,定时任务会定时清理该目录下的东西,延迟我们日常rm -rf 误操作命令

    四、扩展

    • 作为工程师,日常操作一定还是要小心
    • 使用云服务器,做好定时快照策略
    • 如果为传统服务器做好文件异地备份
    • 安装使用数据恢复软件工具ext3grep、extundelete等第一时间恢复误操作数据。

    附:Linux中利用chattr命令防止文件被删除

    我们都知道,Linux是个很强大的系统。每个文件都有一定的权限,有的用户可以处理,有的只有root用户可以删除。但人总会有失误的时候,比如我们在root用户里用命令“sudo rm -fr ‘文件夹名' ”,这会使得我们很沮丧。有时候,我们把一个重要的文件夹放在主文件夹里,有时一不小心,我们就会把它误删了。

    哈哈,Linux里有一个十分有用的命令“chattr”, 它会很好的解决我们的问题。

    1. 概述

    linux中键入“man chattr”,其描述为“chattr changes the file attributes on a Linux file system.”从这我们很容易得出:在Linux文件系统里,chattr是可以改变文件的属性。

    2. 具体的语法格式

    chattr [ -RVf ] [ -v version ] [ mode ] files...[1]

    注:中括号是可选选项,而 files 表明其为参数,必须要有。如果您加上版本号(-v),您必须 键入版本号。如:chattr -v 1.8 files

    3. 重要选项详细解释

    接下来我们分析,一些对我们有用的选项

    • -R 对于本条命令递归更改文件的属性。(即文件夹和文件甚至文件夹里的子文件和子文件夹都附上相同的属性)
    • -V 输出详细的信息,如果有版本号的话,并输出版本号
    • -v 设置文件的版本号

    4. 文件属性

    1)mode 选项

    就是[1]中,[mode] 选项,而此选项格式为 “+文件属性”或“-文件属性”或“=文件属性”

    • “+文件属性” 就是添加该属性
    • “-文件属性”去掉此属性
    • “=文件属性” 此文件有且只有这属性

    2)文件属性

    • a 文件是否只能添加,修改,而不能删除
    • c 文件夹是否能添加压缩文件
    • s 安全删除
    • u 不可删除

    注:c,s,u不能在ext2,ext3,ext4文件系统

    如果你的文件系统是其中之一,你就使用a属性,可以避免你的文件被删除。

    如:sudo chattr -V +a file

    解除定:

    sudo chattr -V -a file

    五、总结

    到此这篇关于Linux自定义防误删脚本的文章就介绍到这了,更多相关Linux自定义防误删脚本内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    --结束END--

    本文标题: Linux自定义防误删脚本的思路与测试

    本文链接: https://lsjlt.com/news/21379.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作