7일 전 zip 디렉토리를 압축하는 방법

7일 전 zip 디렉토리를 압축하는 방법

많은 XML 파일이 저장된 폴더가 있는데 폴더 이름은 "yyyymmdd" 형식입니다(예: 20180515). 그런 폴더가 7일 동안 커지면 압축할 수 있는 스크립트를 원합니다. 실제 경로: /test/xml_files/yyyymmdd/*.xml.

답변1

디렉터리의 날짜 형식이 주어지면 간단한 쉘 스크립트를 사용하여 마감일을 계산한 다음 모든 관련 디렉터리를 반복하여 마감일보다 빠른지(더 적은지) 물어볼 수 있습니다.

#!/bin/sh

cutoff=$(date -d "7 days ago"  +%Y%m%d)
for d in [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
do
  if [ $d -lt $cutoff ] && [ ! -f "${d}".zip ]
  then
    zip -r "$d" "$d"
  fi
done

유일한 요구 사항은 임의의 날짜를 계산할 수 있는 날짜 유틸리티(예: GNU의 유틸리티)입니다.

스크립트는 기한보다 오래되고 해당 zip 파일이 아직 존재하지 않는 디렉터리만 압축하려고 시도합니다. 원하는 경우 gzip을 대체할 수 있습니다. 조건을 tar조정하세요 .-f

답변2

나는 주어진 경로에 날짜 이름을 가진 디렉토리만 있다고 가정합니다. 그리고 수정 날짜나 생성 날짜가 아닌 디렉터리 이름과 날짜를 비교해야 합니다.

암호

offset_date=$(date -d "-7 day" +%s) ; for i in $(ls -1) ; do if [ $(date -d $i +%s ) -gt $offset_date ] ; then echo $i ; fi  ; done | xargs tar -czf directories.tar

설명: 여기서는 offset_date 변수에 7일이 넘는 epoch 날짜를 저장하고 이를 epoch로 변환한 후 디렉터리 이름과 비교하고 있습니다.

답변3

이를 달성하려면 find 명령을 사용할 수 있습니다.

find  /test/xml_files/ -type d -ctime +7 -exec tar -czvf {}.tar.gz {} \;
  • find /test/xml_files: /test/xml_files검색하려는 위치입니다.
  • -type d: 디렉터리(파일 형식)만 찾으면 됩니다.
  • -ctime +7: 7일 이상 수정된 사항만 고려
  • -exec tar -czvf {}.tar.gz {} \;: 기본적으로 tar -czvffind로 찾은 결과에 대해 수행됩니다.
tar -czvf <output-tar-name> <input-folder-name>
  • ctar를 만드는 데 사용됨
  • zgz 압축의 경우
  • v자세한 내용은
  • f파일용

따라서 기본적으로 find 두 가지 결과를 얻게 됩니다: 2018050120180502. 그런 다음 {}두 개의 아카이브 tar 파일을 전달하고 생성합니다 20180501.tar.gz.20180502.tar.gz

관련 정보