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

 更新时间:2021年09月02日 15:03:15   作者:kaliarch  
相信很多朋友都遇到过在linux下误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾,下面这篇文章主要给大家介绍了关于Linux自定义防误删脚本的思路与测试的相关资料,需要的朋友可以参考下

一、背景

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

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

二、思路

由于是过度自信,操作执行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命令

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

脚本生成文件

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

测试文件删除

对文件或目录进行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自定义防误删脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Shell脚本创建指定大小文件的测试数据

    Shell脚本创建指定大小文件的测试数据

    这篇文章主要介绍了Shell脚本创建指定大小文件的测试数据,本文同时给出使用DD命令和Shell脚本解决这个需求,给出的脚本功能更加强大,需要的朋友可以参考下
    2015-03-03
  • Linux CLI操作常用快捷键总结

    Linux CLI操作常用快捷键总结

    下面小编就为大家带来一篇Linux CLI操作常用快捷键总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • ftp自动上传脚本分享

    ftp自动上传脚本分享

    调试设备时,往往需要反复将新编译的二进制通过ftp上传到目标机的指定目录下,此工作的重复性过多,考虑将操作写为shell脚本
    2014-02-02
  • ubuntu下常用apt命令介绍

    ubuntu下常用apt命令介绍

    这篇文章介绍了ubuntu的常用apt命令,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 在shell或者perl中改变字体或背景的颜色

    在shell或者perl中改变字体或背景的颜色

    有时候在运行别人写的脚本的时候,在黑乎乎的终端下显示了不同的颜色,好生的羡慕啊,今天就来分享一下,分别在shell和perl中怎么改变我们输出的字体的颜色
    2014-04-04
  • Shell脚本实现memcache缓存命中率监控

    Shell脚本实现memcache缓存命中率监控

    这篇文章主要介绍了Shell脚本实现memcache缓存命中率监控,这个脚本比较简单,通过check_tcp脚本获取memcached的stats信息,然后将该信息格式化成一个字符串,然后将get_hits比上cmd_gets就能得到缓存命中率,需要的朋友可以参考下
    2014-12-12
  • shell命令实现当前目录下多个文件合并为一个文件的方法

    shell命令实现当前目录下多个文件合并为一个文件的方法

    今天小编就为大家分享一篇关于shell命令实现当前目录下多个文件合并为一个文件的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 使用命令行将json数据导出到csv(一行命令搞定)

    使用命令行将json数据导出到csv(一行命令搞定)

    这篇文章主要为大家介绍了使用命令行将json数据导出到csv,一行命令搞定的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Linux修改主机名的命令详解

    Linux修改主机名的命令详解

    通常在购买的服务器或者一些新安装的Linux系统主机名是一个随机的字符串,但是如果说我们想标识一下每台主机的名称,我们就可以修改一下主机名,所以本文给大家介绍了Linux修改主机名的命令,需要的朋友可以参考下
    2024-01-01
  • shell脚本免交互的实现

    shell脚本免交互的实现

    交互就是实现一个功能时,不需要连续从键盘输入信息,通过脚本或命令自动完成一些动作,本文主要介绍了shell脚本免交互的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02

最新评论