Linux自動壓縮文件並刪除特定壓縮包

 autoTarAndClear.sh

#!/bin/bash
TIME=`date '+%Y%m%d_%H%M%S'`
if [ ! -n "$2" ] ;then
    TAR_DIR=$1
    #echo "you have not input a tar path!"
else
    TAR_DIR=$2
    #echo "the tar path you input is $2"
fi
mkdir -p $TAR_DIR

# 查找指定後綴的文件
array_files=(
`find $1 -regex ".*\.log\|.*\.json" -type f -size +100000k`
)
array_length=${#array_files[*]}

# 文件打包到TAR_DIR指定的目錄
for((i=0;i<$array_length;i++))
do
    echo "Found file ${array_files[$i]}"
    filename=`basename ${array_files[$i]}`
    echo "filename is $filename"
    copyFileName="${filename}_${TIME}"
    #cp ${array_files[$i]} "${TAR_DIR}/${filename}_${TIME}.tar.gz"  
    #tar -zcvf "${TAR_DIR}/${filename}_${TIME}.tar.gz" ${array_files[$i]} 
    cp ${array_files[$i]} "${TAR_DIR}/${copyFileName}"
    echo "" > ${array_files[$i]}
    tar -zcvf "${TAR_DIR}/${copyFileName}.tar.gz" -C "${TAR_DIR}" $copyFileName
    rm -f "${TAR_DIR}/${copyFileName}"
done

dirSize=`du -s $TAR_DIR | awk '{ print $1 }'`
maxSize=$((1024*1024*2))

# 目錄大小超過maxSize時刪除較早的壓縮包
if [ $dirSize -gt $maxSize ]
then
    find $TAR_DIR -name "*.tar.gz" | ls -rt | head -n 5| xargs rm -f
fi

使用方法:

bash autoTarAndClear.sh PATH_1 PATH_2

example:

bash autoTarAndClear.sh /home/ /tmp/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章