보통 우리가 파일이나 폴더를 삭제할 때는 Window의 GUI를 통해 삭제를 진행한다.
평상시에 삭제할 용량이 적거나 갯수가 얼마 없는 경우에는 빠르게 되지만
양이 엄청 많을 경우 이야기는 반대가 된다.
왜 이렇게 오래 걸리는 이유는
Window내부에서 삭제를 입력하게 되면
1. 지정된 폴더 안의 모든 요소 파악
2. 해당 요소들의 권한이나 사용중인지에 대한 여부 파악
3. 삭제작업 시작
이 과정을 보면 삭제해야하는 데이터를 2번 읽어야한다는 뜻이다.
1번째는 삭제해야할 용량 파악
2번째는 파일 삭제 작업 진행
[삭제해야할 용량 X 2]
저같은 경우 업무 특성상 최소 1TB에서 30TB까지 지워야하는 일이 많은데
이럴 때 마다 위와같은 과정을 겪게 되면
부족한 시간이 더 부족해지는 상황이 생긴다.
이것에 대해 해결하는 방법은 크게 2가지가 있다.
1. 위의 방식에서 최적화를 진행하기.
이 방법같은 경우 결국 [삭제해야할 용량 X 2] 을 벗어날 수 없다.
그러면 이 글을 작성한 목적인
2. powershell을 통해 파악없이 바로 삭제 작업을 진행하기
Kernel단에서 해결하는 방식으로
명령어는 아래와 같다.
Remove-Item
powershell에서 파일, 폴더, 레지스트리 키 등을 삭제하는데 사용
해당 명령어는 다양한 인수를 통해 사용자가 특정 조건을 설정하여 삭제 작업을 수행하게 함.
< 주요 인수>
-Path : 삭제할 항목의 경로를 지정합니다. 여러 경로를 동시에 지정할 수도 있습니다.
Remove-Item -Path "C:\example\testfile.txt"
-Exclude : 특정 패턴과 일치하는 항목을 제외하고 나머지를 삭제합니다. -Path와 함께 사용해야 합니다.
Remove-Item -Path "C:\example\*" -Exclude "*.txt"
-LiteralPath : 와일드카드 문자를 해석하지 않고 경로를 그대로 사용하여 항목을 찾습니다.
Remove-Item -LiteralPath "C:\example\file[1].txt"
-Recurse : 폴더를 지정할 때 사용하며, 지정된 폴더 내의 모든 하위 폴더와 파일을 재귀적으로 삭제합니다.
Remove-Item -Path "C:\example\backup" -Recurse
-Force : 읽기 전용 파일이나 접근 권한이 제한된 파일도 강제로 삭제합니다.
Remove-Item -Path "C:\example\readonlyfile.txt" -Force
-Confirm : 각 삭제 작업을 수행하기 전에 사용자의 확인을 요청합니다.
이 옵션은 $ConfirmPreference 변수의 값에 따라 자동으로 설정될 수 있습니다.
Remove-Item -Path "C:\example\importantfile.txt" -Confirm
-WhatIf : 실제로 삭제를 수행하지 않고, 어떤 항목이 삭제될지를 보여주는 시뮬레이션을 실행합니다.
이는 실수로 중요한 파일을 삭제하는 것을 방지할 수 있는 유용한 옵션입니다.
Remove-Item -Path "C:\example\temp" -Recurse -WhatIf
-Filter : 특정 조건을 만족하는 항목만 선택하여 삭제합니다
Remove-Item -Path "C:\example\logs" -Filter "*.log"
-Include : 특정 패턴과 일치하는 항목만 삭제합니다.
-Path와 함께 사용해야 합니다.
Remove-Item -Path "C:\example\*" -Include "*.txt"
-Verbose : 명령어를 실행하는 동안 자세한 정보를 출력합니다.
어떤 항목이 삭제되고 있는지 상세히 알 수 있습니다.
Remove-Item -Path "C:\example\old_logs" -Recurse -Verbose
만약, 상위폴더를 기준으로 안에 있는 모든 폴더, 파일을 삭제하며 그 과정을 출력하길 원하면
아래와 같이 명령어를 입력하면 된다.
Remove-Item -Path "C:\Your\Folder\Path" -Recurse -Force -Verbose