误删除文件我想是每个程序员都遇到过的问题, 有的时候可能造成影响非常小,但是有时候会造成无法挽回的后果,这种例子比比皆是,大家可以自行google。 那么今天就给大家分享一些简单但可以有效的防止误删数据的小技巧:
1 操作前备份
修改或删除数据前请务必备份,最好有异机备份,修改配置等先提交版本管理系统再发布到线上。
2 使用mv替代
删除应使用mv命令替代rm命令,无用的文件不要着急删除,而是移动到回收站/tmp里观察一段时间。再写个定时shell定期清理,以模拟“回收站”功能。
3 配置alias别名
可以通过设置别名等手段屏蔽rm,这样一旦直接用到rm命令就是意识到。把rm配置成rm -i 或者 mv 之类的命令
4 让删除变得复杂(即精准删除)
如果非要删除数据,还可用find结合rm替代单纯的rm,包括设定定时任务等动作执行清理。
5 必须用rm?
如果非要使用rm删除数据,请尽量先切换目录到待删除数据所在的目录。
能不用通配符就不用通配符。
例如:
[root@pythontab.com /]# cd /pythontab.com/ [root@pythontab.com /]# rm -f test1 test2
6 必须用rm和通配符?
如果非要使用rm删除并且要采用通配符,请按下面方法:
[root@pythontab.com /]# cd /pythontab.com/ [root@pythontab.com pythontab.com]# rm -fr * #目标中最好不要带有“/”,因为“/”太危险, 原因请看第8条
7 通配符与rm -fr的结合是极其危险的
应禁止使用类似rm -fr /pythontab.com/*命令删除
8 rm命令中,目标路径中的任意斜线前后如果多了空格可能会带来灾难。
[root@pythontab.com /]# rm -fr /pythontab.com/*
例如:rm -fr /pythontab.com/空格* ###*的前不小心多了空格,会删除当前目录下的所有内容。
[root@pythontab.com /]# rm -fr /pythontab.com/空格* #会把当前目录根下全删了。
更甚者, 如果在pythontab.com多了一个空格, 那就大悲剧啦,根目录都删除了...
[root@pythontab.com /]# rm -fr / pythontab.com/* #会把根目录全删了,所有文件,所有文件,所有文件!
9 习惯-tab补全
如果必须要rm -fr /pythontab.com/*命令删除,最后的避免错误方法就是要用tab键去补全,不要手敲任何字符,防止误删。
10 不要高射炮打蚊子
如果删除的不是目录,就不要用rm -fr,采用最下化的方法rm -f即可,甚至重要的少量文件,可以不用-f,以获得确认删除提示信息。
11 使用&&代替cd...rm
我们常用命令
cd ${log_path}
rm -rf *
在shell脚本中我们常用上述命令, 合并成一个语句
cd ${log_path} && rm -rf *
当前半句执行失败的时候,后半句不再执行。更安全
12 rsync --delete
慎用rsync --delete
总结:
A. 删除数据后,多数情况是可以恢复的,但会影响业务.
例如:需要停机恢复,且数据丢了,较长时间用户访问不了对应数据了
B. 恢复工具诸如ext3grep等。
C. 事情发生前未雨绸缪永远比发生了在解决好得多。
D. 养成专业规范的运维习惯