- linux系統沒有資源回收筒機制,删除檔案就很難找回,如果把系統的/bin/rm檔案替換為自定義的腳本,則可以做到資源回收筒的功能
文章目錄
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/*