[root@xxxxx ~]# hadoop fs -du -h /tmp | grep G
1.9 G /tmp/eventlog
92.7 G /tmp/hive
#!/bin/bash
usage='Usage: dir_diff.sh [days]'
if [ ! "$1" ]
then
echo $usage
exit 1
# 这里还需要检查下是否是两位以下正整数
fi
days=$1
now=$(date +%s)
seconeds_a_day=$[24 * 60 * 60]
# 删除此时间之前的数据
last_day_second=$[$now - $days * $seconeds_a_day]
echo '当前本地时间:' `date`
echo '删除截止时间:' `date -d "1970-01-01 UTC $last_day_second seconds"`
echo "保留文件天数: $days"
hadoop fs -ls /tmp/hive/ | grep "^d" | grep -v /tmp/hive/.hive-staging_hive_ | awk '{print $8}' | while read base_dir; do
dirs_array=()
echo "声明数组"
index=0
while IFS= read -r f; do
dir_date=`echo $f | awk '{print $6}'`
if [ $last_day_second -gt $(date -d "$dir_date" +%s) ]; then
dir_addr=`echo $f | awk '{ print $8 }'`
dirs_array[$index]=$dir_addr
let index+=1;
# echo $dir_date $dir_addr
fi
done < <(hadoop fs -ls $base_dir | grep "^d")
if [ ${#dirs_array[*]} -gt 0 ]
then
echo "超时的文件夹个数:" $base_dir": "${#dirs_array[*]}
hadoop fs -rm -R -skipTrash ${dirs_array[*]}
else
echo "没有符合要求的文件夹": $base_dir
fi
done
网友评论