1GB 이상의 디렉토리에 있는 모든 파일을 압축하는 쉘 스크립트

1GB 이상의 디렉토리에 있는 모든 파일을 압축하는 쉘 스크립트

내 파일 /var/logs/*.log에서 크기가 1GB를 초과하는 모든 파일을 압축 하는 스크립트를 생성해야 합니다 /var/logs/*.zip. 예를 들어 크기가 1024MB를 초과하는 access_log.log경우입니다 .access_log.zip

답변1

이것은 작동할 수 있습니다(실행에서 /var/log):

find *.log -type f -size +1G |xargs -L1 -I file zip file.zip file

설명하다

  • find *.log -type f -size +1G1GB보다 큰 모든 파일 찾기
  • xargs -L1 -I file zip file.zip file모든 파일을 압축

xargs멀티 코어 시스템을 사용하는 경우(아마도 그럴 것임) 인수를 제공하여 4개의 zip 명령을 병렬로 실행할 수 있습니다 -P4.

더 많은 공간을 절약하고 싶다면 zip-9옵션을 제공해보세요.

또한 Unix 세계에서는 gzip, bzip2xz/가 Zip보다 더 일반적이라는 점에 주목할 가치가 있습니다.lzip

답변2

이 예에서는 find -size 옵션 1M을 확인하세요.

find . -size +1M --exec gzip {} \;

하지만 /var/log 폴더에 있는 경우 logrotate 방법을 사용하여 파일 기록 및 자동 압축을 관리하는 것이 좋습니다.

관련 정보