Windows에서 대량의 파일을 삭제하면 속도가 느립니다.


34

NTFS 디스크가있는 Windows XP 상자가 있으며 많은 양의 파일을 삭제하는 것이 매우 느립니다. 폴더 트리에서 많은 수의 파일이 포함 된 폴더를 선택하고 휴지통을 저장하기 위해 shift-del을 사용하여 삭제하면 폴더 내의 파일 수에 직접 비례하는 것처럼 보이는 데 시간이 걸립니다. 확인 상자가 나타납니다. 그런 다음 폴더의 각 파일을 삭제하는 데 시간이 더 걸립니다.

Windows에서 폴더를 삭제하고 폴더 내의 파일 수에 비례하여 시간이 걸리지 않는 방법이 있습니까?


답변:


60

Windows에서 폴더를 삭제하고 폴더 내의 파일 수에 비례하여 시간이 걸리지 않는 방법이 있습니까?

나는 그렇게 생각하지 않지만 일부 방법은 다른 방법보다 훨씬 빠릅니다.

최악의 방법은 휴지통으로 보내는 것입니다. 휴지통을 삭제해야합니다. 다음 최악의 상황은 Windows 탐색기를 사용한 shift + delete입니다.

다음으로 rmdir /s/q foldername명령 줄에서 사용 하는 것이 가장 좋습니다 .del /f/s/q foldername좋지만 디렉토리 구조 뒤에 남아 있습니다.

내가 찾은 가장 좋은 것은 모든 단일 파일에 대해 화면에 쓰는 오버 헤드를 피하기 위해 파일과 출력을 삭제하는 첫 번째 패스가있는 두 줄 배치 파일입니다. 두 번째 단계는 나머지 디렉토리 구조를 정리합니다.

del /f/s/q foldername > nul
rmdir /s/q foldername

이는 Windows XP 암호화 디스크를 사용한 시간 테스트를 기반으로 단일 rmdir보다 거의 3 배 빠르며 ~ 30GB / 1,000,000 개의 파일 / 15,000 개의 폴더를 삭제합니다. rmdir~ 2.5 시간, del+rmdir~ 53 분이 소요됩니다. 자세한 내용은 여기를 참조하십시오 .

이것은 일반적인 작업이므로 일반적으로 삭제해야 할 항목을 C : \ stufftodelete로 이동하고 해당 del+rmdir명령을 deletestuff.bat 배치 파일에 저장합니다. 이것은 밤에 실행되도록 예정되어 있지만 때로는 낮에 실행해야할수록 빠를수록 좋습니다.


다음을 포함하여 > nul
찬성 투표

1
Windows는 오래된 SDK의 백업에서 수천 개의 파일을 스캔하기 위해 기다릴 것입니다. 적어도 한 시간이 걸렸는데 내 경우에는 10 분이 걸릴 수 있습니다. : 나는 반복 사용 박쥐 파일에 넣어 한 gist.github.com/DavidEdwards/61d4d336232284b33b237b04da5bfe10
크노소스


1

Windows에서 폴더를 삭제하고 폴더 내의 파일 수에 비례하여 시간이 걸리지 않는 방법이 있습니까?

예, 파티션을 포맷하십시오. 나는 지난 9 년 동안 아무도 그 제안을하지 않았다는 것에 약간 놀랐습니다.

상당히 급진적이지만 특정 폴더에 대해이 작업을 자주 수행 할 것으로 예상되는 경우 별도의 파티션을 만드는 것이 좋습니다.


그것이 너무 급진적이라면, 다른 대답은 당신의 유일한 희망입니다. serverfault 에 대한 좋은 설명이 있습니다 . Linux 및 XFS 파일 시스템 용이지만 동일한 논리가 여기에 적용됩니다. 내장 OS 기능을 많이 향상시킬 수는 없습니다.

그러나 삭제하려는 모든 파일의 경로를 알고 있으면 디렉토리 내용을 나열하는 호출을 저장하고 직접 제거를 호출하여 약간의 오버 헤드를 저장할 수 있습니다. 그래도 여전히 파일 수에 비례합니다.

개인적으로, 나는 프로그램이 죽지 않았다는 것을 확신하기 위해 진보 보고서 중 일부를 좋아합니다. 그래서 나는 파이썬을 통해 물건을 삭제하고 싶습니다. 예를 들어, 모든 파일이 하위 디렉토리없이 하나의 디렉토리에있는 경우 :

import tqdm
import sys
import os

location = sys.argv[1]
directory = os.fsencode(location)

with os.scandir(directory) as it:
    for dir_entry in tqdm.tqdm(it):
        try:
            os.remove(dir_entry.path)
        except OSError:
            pass  # was not a file

12 살짜리 SEAGATE ST3250620NS에서 약 250 개의 파일이 삭제됩니다. 나는 그것이 당신의 드라이브에서 훨씬 빠를 것이라고 가정합니다.

그러나이 시점에서 그것은 단지 미세 최적화입니다. 따라서 하나의 디렉토리에 수백만 개의 파일이 없으면 큰 도움이되지 않습니다. (나처럼, lol, 내가 D를 한 일 :)


0

설치 gnutools for windows및 실행 :

find YOURFOLDER -type d -maxdepth 3 | xargs rm -Rf

0

클라우드에 파일을 백업하지 않고 동시에 삭제하려고하는지 확인하십시오!

많은 클라우드 백업 솔루션을 사용하면 파일이 백업되는 동안 파일이 잠기고 백업 될 때까지 기다려야합니다.

임시 디렉토리 (또는 백업 할 필요가없는)라고하는이 문제가 발생하면 백업 세트에서 임시 디렉토리가 선택되어 있지 않은지 확인하십시오.


0

여러 계층의 디렉토리가있는 폴더는 Window의 폴더 제거 속도가 실제로 느려지는 경향이 있음을 발견했습니다. node_modules 폴더에 도달하는 데 5 단계가 걸리는 프로젝트를 진행 중이었습니다.

del /f/s/q foldername > nul
rmdir /s/q foldername

이 상황에서 내가하는 일은 node_modules 폴더 또는 가장 깊은 수준의 디렉토리로 이동하여 한 번에 약 12 ​​개 정도의 디렉토리를 선택하고 삭제하기 시작합니다. 여러 번 삭제하면 휴지통이 내가 사용한다고 생각하는 단일 스레드가 아닌 병렬 프로세스에서 작동하도록하여 프로세스 속도를 크게 향상시킵니다.

가장 깊은 디렉토리가 비어 있으면 몇 단계 위로 올라가서 같은 일을합니다. 이로 인해 1 시간 이상 몇 분만에 삭제 된 내용이 삭제되었습니다.

매우 수동적 인 프로세스이며 약간의 성공으로 스크립팅 될 수 있지만 그게 효과가 있습니다.


0

Hugo의 원래 답변을 사용하여 NPM 프로젝트를 삭제할 때 사용하는 .bat 파일을 만들었습니다. 경로 변수를 추가했으며 경로를 한 번만 복사하여 붙여 넣어야합니다. .bat 파일을 두 번 클릭하면 모든 작업을 수행하므로 모든 것을 입력 할 필요가 없습니다.

set path="FOLDER_PATH"
del /f/s/q %path% > nul
rmdir /s/q %path%

사용법 예 :

set path="C:\Projects\My React Project"
del /f/s/q %path% > nul
rmdir /s/q %path%

-2

명령 프롬프트를 사용해 보셨습니까?

rmdir /s /q foldername

GUI의 모든 큰 파일 작업은 느리게 진행됩니다. 대부분 시각적 피드백 (진행률 표시 줄)을 여러 번 다시 그려야하기 때문에


5
이것은 말도 안됩니다. GUI가 필요한 시간을 추정하기 위해 모든 파일을 계산해야하지만 다시 페인트하지 않기 때문에 작업이 느려질 수 있습니다.
벤더

잘못된 ... 나는 큰 폴더 (주로 win2k 서버)를 지속적으로 사용하고 TotalCommander를 사용하여 물건을 이동 / 복사 / 삭제합니다. TC를 최소화하거나 TC 위에 다른 응용 프로그램 창을 놓으면 최소 50 % 더 빠르게 수행됩니다. TC는 여전히 사물을 다시 칠하고 있지만 합성 할 때는 모든 것이 무시됩니다.
nEJC

6
컴퓨터가 너무 느려 GUI 작업이 디스크 I / O 성능에 영향을 줍니까? 아니면 TotalCommander가 엄청나게 잘못 코딩 되었습니까? 디스크는 CPU, RAM 및 비디오 카드보다 수백 또는 수천 배 느립니다. 그래픽으로 인해 디스크 쓰기 속도가 느려지면 주요 문제가있는 것입니다.
Mr. Shiny and New 安 宇

1
그 이유는 "파일 수에 비례하여 시간이 걸리지 않았다"는 질문이었습니다. 나는 50 % 더 빨리 찾고 있지 않다.
Sindri Traustason

@Sindri 그렇게하면 명령 프롬프트 방식으로 시스템이 마술을 시작하기 전에 거의 지연되지 않아야합니다. 내가 이해하는 한이 전처리는 문제가있는 곳입니다.
nEJC 2009
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.