Linux日常运维(4)—修改rm -rf实现回收站功能

网友投稿 1023 2022-10-04

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Linux日常运维(4)—修改rm -rf实现回收站功能

rm -rf 是一个极其危险的操作,而且linux端不像windows,有回收站的后悔药可以吃,所以一旦误操作,就会造成不可挽回的后果。

今天通过shell重写,在linux端实现一个回收站的功能,可以实现将rm -rf 删除的文件指定存放到一个路径下,并定期来清理。

创建一个路径来作为我们的回收站:cd ~ && mkdir .trash #/root/.trash路径,即作为我们的回收站路径

赋予最高权限:chmod 777 .trash修改你的 home 目录下的:.bashrc:vim ~/.bashrc

# rm transformfunction rm() { # 定期清理回收站,时间可调整 now=$(date +%s) for s in $(ls --indicator-style=none $HOME/.trash/) ;do dir_name=${s//_/-} dir_time=$(date +%s -d $dir_name) # if big than one month then delete if [[ 0 -eq dir_time || $(($now - $dir_time)) -gt 2592000 ]] ;then echo "Trash " $dir_name " has Gone " /bin/rm $s -rf fi done # 重写rm命令,将文件mv到回收站下 prefix=$(date +%Y_%m_%d) hour=$(date +%H) mkdir -p $HOME/.trash/$prefix/$hour if [[ -z $1 ]] ;then echo 'Missing Args' return fi echo "Hi, Trashing" ${!#} "to /root/.trash" mv ${!#} $HOME/.trash/$prefix/$hour}

source ~/.bashrc 使配置文件立即生效,最后 我们来做一下测试

#创建测试文件[root@mail ~]# touch test.txt#使用rm -rf 删除该文件[root@mail ~]# rm -rf test.txt Hi, Trashing test.txt to /root/.trash#创建测试文件[root@mail ~]# touch aaa.txt#使用rm 删除该文件[root@mail ~]# rm aaa.txt Hi, Trashing aaa.txt to /root/.trash#查看一下回收站里的文件,已经被成功移过来了[root@mail ~]# ll /root/.trash/2020_07_17/17/total 0-rw-r--r-- 1 root root 0 Jul 17 17:16 222-rw-r--r-- 1 root root 0 Jul 17 17:36 aaa.txt-rw-r--r-- 1 root root 0 Jul 17 17:14 eeee-rw-r--r-- 1 root root 0 Jul 17 17:36 test.txt

现在我们删除一个测试文件:rm a.txt 或者 rm -rf aaa.txt

会事显示:Hi, Trashing aaa.txt to /root/.trash因为我们上面的 shell 每次触发 rm 明白的时候都会去删除一个月前的目录,所以就不需要定时器来删除 .trash 里面的文件了。

如果强制清空"回收站"(即清空 .trash 目录),可以使用真正的 rm 命令:/bin/rm -rf ~/.trash/*

上一篇:容器技术基石:Linux namespace 和 cgroups,运维了解一下
下一篇:Linux运维 --- 使用Squid部署代理缓存服务
相关文章

 发表评论

暂时没有评论,来抢沙发吧~