
Windows OS 명령줄에서 임의 크기의 파일을 빠르게 생성해야 할 경우 다음 명령을 사용합니다.
fsutil file createnew <filename> <size_in_bytes>
최근에 이 기본 도구를 사용하여 100GB 파일을 생성했는데, 파일을 생성하는 데 500ms도 채 걸리지 않아서 놀랐습니다. 이전에 데이터로 채워져 있던 플래터 기반 하드 드라이브에 파일을 만들었습니다.
호기심에 16진수 편집기에서 파일을 열었는데 완전히 비어 있는 것처럼 보였습니다(물론 100GB를 모두 수동으로 검사하지는 않았습니다). 500ms 안에 100GB의 데이터를 쓸 방법이 없다는 점을 감안할 때 하드 드라이브의 이전 내용으로 채워질 것으로 예상했습니다.
실제로 는 무엇을 fsutil file createnew
하고 있나요? 그리고 실제로 수행하는 작업에 따라 보안 수준이 낮은 신속한 삭제 기술(싱글 패스)로 사용할 수 있나요?
답변1
하드 드라이브의 이전 내용으로 채워질 것으로 예상했지만,
다중 사용자 운영 체제에서는 일반적으로 이러한 일이 발생하는 것을 허용하지 않습니다. 이는 OS 수준 파일 보호 기능을 우회하는 불필요할 정도로 쉬운 방법이고 적어도 Windows의 경우 이는 명시적으로 그렇습니다.보안 인증의 일부.
fsutil file createnew는 실제로 무엇을 하고 있나요?
최소한 두 가지 옵션이 있습니다. fsutil이 첫 번째 옵션을 사용하는 것으로 의심됩니다(그러나 확인하지는 않았습니다). 이는 "데이터 끝"을 추적하기 위해 OS에 의존합니다.
파일 시스템은 '파일 끝'과 '유효한 데이터 끝'이라는 두 개의 별도 포인터를 유지할 수 있습니다. 이는 Windows에서 NTFS가 작동하는 방식입니다.
전화해도됩니다SetEndOfFile()(리눅스에 해당ftruncate()) 데이터가 없는 큰 파일을 생성하고 "유효한 데이터의 끝"과 "파일의 끝" 사이의 공백은 읽을 때 자동으로 모두 0x00 바이트를 반환합니다.
(권한 있는 계정은 실제로 SetFileValidData() 호출을 사용하여 OS가 이미 디스크에 있는 데이터를 반환하도록 강제할 수 있지만 일반적으로 사용되는 작업은 아닙니다.)
파일 시스템이 범위 기반인 경우 개별 디스크 클러스터가 아니라 파일을 구성하는 전체 연속 '시작-끝' 범위를 추적합니다. 이를 통해 생성이 가능합니다.스파스 파일, 일부 확장 영역은 물리적 할당이 전혀 없는 것으로 간단히 표시됩니다(예: "구멍"). 해당 위치는 읽을 때 0x00을 반환합니다(물론 거기에 다른 내용이 기록될 때까지).
일반적으로 단순히추구파일 끝을 넘어 쓰기를 계속하면 가능하면 자동으로 스파스 파일이 생성됩니다.
fsutil에는 "유효한 데이터" 포인터와 파일의 범위 목록을 모두 검사하는 하위 명령이 있습니다.
이러한 기술(예: FAT)을 지원하지 않는 파일 시스템이 있습니다. 이 경우 OS는~ 할 것이다해당 디스크 영역을 명시적으로 0으로 설정해야 합니다.
그리고 실제로 수행하는 작업에 따라 보안 수준이 낮은 신속한 삭제 기술(싱글 패스)로 사용할 수 있나요?
아니요, 기계식 디스크에는 없습니다.