날짜별로 수십만 개의 파일 삭제 [닫기]

날짜별로 수십만 개의 파일 삭제 [닫기]

나는 다른 디렉터리에 있는 파일의 수명을 확인하고 만료 날짜가 지난 파일을 삭제할 수 있는 스크립트를 원합니다. 생성 날짜가 다른 수십만 개의 파일이 있을 수 있습니다. 일부 디렉토리에는 파일이 그렇게 많지 않습니다. 약 100개의 디렉토리가 있습니다. 이러한 디렉토리에는 유효 기간이 다릅니다. 저는 구성을 위해 YAML을 사용하고 스크립팅 언어로 Perl 5 또는 Python 3을 사용하는 것을 고려하고 있습니다. 어느 쪽이 일을 더 빨리 끝내나요? 이 작업은 몇 시간(3~5) 내에 완료될 수 있습니까, 아니면 며칠이 소요됩니까?

이 스크립트는 Linux에서 실행됩니다.

답변1

이러한 디렉토리에는 유효 기간이 다릅니다.

따라서 루프와 최대 값이 필요합니다. 100 통화 find.

find ... -delete해당 방법(또는 다른 방법을 직접 사용)을 사용하면 몇 초 밖에 걸리지 않을 것 같습니다.어떻게이것을 보조라고 합니다.

구성 파일은 2열 파일로 단순화될 수 있습니다.

한 가지 최적화 방법은 동일한 exp를 가진 디렉터리를 그룹화하는 것입니다. 예를 들어, 함께 데이트를 해보세요:

find dir1 dir2 dir3 -type f -mtime  +7 -delete

(최소 8일이 지난 일반 파일은 마지막 수정 시간을 기준으로 삭제됩니다.)

find dir4 dir5 dir6 -type f -mtime +30 -delete

(최소 31일이 지난 일반 파일은 마지막 수정 시간을 기준으로 삭제됩니다.)


따라서 Perl이 필요하지 않지만 편안한 YAML 구문 분석 및 일부 목록 정렬을 위해서는 물론입니다.


생각해 보세요. "find-ML"을 직접 사용할 수 있습니다.

find dir1 dir2 dir3\
 d7 d13\
 d42 d44 d46\
 -type f -mtime  +7 -delete


find dir4 dir5 dir6\
 d11 d19\
 d61 d62 d63\
 -type f -mtime  +30 -delete


find ...\
 ...\
 -type f -mtime  +XY -delete

데이터와 코드를 혼합하는 것이 보기 흉하다고 말할 수 있지만 귀하의 경우에는 95%가 데이터입니다. 이 코드는 YAML 파일과 마찬가지로 요일을 기준으로 디렉터리를 그룹화하기 위한 것입니다. 디렉토리의 만료 날짜 할당에 대한 몇 가지 규칙이 있을 수 있습니까? 아니면 어쨌든 손으로 해야 합니다. 왜 그렇게 간단하지 않습니까? (설정 및 유지 관리에 약간의 시간이 걸립니다)

관련 정보