作者:张岩峰,转载请注明出处 笔名:云烟旧梦
51CTO课程地址:https://edu.51cto.com/lecturer/12750547.html Linux技术交流群:1127825548
我们都知道“rm -rf”这个命令很危险,命令敲得多了,难免会失误。常在河边走,难免会湿鞋!
在生产环境下,如果在你文件没备份,你一个手误,敲错了命令,把原本想要留下的文件夹给rm -rf掉了。几天心血全没了,靠,想死的心都有了!当然心态还得稳住!
几点教训:
1、rm特别是rm -rf之前,小心,三四,或者直接将命令改写掉。
2、做好备份,有便捷的备份脚本。
3、做好定时备份,有个前辈搞定时脚本,每天定时自个执行,即使删错了也不会那么悲催。
实验目的:我们就是要在linux服务器上弄一个windows系统上一样的回收站,这样即使我们删错了文件,也可以通过回收站找回,可以极大的减少我们的损失!(这是运维的一个小细节)
实验开始:
rm命令被移除
rl命令是查看回收站内容,相当于ls 回收站。
ur命令是恢复指定文件。
cleartrash命令是清空回收站。
首先,先搞个回收站
[root@localhost ~]# mkdir -p ~/.trash
在~下.bashrc或者bash_profile加入如下内容
[root@localhost ~]# vi ~/.bash_profile
alias rm=trash
alias r=trash
alias rl='ls ~/.trash'
alias ur=undelfile
undelfile()
{
mv -i ~/.trash/$@ ./
}
trash()
{
mv $@ ~/.trash/
}
[root@localhost ~]# . ~/.bash_profile
注意:rm就相当于执行mv了,此时已经没有rm -rf了,删除的文件会在.trash中出现,所以我们就可以恢复回去了。
测试回收站主功能:
创建/qq文件夹并删除,看一下回收站是否存在。
[root@localhost ~]# mkdir /qq
[root@localhost ~]# rl
[root@localhost ~]# rm -f /qq
[root@localhost ~]# rl
qq <==存在
恢复回收站文件,需要指定文件名,或者可以直接进入文件夹mv出去!
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1193 Nov 30 03:41 anaconda-ks.cfg
[root@localhost ~]# ur qq
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1193 Nov 30 03:41 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Feb 3 22:49 qq
注意:使用ur命令恢复文件只会将文件恢复到用户家目录下。
测试结束!
这里就出现了一个问题,如果删除回收站里的东西,rm命令在这里是没用的。
在.bashrc加函数
[root@localhost ~]# vi .bashrc
cleartrash()
{
read -p "clear sure?[n]" confirm
[ $confirm == "y" ] || [ $confirm == "Y" ] && /usr/bin/rm -rf ~/.trash/*
}
$..bashrc
[root@localhost ~]# . ~/.bashrc
然后,如果想清空回收站的话,使用“cleartrash”命令就可以了。
测试回收站清空功能:
[root@localhost ~]# rl
[root@localhost ~]# rm -f qq/
[root@localhost ~]# rl
[root@localhost ~]# cleartrash
clear sure?[n]y
[root@localhost ~]# rl
清空了!
测试结束!
至此实验结束!