| 《如何优雅的使用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就调用trashalias rm=trash
 #使用rl就调用’ls ~/.trash’ 如果更改上面的回收站目录这里的目录也需要修改alias rl=’ls ~/.trash’
 #使用unrm就调用restorefilealias unrm=restorefile
 #使用rmtrash就调用claearteashalias 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即刻生效. 示例这个脚本定义了几个命令 
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.txtchenbaojia
 [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.txtchenbaojia
 [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.txtchenbaojia
 [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 感谢您的阅读 (编辑:南平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |