큰 디렉토리보다 오래된 파일을 삭제하는 방법

큰 디렉토리보다 오래된 파일을 삭제하는 방법

1,300만 개 이상의 파일이 있는 디렉토리가 있고 mtime을 기반으로 그 중 일부를 삭제하고 싶습니다. 이 작업을 효율적으로 수행하는 방법은 무엇입니까? ext4에 있습니다.

답변1

아마도 다음보다 더 효율적인 것을 얻지 못할 것입니다.

find /dir -type f -mtime +6 -delete

7일(예, 6일이 아닌 7일)이 지난 파일을 삭제합니다.

어떤 경우든 lstat()각 파일에 대해 시스템 호출을 수행하여 마지막 수정 시간을 확인해야 합니다. 파일 삭제( unlink()디렉토리에서 파일 제거)는 디렉토리 내용 편집, 디렉토리 수정 시간 업데이트, inode에서 파일 링크 수 업데이트, 블록/범위 할당 정보 업데이트가 필요하기 때문에 비용이 많이 듭니다.

(GNU 확장)을 사용하는 것은 별도의 유틸리티를 호출할 필요 없이 직접 수행 -delete할 수 있으므로 매우 효율적입니다 . 이라는 뜻 이지만 성능에는 큰 영향을 미치지 않을 것 같습니다.unlink()findrm-depth

관련 정보