Windows 디렉토리에서 100,000 개의 파일을 제거하는 가장 좋은 방법은 무엇입니까


12

단일 디렉토리에 100,000 개가 넘는 파일을 가진 사용자가있었습니다. Explorer가 메모리를 가득 채우면 시스템이 잠기면서 시스템이 잠기고 사용할 수 없게됩니다. 디렉토리와 내용을 덤프하는 간단한 방법이 있습니까? 우리는 커맨드 라인 델 트리를 사용해 보았지만 이것은 훨씬 나아지지 않았습니다.

DaveF

추가-

동일한 사용자 (실제로 클라이언트)에서이 문제가 여러 번 발생했습니다. 프로그램은 실행 중에 수십만 개의 임시 파일을 만듭니다. 프로그램이 올바르게 작동하면 이것으로 완료되면서 느리게 제거되므로 중요하지 않습니다. 그러나 매번 파일의 혼란을 남기고 죽습니다. 우리는 rmdir 및 del 등의 방법을 사용하려고 시도했으며 탐색기를 사용하는 것보다 빠르지 만 일반적으로 동일한 문제가 발생합니다. 파티션이 손상되어 설명 할 수없는 잠긴 파일이 있으며 일부 파일에 권한 문제가있어 삭제 작업이 중지됩니다. 일반적으로 이러한 문제는 재부팅으로 해결할 수 있지만이 경우 프로덕션 시스템으로는 불가능한 중요한 시스템이므로이 문제가 해결됩니다. 유닉스에서는 rm -rf 등을 수행 할 수 있으며 이것은 빠르며 일반적으로 아무런 문제가 없습니다.

BTW-응용 프로그램이 변경되고 있지만 언젠가는 프로덕션에 들어 가지 않을 것이며이 문제는 다른 사람들에게 흥미로 웠습니다.

업데이트-시스템에 MKS Nutcracker가 있기 때문에 (명령 줄 유틸리티없이) 프로그래머가 간단한 rm을 만들게했습니다. 이것은 델 / 델 트리 등보다 몇 배 빠릅니다. 표준 Windows 시스템 관리 도구로 쉽게 사용할 수있는 간단한 응용 프로그램이 없다는 것이 이상합니다.


답변:


15

당신은 사용할 수 있습니다 rmdir:

rmdir /s /q FOLDERNAME

플래그 : /s재귀 적으로 삭제하는 것을 의미 /q하며 "자동"모드입니다.


우리는 이것을 시도했습니다-질문에 더 추가 할 것입니다.
David Allan Finch

이것은 당신을 위해 일했을 것입니다. 작동 했습니까?
s_ruchit

예 대부분-질문에서 위에서 본 문제를 추가했습니다. 귀하의 의견에 감사드립니다.
David Allan Finch 10

이 답변을 수락하겠습니다. 그러나 더 간단한 유닉스 스타일 rm을 사용하는 더 나은 솔루션이 있지만 대부분의 사용자가 사용할 수 없으므로 99 %의 사용자에게 가장 적합한 선택입니다. 재귀 적으로 삭제하는 것 외에는 아무것도 수행하지 않는 창에 대해 유닉스 스타일의 rm이 구현되어 있어야합니다. BTW 프로그래머 MKS remove_tree (위 참조)가 rmdir을 때려 눕히므로 문제는 Windows가 아니라 내장 앱입니다.
David Allan Finch

6

관리중인 서버에서이 문제를 해결하는 데 사용합니다. 탐색기를 완전히 건너 뛰고 명령 프롬프트를 사용하십시오. 폴더와로 이동 "델 . "

이렇게하면 GUI (탐색기는 휴지통) 및 휴지통의 오버 헤드를 피할 수 있습니다.


우리는 이것을 시도했습니다-질문에 더 추가 할 것입니다.
David Allan Finch 10

4

레거시 16 비트 응용 프로그램에 필요하지 않은 경우 짧은 파일 이름 생성을 비활성화하여 성능을 향상 시키십시오. 이는 많은 수의 파일이있는 디렉토리 작업에 큰 영향을 줄 수 있습니다.

Regedt32 select:
"HKLM\system\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameC
reation"=1

그런 다음 사용하십시오.

RMDIR / S / Q [드라이브 :] 경로

모든 파일이있는 디렉토리를 제거합니다.


그것은 흥미 롭습니다.
David Allan Finch


3

임시 폴더를 다른 드라이브 / 파티션으로 옮기는 것은 어떻습니까? 모든 가비지를 삭제하는 대신 드라이브 (GUI 또는 명령 줄)를 포맷 할 수 있습니다. 빠른 형식을 사용하면 비교적 빠릅니다.


1
우리는 이것을 시도했지만 때로는 이것을 허용하지 않을 것입니다. 클라이언트는 이제 매번 다른 디렉토리에서 프로그램을 실행합니다.
David Allan Finch

경로와 드라이브 사이에 하드 링크를 만듭니다. 즉, 하드 링크 "c : \ my silly app \ where files"는 드라이브가 X : 드라이브를 가리키는 시작 배치에서
Nime Cloud

2

이것은 이전 게시물의 조합입니다

명령 창을 엽니 다 :
File -> Run -> cmd

디렉토리를 제거하십시오
rmdir /s /q FOLDERNAME

또는

파일 패턴 제거
cd \....\directory
del *.[something]

귀하의 질문에 언급했듯이 Windows 탐색기는 실제로 속도를 늦출 수 있습니다.

업데이트를 확인한 후 내 파일 중 하나 가 있습니다. 파일
제거 목록을 확인하십시오.


나는 과거에 수백 개의 파일만으로 이것을 발견했습니다. 탐색기가 명령 줄 앱만큼 빨리 수행 할 수 있다는 것은 부끄러운 일입니다. 고객이 직접 할 수 있습니다. 답변 주셔서 감사합니다.
David Allan Finch

1

나는 델과 RM보다 더 좋은 것은 없지만 시간이 오래 걸리더라도 파티션이 손상되지 않아야합니다. 잠긴 파일은 파일을 만든 프로그램이 예기치 않게 종료 되었기 때문일 수 있습니다.

때로는 파일을 삭제할 수 없더라도 다른 임시 서브 디렉토리로 이동할 수 있습니다. 방금 _todel 서브 디렉토리를 작성하고 그곳으로 옮깁니다. 일반적으로 파일 자체가 아닌 전체 디렉토리를 한 수준 위로 이동하면 더 잘 작동합니다.

그 외에는 삭제 속도를 높이는 유일한 방법은 하드 디스크 조각 모음을 수행하는 것입니다. 임시 해결 방법은이 디렉토리를 samba 공유로 옮기거나 NTFS 정션을 휴대용 USB 하드 디스크로 사용하는 것입니다. 작은 파티션은 전체 하드 디스크를 사용하는 것보다 낫고 빠릅니다. 그런 다음 하드 디스크를 꺼내고 다른 PC에서 빠른 포맷을 수행 할 수 있습니다.


그것이 내가 생각하는 것입니다-IE는 손상된 파일이지만 왜 NT 커널에 의해 닫히지 않습니까? 속도는 프로그램에 문제가 있으므로 Samba 또는 USB 하드 디스크를 사용하는 것은 시작이 아닙니다. 그러나 클라이언트는 각 실행에 대해 별도의 파티션을 작성하고 다시 포맷하도록 제안되었습니다. 그들이 아직 시도했는지 확실하지 않습니다. - 감사합니다
데이비드 앨런 핀치

1

파일을 삭제하여 손상된 파티션? 삭제되는 파일 수에 관계없이 디스크의 주요 문제입니다.

명령 줄을 삭제하고 잠겨있는 것을 발견 할 때까지 가능한 한 많이 삭제하려고합니다. 그런 다음 프로세스 탐색기 를 사용 하여 해당 파일이 열린 프로세스를 찾으십시오. 해당 프로세스를 종료하고 (가능한 경우) 삭제를 다시 수행하십시오. 헹굼, 반복 :)


이것을 시도하고 싶지만 우리는 기계에 직접 액세스 할 수 없으며 응용 프로그램이 사망했습니다. 어쨌든 고마워
David Allan Finch

1

'Live'Linux CD 인 rm -rf를 사용하여 재부팅


이 서버는 클라이언트에게 매우 중요하기 때문에 재부팅 할 수는 없지만 답변을 주셔서 감사합니다.
David Allan Finch

1

Kinda hacky,하지만 파일을 청크하는 스크립트를 만들 수는 있지만 형식을 모르지만 문자 az로 시작하는 파일이라고 가정하면 할 수 있습니다

deltree /y a*
deltree /y b*
...
deltree /y z*

선택한 제거 방법으로 델 트리를 변경하십시오. 아마도 느리지 만 오류가 적은 경향이 있습니까?

(!) 참고 : 당신은 또한 RM은 같은 명령 얻을 Cygwin에서 설치를 시도 할 수 있습니다 아마도 그것은 하나 개의 파일에 오류가 발생 후에도 파일을 삭제 계속합니다.


이것은 시도되었지만 실제로 문제를 해결하지 못했습니다. 어쨌든 감사합니다.
David Allan Finch

우리는 또한 MKS Nutcracker를 설치했지만 보안상의 이유로 명령 줄 유틸리티를 제거했지만 선택하지 않았습니다. 그러나 우리가 한 일은 자신의 rm으로 작성되었으며 이것이 작동합니다.
David Allan Finch

1

무엇보다도 다양한 방법이 효과가 있습니다. cygwin을 썸 드라이브에로드 한 경우, 로컬 USB에 연결하고 cygwin 셸을 실행 한 후 위에서 참조한대로 RM 명령을 실행할 수 있습니다. 이것은 유닉스 유연성을 가까이 유지하는 편리한 방법입니다.


이것은 시스템을 관리 할 때 합리적인 솔루션입니다.
David Allan Finch

1

복구 콘솔 또는 해당 라인을 따라 부팅 할 수도 있습니다. 그것은 OS의 이상한 문제를 완전히 무시해야합니다.


서버를 재부팅 할 수는 없지만 답변 해 주셔서 감사합니다.
David Allan Finch

1

리눅스 컴퓨터에서 폴더를 마운트하고 재귀 삭제를 수행하십시오.

# mount -t cifs //server/share /mnt/tobedeleted -o username=yourshareusername

# rm /mnt/tobedeleted/* -R

cron 작업을 사용하여 정기적으로 파일을 삭제할 수도 있습니다.


이것을 시도 했습니까?
David Allan Finch

1

왜 robocopy를 사용하고 빈 디렉토리를 미러링하지 않습니까?

빈 폴더를 만들고 다음을 사용하십시오.

ROBOCOPY C:\ThisIsAnEmptyFolder C:\Users\SomeUser\Desktop\SomeFolderWithTempFiles /MIR

0

다른 제안 사항이없는 경우 I / O 속도를 고려한 적이 있습니까?

더 나은 컨트롤러와 더 빠른 디스크를 구입하십시오.

또는 파일이 임시적이며 크기가 허용하는 경우 상자에 추가 RAM을 추가하고 RAM 디스크를 설정할 수 있습니까?

대량의 파일을 삭제할 때 성능이 저하되지 않는 것이 가장 좋습니다. 최악의 경우 재부팅하면 파티션이 지워집니다.


사랑하지만 나는 클라이언트가 프로그램의 새로운 버전을 기대하고 있기 때문에 껍질을 벗길 것이라고 생각하지 않습니다-답변 주셔서 감사합니다.
David Allan Finch 10

영국의 서버 RAM은 현재 기가 바이트 당 GBP 10입니다.
tomfanning

사실이지만 고객은 견적에 따라 기계에 대해 X를 지불하고 Y를 더 많이 쓸 이유가 없습니다.
David Allan Finch

지정된 서버가 작업을 충분히 수행하지 못하기 때문에?
tomfanning

작업에 충분합니다. 문제는 프로그램에 수정 과정에있는 버그가 있다는 것입니다. 그들은 더 이상 돈을 쓰지 않을 것입니다.
David Allan Finch

0

휴지통에 잘라 붙여 넣기를 시도하십시오. 모든 파일을 옮기려고하지 않아도됩니다. 휴지통을 비우기 위해 무엇을 해야할지 확실하지 않으므로 모든 파일을 다룰 것입니다.


나는 클라이언트가 이것을 시도했다고 생각하고 Explorer를 정상적으로 사용하는 것보다 낫지는 않았다. 감사합니다
데이비드 앨런 핀치

0

SHIFT + DEL로 삭제하면 속도에 차이가 있습니까?


내가 마지막으로 시도했을 때 그것은 거의 동일했습니다.
David Allan Finch

사실 나는 이전 설치로 다시 시도했지만 여전히 기다리고 있습니다. 아마도 MKS rm을 포기하고 사용할 것입니다.
David Allan Finch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.