加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 服务器 > 安全 > 正文

如何优雅的使用rm防止误删除脚本

发布时间:2021-01-12 00:09:23 所属栏目:安全 来源:网络整理
导读:《如何优雅的使用rm防止误删除脚本》要点: 本文介绍了如何优雅的使用rm防止误删除脚本,希望对您有用。如果有疑问,可以联系我们。 前言 下面的对话是来自运维派QQ群号:201777608 俗话说的好: 常在河边走,哪能不湿鞋. 身边的例子很多,时刻提醒我们运维人员

《如何优雅的使用rm防止误删除脚本》要点:
本文介绍了如何优雅的使用rm防止误删除脚本,希望对您有用。如果有疑问,可以联系我们。

前言

下面的对话是来自运维派QQ群号:201777608


俗话说的好:
常在河边走,哪能不湿鞋. 身边的例子很多,时刻提醒我们运维人员要建立明确、规范的标准化管理流程;提高运维效率、降低综合成本;保障业务的连续性.

问题背景

若一不小心执行命令 rm -rf /,如果此时正好拥有root权限,那么后果将不堪设想.

解决方法

重定义 rm 命令以嫁接mv命令,相当于给Linux系统定制了一个回收站.

###重定义rm命令###

#定义回收站目录
trash_path=’~/.trash’

#判断$trash_path 定义的文件是否存在,如果不存在,那么就创建$trash_path.
if [ ! -d $trash_path ]; then
mkdir -p $trash_path
fi

#定义别名:使用rm就调用trash
alias rm=trash

#使用rl就调用’ls ~/.trash’ 如果更改上面的回收站目录这里的目录也需要修改
alias rl=’ls ~/.trash’

#使用unrm就调用restorefile
alias unrm=restorefile

#使用rmtrash就调用claearteash
alias rmtrash=cleartrash

#恢复文件的函数
restorefile()
{
mv -i ~/.trash/$@ ./
}

#删除文件的函数
trash()
{
mv $@ ~/.trash/
}

#清空回收站的函数
cleartrash()
{
read -p “确定要清空回收站吗?[y/n]” confirm
[ $confirm == ‘y’ ] || [ $confirm == ‘Y’ ] && /bin/rm -rf ~/.trash/*
}

最后将上述脚本写入 /etc/bashrc 并立即执行命令 source /etc/bashrc即刻生效.

示例

这个脚本定义了几个命令

    1. rl 就是查看回收站下的文件

unrm 文件名或目录 就是恢复到当前的路径下

rmtrash 就是清空回收站,不过会友好提示.

执行rm 不糊删除,其实就是使用mv 移动到我们指定的回收站

实在真的想删除可以/bin/rm 来进行删除

/bin/rm或者rm 都可以临时取消别名.

命令测试

[root@master ~]# touch chen

[root@master ~]# mkdir bao

[root@master ~]# ls
~ bao chen

[root@master ~]# rm -f chen

[root@master ~]# find ~ -name chen
/root/.trash/chen

[root@master ~]# ll /root/.trash/
-rw-r–r– 1 root root 0 4月 7 02:16 chen

[root@master ~]# echo “chenbaojia” >jia.txt

[root@master ~]# cat jia.txt
chenbaojia

[root@master ~]# rm -f jia.txt

[root@master ~]# ls
~ bao

[root@master ~]# ll /root/.trash/
总用量 4
-rw-r–r– 1 root root 0 4月 7 02:16 chen
-rw-r–r– 1 root root 11 4月 7 02:17 jia.txt

[root@master ~]# cat /root/.trash/jia.txt
chenbaojia

[root@master ~]# rm -fr bao/
mv:无效选项 — r
请尝试执行”mv –help”来获取更多信息.

[root@master ~]# rm -r bao/
mv:无效选项 — r
请尝试执行”mv –help”来获取更多信息.

[root@master ~]# rm -f bao/

[root@master ~]# ll /root/.trash/
drwxr-xr-x 2 root root 4096 4月 7 02:16 bao
-rw-r–r– 1 root root 0 4月 7 02:16 chen
-rw-r–r– 1 root root 11 4月 7 02:17 jia.txt

使用我们在用户变量里定义的命令别名 /etc/bashrc

#查看回收站下的文件
[root@master ~]# rl
bao chen jia.txt

#恢复jia.txt 到当前目录
[root@master ~]# unrm jia.txt

[root@master ~]# ls
~ anaconda-ks.cfg head install.log install.log.syslog jia.txt Package

[root@master ~]# cat jia.txt
chenbaojia

[root@master ~]# unrm bao

[root@master ~]# ls
~ bao jia.txt

[root@master ~]# ll /root/.trash/
-rw-r–r– 1 root root 0 4月 7 02:16 chen

[root@master ~]# source /etc/bashrc

#回收站
[root@master ~]# rmtrash
确定要清空回收站吗?[y/n]y
[root@master ~]# ll /root/.tcshrc
-rw-r–r–. 1 root root 129 12月 4 2004 /root/.tcshrc

真想删除可以使用/bin/rm 进行删除 或者 rm

后记

引用老男孩老师的一句话就是“未雨绸缪永远比出了问题在处理要好的多,出了问题补救是没办法不得已的事,最差的是很多公司,没有亡羊补牢,而是好了伤疤忘了疼,没过多久问题又发生.”

因此,在工作中要尽量做到未雨绸缪,从源头上减少故障的发生.其次,要做到亡羊补牢、举一反三,事情出现一次就不能在出现第二次.当然,完善的备份和恢复策略也是需要做的.只有把这些结合起来,才能把我们运维的工作做的更好.

在日常的运维工作中,确实有很多紧急情况的出现,我们运维人员甚至一度都用“消防员”戏称自己每天的工作.

这好似一个恶性循环,系统越却弱,问题越多,紧急情况也越多,更加没有时间考虑系统优化的问题,如此往复,我们运维人员只能充当“消防员”的角色,哪里有火情,第一时间赶赴火场.

避免这种恶性循环的方法之一,就是在问题发生之前能够提前主动修复,修复的问题越多,紧急情况也就越少.

“工作四象限”中,也就是把更多的精力放在那些重要但不紧急的事情上,有条不紊,价值才能能到提升.

END

感谢您的阅读

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读