답변:
아니.
rm -rf
unlink()
모든 파일을 호출하여 파일 시스템의 재귀 깊이 우선 순회를 수행합니다 . 프로세스가 느리게 진행되는 두 가지 작업은 opendir()
/ readdir()
및 unlink()
입니다. opendir()
그리고 readdir()
디렉토리에있는 파일의 수에 따라 달라집니다. unlink()
삭제되는 파일의 크기에 따라 다릅니다. 더 빨리 진행할 수있는 유일한 방법은 파일의 크기와 수를 줄이거 나 (아마도 의심스럽지 않은) 파일 시스템을 해당 작업에 더 좋은 특성을 가진 파일 시스템으로 변경하는 것입니다. XFS는 큰 파일의 unlink ()에는 좋지만 큰 디렉토리 구조에는 좋지 않다고 생각합니다. ext3 + dirindex 또는 reiserfs가 더 빠를 수 있습니다. 나는 JFS가 얼마나 잘 운임을 확신하지 못하지만 다른 파일 시스템 성능에 대한 벤치 마크가 많이 있다고 확신합니다.
편집 : XFS는 나무를 삭제하는 데 끔찍한 것 같아 파일 시스템을 확실히 변경하십시오.
unlink
내용을 말하지만 unlink
시스템 호출 을 수행하기 위해 올바른 말 을하고 있지만 , 파일 시스템 코드는 제거 된 링크가 파일에 대한 마지막 링크이고 현재 열려 있지 않은 경우 더 많은 작업을해야합니다. 이것은 물론 파일 시스템에 따라 다르지만 제거 된 파일이 크면 매우 뚜렷한 차이가있을 수 있습니다.
대안으로, 디렉토리를 한쪽으로 이동하고 동일한 이름, 권한 및 소유권으로 다시 작성하고 해당 디렉토리에 관심이있는 앱 / 서비스를 다시 시작하십시오.
그런 다음 확장 된 중단에 대해 걱정할 필요없이 백그라운드에서 원래 디렉토리를 "nice rm"할 수 있습니다.
XFS에 올바른 마운트 옵션이 설정되어 있는지 확인하십시오.
XFS와 함께 -ologbufs = 8, logbsize = 256k를 사용하면 삭제 성능이 세 배가됩니다.
파일 수준에서 rm을 효과적으로 수행하는 경우 시간이 오래 걸립니다. 이것이 블록 기반 스냅 샷이 좋은 이유입니다.)
rm을 별도의 영역으로 나누고 병렬로 시도해 볼 수는 있지만 개선을 기대할 수는 없습니다. XFS는 파일을 삭제하는 데 문제가있는 것으로 알려져 있으며, 이것이 수행하는 작업의 많은 부분 인 경우 다른 파일 시스템 일 수 있습니다.
나는 이것이 오래되었다는 것을 알고 있지만 제안에서 id toss를 생각했습니다. 병렬 rm 작업을 실행하면 작업 속도가 빨라질 수 있습니다.
http://savannah.nongnu.org/projects/parallel/ 병렬은 일반적으로 xargs 대신 사용할 수 있습니다
deltedir에서 모든 파일을 삭제하면
find -t f deletedir | parallel -j 10 rm
빈 디렉토리 구조를 삭제하면됩니다.
참고 : 위에서 언급 한 것처럼 여전히 파일 시스템 제한에 부딪 칠 수 있습니다.
rm을 수행하는 대신 실제 파일 시스템을 정크 및 재구성 할 수있는 방식으로 데이터를 분리하는 대안 옵션이 있습니까?
명령의 훌륭함을 줄이는 것은 어떻습니까? 처럼:
nice -20 rm -rf /path/to/dir/
find . -delete -name directory
했고 그것은 훨씬 빠르다rm -rf
.