linux系统中误删文件恢复很麻烦,可以通过alias修改rm别名实现删除文件到回收站。

创建脚本/usr/local/bin/rm.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
_recyc='/data/.recycle'  #data disk
test ! -d  $_recyc && mkdir -p $_recyc

_datedir=`date +"%Y%m%d%H%M%S"`
_dstdir=$_recyc/$_datedir

test ! -d $_dstdir && mkdir -p $_dstdir
for _parms in $*
do
        if [ -d $_parms ] || [ -f $_parms ];then
                test -d $_parms && mv $_parms $_dstdir/
                test -f $_parms && mv $_parms $_dstdir/
        else
                #echo "$_parms is not directory or file and canot rm"
		:
        fi

done

~/.bashrc中更改rm别名设置

1
alias rm='/usr/local/bin/rm.sh'

这样rm文件后会被mv至回收站/data/.recycle中,如果确认要直接删除文件可以使用绝对目录下的rm命令/bin/rm进行删除操作。

同时回收站文件会越来越多,可以再另写脚本加入crontab定期删除回收站中文件。