Linux中的rm 命令删除文件或者文件夹是从磁盘中直接删除的,误删后很难恢复。不小心用rm误删了重要的脚本或者数据,如果没有及时备份,那结果往往是痛心疾首,后悔莫及。
创新互联建站从2013年开始,是专业互联网技术服务公司,拥有项目成都做网站、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元白沙黎族做网站,已为上家服务,为白沙黎族各地企业和个人服务,联系电话:18980820575
运行下边这个脚本,系统会在主目录下生成一个.tool文件夹和.trash文件夹。该脚本同时还会自动产生一个remove.sh脚本,并用alias命令把rm替换为remove.sh。
remove.sh脚本的功能是把文件移动到垃圾桶~/.trash,并在文件的前边加上时间戳,方便误删找回。
当运行 rm -r data时,实际上linux执行的是 remove.sh。“删除”的文件被移动到了~ .trash目录下,如果你的文件不小心手滑删掉了,可以在~/.trash中找回。
当然,如果一直删除文件,文件一直被移动到~/.trash下,那么垃圾桶里的数据会越来越多。该脚本设定了每天早上5:30自动清空垃圾桶。
完整脚本,亲测可用
替换rm,做回收站:
#临时失效:
mkdir -p ~/.trash
alias rm=trash
alias r=trash
alias rl='ls ~/.trash'
alias ur=undelfile
undelfile()
{
mv -i ~/.trash/$@ ./
}
trash()
{
mv $@ ~/.trash/
}
#永久生效:
mkdir -p ~/.trash
vi /root/.bashrc
#添加
alias rm=trash
alias r=trash
alias rl='ls ~/.trash'
alias ur=undelfile
vi /etc/profile
#添加
undelfile()
{
mv -i ~/.trash/$@ ./
}
trash()
{
mv $@ ~/.trash/
}
如果删除的位置是在$HOME目录下,则回收站目录为:~/.local/.share/Trash,其中的目录结构一致。只要是在$HOME目录外的独立的Linux分区中删除的文件都不会出现在Nautilus的回收站中,Nautilus的回收站仅显示~/.local/share/Trash/file中的文件。
在命令行界面下rm命令删除的文件是不会放入垃圾箱的,所以无法恢复,但是可以通过替换Linux rm命令的方法,从而将rm命令删除的文件放入垃圾箱,这样就能将误删的文件恢复。
方法如下:
1. 在/home/username/ 目录下新建一个目录,命名为:.trash
2. 在/home/username/tools/目录下,新建一个shell文件,命名为: remove.sh
PARA_CNT=$#
TRASH_DIR=“/home/username/.trash”
for i in $*; do
STAMP=`date +%s`
fileName=`basename $i`
mv $i $TRASH_DIR/$fileName.$STAMP
done
3. 修改~/.bashrc, 增加一行
alias rm=“sh /home/username/tools/remove.sh”
用我们自建的remove.sh替代rm命令
4. 设置crontab,定期清空垃圾箱,如:
0 0 * * * rm -rf /home/username/.trash/*
每天0点清空垃圾箱
5. source ~/.bashrc 使替换立即生效