inode 테이블에 저장된 파일 크기에 비해 파일이 잘리지 않도록 하는 방법이 있습니까? (dd 명령어를 사용할 수 있나요?)

inode 테이블에 저장된 파일 크기에 비해 파일이 잘리지 않도록 하는 방법이 있습니까? (dd 명령어를 사용할 수 있나요?)

ext4 파일 시스템을 사용합니다. 일부 불량 섹터에 걸쳐 있을 수 있는 NTFS 파일 시스템에서 복사된 파일에 설명된 디렉터리 항목의 정확성에 대해 의구심이 듭니다(그러나 확실하지는 않습니다). 이제 소스에서 복사할 때 파일이 잘렸을 수 있다고 생각하지만 ext4 파일 시스템의 디렉터리 항목은 현재 잘린 파일 크기를 반영하지 않고 대신 NTFS 파일 시스템 테이블에 파일 크기 정보를 유지합니다. 이것이 가능한지는 모르겠지만 파일이 잘리지 않았는지 확인하고 싶습니다(불행히도 파일은 독점 형식이므로 파일을 열어서 확인할 수는 없습니다).

dd파일에 명령을 실행했는데 원본 /dev/null파일 크기만큼 내용이 "복사"된 것 같았습니다. 그러나 이제 dd명령이 inode 테이블의 파일 크기에 대한 메타데이터를 사용하여 목적을 달성하지 못하는지 궁금합니다 .

  • 파일을 복사한 후 실제로 복사된 내용의 실제 크기가 inode 테이블에 반영되지 않나요? (파일 탐색기에서 클릭하고 드래그하기만 한 것 같아요)?
  • 명령을 사용하는 것이 dd좋은 옵션입니까?
  • 파일 크기를 독립적으로 확인하고 그에 따라 inode 테이블에 있는 정보의 정확성을 확인하는 데 사용할 수 있는 메타데이터가 ext4 파일 시스템에 있습니까(데이터 무결성 필드를 생각하고 있습니다)?

답변1

따라서 우선 여기에 관련된 신뢰할 수 없는 파일 시스템은 대상 파일 시스템이 아닌 원본 파일 시스템으로 보입니다. 소스가 말도 안되는 내용을 읽으면 해당 말도 안되는 내용이 대상 파일에 "올바르게" 기록되며 그 후에는 할 수 있는 일이 없습니다. 모든 정보에 대해 원본 파일의 모습은 다음과 같습니다.

아니요, 그럼 시작해 보겠습니다.귀하의 사용 사례쓰기 측에서 모든 형태의 데이터 손상을 배제하십시오. 어떤 경우라도 읽은 데이터가 손상되었습니다.

그 다음에:

NTFS 파일 시스템 테이블의 파일 크기 정보를 보존합니다.

이는 파일 시스템 간 복사가 작동하는 방식이 아닙니다. 소스 파일의 내용을 덮어쓰면서 대상 파일을 생성하지만( read소스 파일을 지정하고 write대상 파일을 지정하거나 copy_file_range시스템 호출을 통해) 메타데이터는 대상 파일 시스템 자체에 의해 유지되고 구성됩니다.아무것도 없다원본 파일에 대해. 아뇨, 그런 일은 일어나지 않을 거예요.

파일을 복사한 후 실제로 복사된 내용의 실제 크기가 inode 테이블에 반영되지 않나요? (파일 탐색기에서 클릭하고 드래그하기만 한 것 같아요)?

아니요, 또는: 매우, 매우 가능성이 낮습니다. ext4에서는 메타데이터(실제 데이터를 제외한 모든 것)가 실제로 기록됩니다. 즉, 메타데이터가 완전히 변경되거나 전혀 변경되지 않습니다.

ext4의 경우 메타데이터와 관련된 데이터를 로깅하는 기본 모드는 다음과 같습니다 data=ordered(참고자료 참조 man ext4). 이는 메타데이터가 업데이트되기 전에 데이터가 파일 시스템에 완전히 기록된다는 의미입니다. 그래서 한 가지는할 수 있다예를 들어 시스템의 전원이 꺼지면 데이터 쓰기가 발생했지만 메타데이터가 아직 기록되지 않은 경우가 발생합니다. 이는 파일 크기에 영향을 미칩니다.더 적은복사된 것 이상이 아니라 더 많은 것입니다.

따라서 데이터는 메타데이터 이전에 기록되었으며 메타데이터가 정확하므로 데이터가 정확하다고 확신할 수 있습니다. (다시 말하지만 소스의 데이터가 손상된 경우 가비지 인, 가비지 아웃이 계속 적용됩니다.)

dd 명령을 사용하는 것이 좋은 선택입니까?

아니요. 모든 프로그램은 파일 시스템에서 제공하는 데이터 양만큼 정확하게 가져오기 때문입니다. 파일 시스템의 경우예전에는손상되고파일이 더 길다고 잘못 생각함, 이는일부데이터의 속성을 잘못 지정하여 dd더 똑똑해지지 않습니다. 메타데이터에 액세스할 수 있기 때문이 아니라, 잡아내려는 오류가 관심 있는 누구에게나 오류가 존재하지 않는 것처럼 보일 것이기 때문입니다 dd.

파일 크기를 독립적으로 확인하고 그에 따라 inode 테이블에 있는 정보의 정확성을 확인하는 데 사용할 수 있는 메타데이터가 ext4 파일 시스템에 있습니까(데이터 무결성 필드를 생각하고 있습니다)?

아니요, 파일 시스템 메타데이터의 두 번째 복사본을 원하지 않는 한 이것이 바로 정확성을 요구하는 것입니다.

위에서 언급했듯이 Ext4는 메타데이터 쓰기가 완료되거나 발생하지 않도록 보장하는 저널링 파일 시스템입니다.

관련 정보