ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux rm命令 回收机制

2020-06-04 11:39:26  阅读:301  来源: 互联网

标签:bashrc 回收 命令 Linux rm trash root rmm


        在linux在rm的使用频率很高,误删,错删的情况自然避免不了,本人就曾经在错误的目录下使用了 rm -rf  ./*  命令 ,花了半天才把环境重新搭建好......    所以建立一种可回退的机制就很有必要。

        看了网上的介绍,整体的实现方式分为两种:

              1.利用github上的项目 使用一个新的命令 trash去删除文件。

              2.改写rm命令,利用mv命令移动文件or文件夹到指定的文件夹下,再定时删除。

       很遗憾我看了几篇文章的git地址都下载不了,只能利用第二种方法自己实现。

       利用mv命令也有两种实现方式:

               1.改变rm的调用方式,让其不再调用/bin/rm 命令而是转而调用利用mv实现的删除函数

                2.新建一个命令。 

       考虑到本身环境的其他脚本已经调用rm命令,可能会导致其他脚本运行出错,加上工作的环境多人在使用。这里我采用了方式2,新建一个rmm命令,避免不必要的麻烦。(真正的工作环境中推荐这种方式)

        实现rmm命令的方式也有两种方式:

               1.在根目录下创建一个 .myrm.sh 然后  alias rmm='sh /root/.myrm.sh' 

               2.将移动文件夹的函数trash()直接写入/etc/bashrc中,然后 alias rmm=trash

       考虑到其他用户调用/root/.myrm.sh存在权限问题,这里值得一提的是就算采用第一方式 再chmod 777 /root/.myrm.sh也会存在权限问题。具体原因未知。抛开第一种的权限问题,第二种方法也更加简单明了。

 

综合网上的文章,我的具体实现方式如下:

#rm回收机制机制
1.切换root用户  
2.vi /etc/bashrc  #在文件末尾加添加下方代码 --写入 /etc/bashrc 而不写入~/.bashrc的原因是让rmm命令在此机器的每个用户都生效 
3.source /etc/bashrc   --让/etc/bashrc 生效
4.设置crontab定时任务,利用rm去清空垃圾桶中超过三天的文件 --eg:find /home/用户/.trash/*  -ctime +3 |xargs rm -rf  推荐全部写入root用户的定时任务中
5.关闭已经打开的xshell窗口,重新打开

#需要在文件末尾添加的内容如下
#rmm删除文件
alias rmm=trash
#显示垃圾桶内的文件
alias rl=' ls -a  $HOME/.trash'
#使用rmtrash清空回收站  这里注释掉的原因是我会设置定时任务去清空 有需要的同学可以放开
#alias rmtrash=cleartrash 

trash()
{
#采用$HOME是为了在每个用户的家目录下都新增一个垃圾桶,让便查看和操作,避免root权限问题
 trash_path="$HOME/.trash"
 if [ ! -d $trash_path ]; then
    mkdir -p $trash_path
 fi
 for i in $*; do
       #避免习惯性使用rm 带-f -rf参数
       if [ "$i" == "-f" -o "$i" == "-rf" ] ;then
           continue
       fi  
       #避免短时间内删除同名文件
       STAMP=`date +%Y%m%d-%H:%M:%S`
       FileName=`basename $i`
       mv $i $trash_path/$FileName"_"$STAMP
 done
}

cleartrash() 
{ 
 read -p "确定要清空回收站吗?[y/n]" confirm 
 [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/* 
}

效果展示:

root用户:

 

 

一般用户:

       如果及时发现删除文件了,且未超过预置的存放时间(我这里定时任务设置的三天),立即cd ~/.trash  将垃圾箱中的文件挽救出来。希望对读者有用。

 

标签:bashrc,回收,命令,Linux,rm,trash,root,rmm
来源: https://blog.csdn.net/zhang1308299607/article/details/106527850

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有