在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也会存在权限问题。具体原因未知。抛开第一种的权限问题,第二种方法也更加简单明了。 综合网上的文章,我的具体实现方式如下: 效果展示: root用户: 一般用户: 如果及时发现删除文件了,且未超过预置的存放时间(我这里定时任务设置的三天),立即cd ~/.trash 将垃圾箱中的文件挽救出来。希望对读者有用。
#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/* }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算