원본을 사용하는 동안 Windows NTFS 하드 링크 (mklink / h)를 삭제하는 방법은 무엇입니까?


10

Windows NTFS 파일 시스템에는 파일이 있습니다 (예 :) orig.mp3. 이 경로를 통해이 파일 orig.mp3을 사용중인 방식으로 (예 : VLC에서 재생하여) 이 파일을 엽니 다 .

그런 다음 하드 링크 ( cmd /c mklink /h link.mp3 orig.mp3)를 만듭니다 . 결과적으로 두 개의 NTFS 경로가 정확히 동일한 파일을 가리 킵니다.

마지막으로 링크 된 파일을 다시 삭제하려고합니다 ( del link.mp3, 또는 Windows 탐색기에서 삭제).

"다른 프로세스에서 파일을 사용 중이기 때문에 프로세스가 파일에 액세스 할 수 없습니다."

왜? 더 중요한 것은 : 프로세스가 원본 파일을 사용하지 않는 것을 제외하고 어떻게 피할 수 있습니까? 원본을 더 이상 사용하지 않을 때 연결된 파일이 자동으로 삭제되도록 Windows에 '지연된 삭제'를 수행하도록 지시 할 수 있습니까?


2
아마도 슈퍼 유저에게 물어봐야합니다. 그러나 여전히 : movefile 은 어떤 경우에도 트릭을 수행 할 수 있어야합니다. 하드 링크를 단순히 삭제할 수는 없지만 실제로는 완전히 "관련되지 않은"파일이어야합니다.
데이먼

답변:


11

이것은 꽤 예상되는 동작입니다. 하드 링크는 동일한 파일의 다른 이름 일뿐입니다. 예를 들어, A.PDF 파일이있는 경우 동일한 파일에 대한 하드 링크 B.PDF를 작성하면 파일이 A.PDF 또는 B.PDF라는 이름으로 열리 든 상관 없습니다. 여전히 동일한 파일이므로 이 파일은 단순히 열리므로 링크를 삭제할 수 없습니다.

실제 이유는 이름이 마스터 파일 테이블 (NTFS의 경우)의 파일 레코드에 속성으로 저장되고 파일이 열리기 때문에 링크를 삭제할 수 없습니다 (열린 파일을 수정할 수 없음).

이 경우 원본 파일과 같은 것은 없습니다. 두 이름이 모두 같은 파일에 속해 있고 두 이름이 모두 같기 때문입니다. 링크 카운트가 0이되면 파일이 실제로 삭제됩니다.


"왜?"라는 답변에 감사드립니다. 보시다시피 "피하는 방법?"에 대한 답변을 직접 추가했습니다.
MarnixKlooster ReinstateMonica

4
"왜"가 불완전합니다. 하드 링크 삭제가 수정 인 경우 하드 링크를 추가하는 중이지만 하드 링크를 추가하여 파일을 열거 나 삭제할 수는 없습니다. "왜"는 파일이 열려있는 동안 하드 링크의 이름을 바꾸거나 삭제할 수 없다고 결정된 것입니다. 의도적 인 디자인 결정.
RomanSt

2

FSUTIL 도구를 사용하여 심볼릭 링크를 안전하게 유지하십시오.

http://technet.microsoft.com/en-ca/library/cc753059.aspx

fsutil reparsepoint delete link.mp3

orig.mp3 를 유지하는 동안 하드 링크를 제거합니다


2
그러나 이것이 하드 링크에서 작동합니까? 나는 그렇게 믿지 않습니다.
Daniel B

글쎄요 .. Error: The process cannot access the file because it is being used by another process.
ST3

불합격. @ ST3과 동일합니다.
Señor CMasMas

1

Robert Goldwein의 답변 에서 자세히 설명한 것처럼 파일을 사용하는 동안 이러한 하드 링크를 삭제할 수 없습니다. 그러나 지연된 삭제가 가능합니다.

이 질문에 대한 Damon 의 의견 은 Sysinternals Suite의 이동 파일 을 사용하도록 제안합니다 .

필자의 경우 PowerShell 에서이 작업을 수행하려는 경우 Lee Holmes 's를 사용 하여 다음 부팅시 Windows가 파일을 삭제하도록 할 수 있습니다.Move-LockedFilelink.mp3 $null

위의 두 가지 모두 MOVEFILE_DELAY_UNTIL_REBOOT 플래그 와 함께 Win32 MoveFileEx 함수를 사용합니다 .

업데이트 : 방금 해킹 한 내용은 https://gist.github.com/marnix/7565364 를 참조 하십시오Remove-File-Eventually . 보장하지 않습니다. :-)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.