검색이 대용량 디스크를 검색하다가 어떤 이유로 중단된 경우 중단된 부분부터 다시 시작할 수 있기를 바랍니다.
이 작업을 수행할 수 있는 "찾기" 버전이 있나요?
문제는 디렉토리를 저장하고 거기에서 실행하면 동일한 조회를 수행하지 않는다는 것입니다. 예를 들어:
find /bigvol -type f -execdir whereami="$(pwd)";do_it {} \; echo whereami >/bigvol/state
/bigvol/down/in/the/deep이라고 가정하고 현재 검색된 디렉토리를 /bigvol/state 파일에 넣습니다.
하지만 다음 조회를 시작하면 다음과 같이 됩니다.
find "$(cat /bigvol/state)" -type f -execdir whereami="$(pwd)";do_it {} \; echo whereami >/bigvol/state
그런 다음 "deep"에서 모든 것을 찾을 수 있지만(해당 디렉터리의 처음 몇 개의 파일에 대해 "deep"을 다시 실행) 중지하고 더 이상 /bigvol/further를 검색하지 않습니다.
나는 이렇게 말할 수 있었으면 좋겠다:
find <dir>:<starting from>
따라서 위의 예에서 마지막으로 처리된 파일을 저장했다면 다시 시작하세요.
이상적으로 구문은 다음을 허용합니다.
find <dir>:<starting_from> -- start from the last file and re-execute for that filefind <dir>:+<starting_from> -- start from the file after the last file last file
filefind <dir>:-<starting_from> -- start from the file before the last file last file
어떤 아이디어가 있나요?
답변1
나는 이것을 할 수 있는 어떤 방법도 모른다. 어쩌면 다른 도구가 이를 수행할 수도 있습니다. 아니면 상황을 보는 다른 방법이 필요할 수도 있습니다.
조회 작업을 여러 조회로 분할할 수 있습니다. 이 /bigvol
폴더에는 하위 폴더가 있을 수 있습니다. 작업을 find
각 폴더에 대한 작업으로 분할할 수 있습니다. 처음 몇 개의 폴더를 이미 처리한 경우 나중에 해당 폴더를 건너뛸 수 있습니다.
여기서 문제는 이러한 하위 폴더 중 하나에 전체 파일의 95%가 포함될 수 있다는 것입니다. 이를 분석하는 데 사용할 수 있습니다 du
. 이것을 알면 더 분할할 수 있습니다. 문제는 이 접근 방식으로 얼마나 멀리 갈 수 있느냐는 것입니다.