NTFS 파일 압축 문제

NTFS 파일 압축 문제

Windows NTFS로 포맷된 압축 외부 드라이브에서 Mac OS X로 포맷된 두 번째 외부 드라이브로 실수로 이동된 수백 개의 사진 파일이 있습니다. 이동은 Mac OS X 운영 체제에서 수행되었습니다. 불행하게도 Windows 파일 시스템에서 모든 원본 파일을 "압축 해제"하지 않고 파일 이동 프로세스가 완료되었습니다.

현재 "손상된" JPG 및 RAW 파일로 표시되는 사진 파일을 복구할 수 있는 복구 서비스, 응용 프로그램 또는 수동 변환 방법을 알고 있는 사람이 있습니까? 귀하가 제공할 수 있는 어떤 지원이나 제안이라도 대단히 감사하겠습니다.

답변1

NTFS 압축은 MFT(마스터 파일 테이블)에 저장되는 파일 메타데이터의 플래그로 표시됩니다. 일반적으로 해당 플래그를 변경하면 파일 시스템 드라이버가 파일을 압축하거나 압축을 풀기 때문에 직접 설정하는 것은 어렵습니다. 이 플래그를 수동으로 추가할 수도 있습니다. DWORD 파일 속성의 단일 비트일 뿐이지만 MFT를 직접 해킹하는 것은 아마도 최선의 방법이 아닐 것입니다. 대신 다음을 시도해 보세요.

  1. NTFS 볼륨(NTFS로 포맷하는 경우 플래시 드라이브일 수 있음)에서 하나(또는 여러 개의) 압축 파일을 만듭니다(Windows 사용). 이러한 지침을 위해 이러한 파일을 , 등으로 부르 rescue1겠습니다 rescue2.
  2. 먼저 파일 압축을 풀지 않고 NTFS 드라이브를 Mac 시스템에 연결합니다. 읽기/쓰기 볼륨을 마운트합니다. 마운트되었다고 가정해 보겠습니다 /mount/ntfs(실제로 외부 볼륨이 마운트되는 위치를 기억할 만큼 OS X를 사용하지는 않습니다).
  3. 파일을 복사하는 도구 사용내용물, 명령줄 유틸리티 등을 사용하여 dd메타데이터 없이 압축된 파일의 내용을 NTFS 볼륨에 있는 압축 파일의 내용으로 복사합니다. 명령은 다음과 같습니다 dd if=/path/to/bad/file of=/mount/ntfs/rescue1 bs=4M.
  4. 드라이브를 Windows에 다시 연결하고 이제 압축 파일을 올바르게 열 수 있는지 확인하세요. 가능하다면 Windows에서 안전하게 압축을 풀도록 할 수 있습니다(현재 위치에서 또는 FAT32 플래시 드라이브와 같이 압축을 지원하지 않는 드라이브에 복사하여).
  5. 이 접근 방식이 작동하면 이를 사용하여 수백 개의 파일을 모두 복구할 수 있습니다. 필요한 만큼 NTFS 드라이브에 압축 파일을 생성하고 가장 좋을 것 같은 방식으로 이름을 지정한 다음(원래 이름일 수 있음) Mac에서 내용을 복사하면 됩니다.

전체 NTFS 볼륨을 압축할 필요는 없습니다. 이는 모든 디렉토리가 "압축" 플래그를 상속하게 하고, 각 파일은 파일 디렉토리에서 이를 상속하게 됩니다. 하지만 그렇게 해도 나쁠 것은 없습니다.

하지만 백업되거나 폐기되는 NTFS 볼륨을 사용하는 것이 좋습니다. OS X NTFS 드라이버가 그렇게 좋지 않으면 Windows 볼륨에 쓰려고 할 때 MFT가 손상될 수 있습니다.

위의 방법이 작동하지 않는 경우 더 복잡한 대체 접근 방식:

  1. Windows에서 여러 개의 압축 파일을 만듭니다. 어려운 부분은 불량 파일의 크기를 일치시켜야 한다는 것입니다. 크기가 30913바이트인 파일을 복구하려면 다음이 필요합니다.압축NTFS 파일은 압축 후 해당 크기로 유지됩니다. 솔직하게 말씀드리겠습니다. 어떻게 정리해야 할지 모르겠습니다. 최소한 구조 파일을 만드십시오.적어도구조해야 하는 파일의 크기(디스크). 4k 내에서 크기를 일치시키는 것이 가장 좋습니다. 이는 NTFS 클러스터(파일 데이터에 사용되는 할당 청크)의 기본 크기이기 때문입니다.
  2. fsutilWindows의 유틸리티를 사용하여범위구조 파일 중. 범위는 파일 데이터가 파티션에 저장되는 볼륨의 실제 오프셋입니다.
    • 명령은 fsutil file queryextents <filename>위치에 따라 관리자 권한으로 실행해야 할 수도 있습니다.
    • 명령의 출력은 다음과 같습니다 VCN: 0x0 Clusters: 0x2 LCN: 0x48000. 이는 해당 파일이 두 개의 클러스터를 차지한다는 것을 의미합니다.논리적 클러스터 번호0x48000(오프셋 4096*0x48000=1207959552)을 볼륨 오프셋 0x48001(8k(2 x 4k/클러스터) 총 공간)로 변환합니다. 실제로 그 끝은 일반적으로 사용되지 않는 공간입니다.
    • 여러 줄의 출력이 있을 수 있습니다. 이는 파일이 조각화되었을 때 발생합니다. 다음 파일을 생성하기 전에 각 파일의 크기를 조정하면 새로 포맷된 볼륨에서는 발생할 가능성이 거의 없습니다. 첫 번째 값(가상 클러스터 번호) 후속 라인에서는 0이 아니며 해당 범위가 시작되는 파일 내의 오프셋(클러스터)이 됩니다(예를 들어 0x3인 경우 범위가 파일에서 12k로 시작한다는 의미).
  3. 드라이브를 분리하고 OS X에 연결하십시오.~ 아니다이번에는 볼륨을 마운트합니다. 대신 올바른 볼륨 식별자를 찾으십시오. Linux에서는 다음과 같습니다 /dev/sdb1. (두 번째 드라이브 -> sd1, 첫 번째 파티션 -> sdb1).
  4. 를 사용하여 dd잘못된 압축 파일에서 원시 볼륨으로 직접 복사합니다.
    • 예를 들어, 파일에 두 개의 범위가 있다고 가정해 보겠습니다.
      • VCN: 0x0 Clusters: 0x15 LCN: 0x13c
      • VCN: 0x15 Clusters: 0x3f6 LCN: 0xab20
    • 필요에 따라 파일 이름을 조정하여 다음 명령을 사용합니다 dd. 참조dd 맨페이지더 많은 정보를 원하지만 지금은 모든 매개변수가 dd편리하게 블록 크기( bsparam)의 배수로 되어 있지만 16진수 값은 10진수로 변환되었습니다( dd16진수를 올바르게 처리할 수 있는지 확실하지 않습니다. 일부 dd와 유사한 프로그램은 가능하지만 전부는 아닙니다). ):
      • dd if=/path/to/bad/file of=/dev/sdb1 bs=4K count=21 seek=316
      • dd if=/bath/to/bad/file of=/dev/sdb1 bs=4k count=1014 seek=337 skip=21
  5. 파일 데이터를 원시 파티션에 복사한 후에는 드라이브를 Windows에 연결하고 압축된(복구된) 파일을 읽을 수 있어야 합니다. 파일 크기가 정확히 일치하지 않으면 파일 끝에 약간의 쓰레기가 있을 수 있지만 문제가 되지 않기를 바랍니다.

다른 접근 방식(아마도 더 쉬울 수도 있습니다.많이ntfs-3g더 쉬움)은 NTFS 압축 해제를 처리하는 루틴을 찾는 것입니다 . 해당 루틴을 파일에서 직접 실행하십시오. 또는 유틸리티 복사본 ntfsdiskedit(중단된 것으로 보임)을 찾을 수 있는지 확인하고 이를 사용하여 파일을 압축되지 않은 파일로 NTFS 볼륨에 복사한 후 파일의 "압축" 비트를 수동으로 설정할 수 있는지 확인하십시오.

관련 정보