安全删除每天生成的图片目录

#!/bin/bash
$program="$0"
PIC_PATH=/home/liutao/test_delete


SHELF_LIFE=30
DELAY_LIFE=3
today=`date -d +%Y%m%d`
rename_suffix=_bak
delete_suffix=_del


function Log
{
  local path="$PIC_PATH/pic_delete.log"
  local now = `date +%Y%m%d\ %H:%M:%S`
  echo "$program[$now] - $1" >> $path
}


// return seconds
function modify_time
{
  local dir="$1"
  local day=`stat "$dir" |grep Modify|sed 's/\./ /g' |awk '{print $2,$3 }'`
  local ret=`date -d "$day" +%s`
  echo -n "$ret" 
}


function delete_dir
{
 Log "delete dir $1"
 cd "$1"
 rm -rf *
 cd ..
 rmdir "$1"
}


function MV
{
 Log "mv $1 to $2"
 mv -v "$1" "$2"
}


function can_rename
{
  local dir="$1"
  local now=`date +%s`
  local mtime=`modify_time "$dir"`
  if (( now - mtime > (SHELF_LIFE-1)*3600 )); then
    echo -n "1"
  else
    echo -n "0"
  fi
}


function can_delete
{
  local dir="$1"
  local now=`date +%s`
  local mtime=`modify_time "$dir"`
  if (( now - mtime > DELAY_LIFE*3600 )); then
    echo -n "1"
  else
    echo -n "0"
  fi
}




if [[ ! -d $PIC_PATH ]] ; then
  Log "$PIC_PATH not exist"
  exit 1;
else
  cd $PIC_PATH
fi


i=0
count=0


while (( i < SHELF_LIFE )) ; do
  dir=`date -d "-$i day" +%Y%m%d`
  if [[ -d $dir ]] ; then
    (( count++ ))
    Log "$dir exists"
  else
    Log "$dir not exists"
    break
  fi
  (( i++ ))
done


if (( count != SHELF_LIFE )) ; then
  Log "only have $count dirs"
  exit 0
fi


i=$SHELF_LIFE
j=0


to_rename=`date -d "-$i day" +%Y%m%d`
while [[ -d $to_rename ]] ;do
  ((j++))
  Log "$to_rename exist"
  can_rn=`can_rename "$to_rename"`
  if [[ $can_rn == "1" ]]; then
    MV  "$to_rename" "$to_rename$rename_suffix"
  else
    Log "$to_rename modify recently"
  fi
  ((i++))
  to_rename=`date -d "-$i day" +%Y%m%d`
done


k=0
(( k=SHELF_LIFE+DELAY_LIFE ))
to_delete=`date -d "-$k day" +%Y%m%d`
if [[ $j -eq 1 ]]; then
  if [ -d "$to_delete$rename_suffix" ]; then
    MV "$to_delete$rename_suffix" "$to_delete$delete_suffix"
    delete_dir "$to_delete$delete_suffix"
  fi
#  (( k++ ))
#  to_delete=`date -d "-$k day" +%Y%m%d`
#  while [ -d "$to_delete$delete_suffix"  ]; do
#    Log "$to_delete$delete_suffix exist"
#    can_dl=`can_delete "$to_delete$delete_suffix"`
#    if [[ $can_dl == "1" ]] ; then
#      delete_dir "$to_delete$delete_suffix"
#    fi
#  done;
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值