파일과 하위 디렉터리가 많은 디렉터리에서 찾기 명령이 매우 느립니다.

파일과 하위 디렉터리가 많은 디렉터리에서 찾기 명령이 매우 느립니다.

약 일주일 동안 나는 다음 명령이 완료되기를 기다리고 있었습니다.

find -type d -empty -print -delete >> empty-folder-deletion-log.txt

하지만 여전히 진행 중인 일이고, 아직 해야 할 일이 많이 남아 있는 것 같습니다. 이제 전체 하드 드라이브를 여러 번 이미지화한 것 같아서 이 명령이 최적이 아니거나 속도를 높일 수 있는 방법이 있는 것 같습니다.

공평하게 말하자면, 수많은 파일과 폴더가 있습니다. 한 하드 드라이브에는 약 1억 개의 inode가 있고 다른 하드 드라이브에는 약 1억 7500만 개의 inode가 있습니다.

작업 속도를 높이려면 어떻게 해야 합니까? 이 문제는 임의 IO와 관련된 것으로 생각됩니다. 메타데이터가 하드 드라이브에 저장되는 순서대로 조회를 줄이는 동등한 명령이 있습니까? 명령을 중단하지 않고 속도를 높이려면 어떤 옵션이 있어야 하나요? 아니면 다른 프로그램을 사용하여 다시 시도할 수 있는 방법이 있나요? noatime으로 다시 설치하면 도움이 되나요? 그렇다면 명령을 중단하지 않고 이 작업을 수행할 수 있습니까?

나는 이 글을 쓰는 시점에서 Debian Bullseye인 최신 버전의 Debian stable을 사용하고 있습니다. 이 명령은 두 개의 하드 드라이브(8TB 드라이브와 12TB 드라이브)에서 실행되며 둘 다 5400RPM으로 회전합니다.

답변1

제가 직접 사용해본 적은 없지만 -empty가격이 비쌀 수 있습니다. 또한 -depth깊이 우선 검색을 사용하지 않으면 비어 있는 디렉터리 트리를 반복적으로 삭제하지 않고 가장 낮은 수준의 디렉터리만 찾을 수 있습니다.

strace -ttt -T -p <find_pid>무엇이 그렇게 오래 걸리는지 확인하려면 (및/또는 ltrace)를 사용하는 것이 좋습니다 .

관련 정보