天天看點

linux不删除檔案:替換rm指令1, 替換rm指令2, 定時清理:資源回收筒

  • linux系統沒有資源回收筒機制,删除檔案就很難找回,如果把系統的/bin/rm檔案替換為自定義的腳本,則可以做到資源回收筒的功能

    文章目錄

    • 1, 替換rm指令
    • 2, 定時清理:資源回收筒

1, 替換rm指令

########## 第一步: 備份系統的/bin/rm檔案 ##########
[[email protected] ~]# mv /bin/rm  /bin/rm.bak



########## 第二步: 編寫/bin/rm腳本 ##########
[[email protected] ~]# 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 [email protected] |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



##########  第三步:添加腳本執行權限 ##########
[[email protected] ~]# chmod +x /bin/rm 
           

2, 定時清理:資源回收筒

[[email protected] ~]# crontab -l 
#清空trash目錄:每月1号
1 1 1 * * /bin/rm.bak -rf /tmp/trash/*