一天一点(2)防止 rm 误删除

前不久才因为自己的一个手快执行了 “rm /*”,误删除了整个根目录。数据丢失的教训有时候是巨大而难以承受的。

2. 防止 rm 误删除

2.1 一条危险的命令 rm -rf

rm -rf 常被用来删除文件或目录,因为使用它的时候可以快速删除所需要删除的文件或目录,而又不需要反复确认。

rm 命令,可以删除一个目录中的一个或多个文件或目录,也可以将某个目录以及目录下的所有子目录和文件都删除。对于链接文件,则只是删除整个链接文件,不删除原有文件。

-rf 参数。-r-R ,递归处理,将指定目录下的所有文件以及子目录一并处理掉;-f 表示强制删除文件或目录。

2.2 建立回收站机制防止误删

建立回收站机制后,当你在删除数据的时候,并不是真的在删除数据,而是将文件移动到一个特定的目录中。相当于看似执行的是 rm 命令实际上执行的是 mv 命令。

2.2.1 建立过程

对于要建立回收站机制,可以通过写 Shell 脚本替换 rm 命令,或者在需要删除文件的时候使用 mv 命令将文件移动到回收站。

  • /home/username/ 目录下新建一个目录,并命名为 .trash
  • /home/username/tools/ 目录下,新建一个 Shell 脚本,命名为 remove.sh
  • remove.sh 赋予执行权限: chmod +x /home/username/tools/remove.sh
    .trash

  • remove.sh脚本内容如下

# /home/username/tools/remove.sh
TRASH_DIR="/home/username/.trash"
for i in $*; do  
    STAMP=`date +%y%m%d-%H:%M:%S`  
    fileName=`basename $i`  
    mv $i $TRASH_DIR/$fileName.$STAMP  
done
  • 修改 ~/.bashrc , 增加下面一行
alias rm="sh /home/username/tools/remove.sh"

rm 设置别名,使用我们自己建的 remove.sh 替代 rm 命令

  • 设置 /etc/crontab 定时计划,定期清空垃圾箱,例如
0 0 * * * rm -rf /home/username/.trash/*
  • 执行 source ~/.bashrc 使其立即生效
    删除效果如下
    rm

注意:

  • 如果想直接删除而不是直接放进回收站,可以直接使用 /bin/rm 来删除
  • rm 之前的一些参数将会失效,因为现在使用的其实是 mv
  • 而在使用新脚本删除文件时,如果删除的文件重名,会提示是否进行覆盖。

2.3 注意命令 rm -rf 变量的使用

在脚本中应该尽量避免使用 rm -rf $FOO/ , 而推荐使用 rm -rf $FOO ;删除尽量不要写相对路径,不要带变量

提醒:我就是栽在了这里头了

2.4 备份重要数据

将重要的数据进行异地远程备份也是一种保障数据安全的方式。

2.5 rm-protection

2.5.1 rm-protection 介绍

这是一个完全兼容 rm 的数据保护工具。如果安装它,当在执行 rm 命令之前,会检查所要删的每一个文件或目录是否被保护。通过 rm-protection 命令可以为一个文件或目录设置一个安全问题与回答。

项目地址为:rm-protection

2.5.2 rm-protection 安装

可以直接通过 pip install rm-protection , 可以有选择性地为其设置别名如 rm-p 简化命令行。
通过执行 protection filename , 对文件进行保护,当使用 rm -rf filname 删除文件时,则会报出问答信息以确定确实是所需要删除的数据。
rp-protection)

猜你喜欢

转载自blog.csdn.net/qq_36148847/article/details/82080697