셸 은 지정 한 폴 더 의 yyyMMdd 형식 폴 더 를 재 귀적 으로 압축 한 다음 지정 한 날짜 이전의 폴 더 를 삭제 합 니 다.

이전에 회사 에서 이런 수요 가 있 었 다.
 제3자 인 터 페 이 스 를 호출 하고 요청 과 응답 메 시 지 는 서버 의 특정 디 렉 터 리 에 놓 여 있 으 며 서비스 이름 / 날짜 (2018120) / 메시지. json 에 따라 시간 이 지나 면 데이터 양 이 점점 많아 지고 저장 공간 이 부족 하여 서버 의 성능 에 영향 을 줄 수 있 습 니 다.당시 30 일 전 파일 을 모두 zip 압축 하고 폴 더 를 삭제 하 라 고 요구 했다.공간 을 아끼다.
그래서 스 크 립 트 를 써 서 해결 해 달라 고 했 어 요.
 
#!/bin/bash
function getdir(){
	echo $1
	##date -d '-30days' '+%Y%m%d'
	targetDate=$(date -d '-30days' '+%Y%m%d')
    for element in `ls $1`
    do  
        dir_or_file=$1"/"$element
        if [ -d $dir_or_file ]
        then
			cd $1""
			if [[ $targetDate > $element ]] && [[ $element == 20* ]] && [[ ${#element} == 8 ]];
			then
				echo "begin folder-->" $element 
				zip -r "${element}".zip "${element}"
				echo "rmove-->" $element
				rm -rf $element
				echo "end folder-->" $element
			else			
				getdir $dir_or_file
            fi
        fi  
    done
}
###            ,             ,               。
root_dir="/nasdata/service/"
getdir $root_dir



좋은 웹페이지 즐겨찾기