지난 7일 동안의 백업 크기 결정

지난 7일 동안의 백업 크기 결정

/home/abdul/backup지난 1년간의 파일이 포함된 폴더가 있다고 가정해 보겠습니다 .gz. 내 요구 사항은 지난 7일의 크기를 가져오는 것입니다...

답변1

find /home/abdul/backup -daystart -name '*.gz' -mtime -7 -exec du -h '{}' ';'

작동 방식:

find- 주석에 적힌 내용이 나와 있습니다. 사용 중인 OS를 지정하지 않았으므로 GNU find에 액세스할 수 있다고 가정합니다.

/home/abdul/backup- 시작 디렉토리

-daystart- 하루를 시작한 이후의 시간을 측정합니다(원하는 결과일 수도 있고 아닐 수도 있음).

-name '*.gz'- 이름이 .gz(또는 더 정확하게는 match )로 끝나는 파일만 고려합니다.*.gz

-mtime -7- 파일 마지막 수정 시간7*24시간, -daystart를 고려

-exec du -h '{}' ';'- du사람이 읽을 수 있는 단위로 지정된 파일 크기의 인쇄를 수행합니다( {}해당 파일 이름으로 확장됨).

삭제된 모든 파일이 나열됩니다.수정됨지난 7일 이내. 실행 중인 특정 운영 체제 및 파일 시스템에 따라 파일이 생성된 시기를 확인할 수 있지만 많은 *nix 시스템은 파일이 원래 생성된 시기 또는 "생성된" 시기를 추적하지 않습니다.

답변2

find . -ctime -7 | xargs ls -l | awk '{ TOTAL += $5;} END{print TOTAL;}'

그러면 현재 디렉터리에서 7*24시간 이내에 생성된 파일이 먼저 나열되고 해당 파일의 크기를 바이트 단위로 가져와 요약한 후 결과를 제공합니다.

답변3

파일 이름에 공백이나 기타 이상한 문자가 포함되어 있지 않으면 다음과 같이 할 수 있습니다.

du -sch "$(find /home/abdul/backup -name '*.gz' -mtime +7) "

공백 및 기타 이상한 문자의 경우 다음을 사용하십시오.

find /home/abdul/backup -name '*.gz' -mtime -7 -print0 | xargs -0 du -sch

당신이 가지고 있다면많은위의 두 명령 모두 기준과 일치하는 파일에 대해 실패합니다. 첫 번째는 파일 목록이 너무 길기 때문이고, 두 번째는 xargs여러 명령으로 분할되어 각 하위 집합에 대한 합계를 반환하기 때문입니다.

이러한 문제를 피하기 위한 또 다른 해결책은 다음과 같습니다(Paulo Almeida에게 감사드립니다).논평말하는):

find /home/abdul/backup -name '*.gz' -mtime -7 -print0 | du -sch --files0-from -

에서 man du:

  --files0-from=F
          summarize  disk  usage  of  the NUL-terminated
          file names specified in file F; If F is - then
          read names from standard input

관련 정보