linux不删除文件:替换rm命令

  • linux系统没有回收站机制,删除文件就很难找回,如果把系统的/bin/rm文件替换为自定义的脚本,则可以做到回收站的功能

    文章目录

    • 1, 替换rm命令
    • 2, 定时清理:回收站

1, 替换rm命令

########## 第一步: 备份系统的/bin/rm文件 ##########
[root@eadage ~]# mv /bin/rm  /bin/rm.bak



########## 第二步: 编写/bin/rm脚本 ##########
[root@eadage ~]# cat /bin/rm 
#!/bin/bash
#定义回收站路径
trashdir=/tmp/trash
[ ! -e $trashdir ] && mkdir -p $trashdir
permission=$(ls -ld $trashdir|awk '{print $1}' )
[[ $permission != "drwxrwxrwx" ]] && chmod 777 $trashdir

#1, 排除参数后,获取file/dir
#echo -f -r test/ |xargs -n 1 |grep -v '^\-'
dest_filedirs=$(echo $@ |xargs -n 1 |grep -v '\-'|xargs) 
for x in ${dest_filedirs[*]}
do
   #2, 排除/tmp/trash里面的重复目录名
   base_name=$(basename $x)
   dir_name=$(dirname $x)
   cd $dir_name && dir_name=$(pwd)
   
   #2.1, 移动原文件/目录为别的名字:防止同名文件或目录报错
   [ -e $trashdir/$base_name ] && cd $trashdir && mv $base_name $base_name.`date +%F_%T` 
   cd $dir_name && mv $base_name $trashdir
done



##########  第三步:添加脚本执行权限 ##########
[root@eadage ~]# chmod +x /bin/rm 

2, 定时清理:回收站

[root@eadage ~]# crontab -l 
#清空trash目录:每月1号
1 1 1 * * /bin/rm.bak -rf /tmp/trash/*

你可能感兴趣的:(linux编程-shell)