다음을 통해 공유


파일 압축 및 압축 해제

NTFS 파일 시스템 볼륨은 개별 파일 기준으로 파일 압축을 지원합니다. NTFS 파일 시스템에서 사용하는 파일 압축 알고리즘은 Lempel-Ziv 압축입니다. 이 알고리즘은 무손실 압축 알고리즘으로, 데이터 압축 및 압축 해제가 발생할 때마다 일부 데이터가 손실되는 JPEG 등의 손실 압축 알고리즘과 달리 파일을 압축 및 압축 해제할 때 데이터가 손실되지 않습니다.

데이터 압축은 중복 데이터를 최소화하여 파일 크기를 줄입니다. 텍스트 파일에서 중복 데이터는 공백 문자와 같이 자주 발생하는 문자 또는 e 및 a 문자와 같은 일반적인 모음일 수 있습니다. 또한 자주 발생하는 문자열일 수도 있습니다. 데이터 압축은 이 중복 데이터를 최소화하여 파일의 압축된 버전을 만듭니다.

각 유형의 데이터 압축 알고리즘은 고유한 방식으로 중복 데이터를 최소화합니다. 예를 들어 Huffman 인코딩 알고리즘은 해당 문자가 발생하는 빈도에 따라 파일의 문자에 코드를 할당합니다. 실행 길이 인코딩이라는 또 다른 압축 알고리즘은 반복되는 문자에 대해 두 부분으로 구성된 값을 생성합니다. 첫 번째 부분은 문자가 반복되는 횟수를 지정하고 두 번째 부분은 해당 문자를 식별합니다. Lempel-Ziv 알고리즘이라고 하는 또 다른 압축 알고리즘은 가변 길이 문자열을 원래 문자열보다 적은 공간을 사용하는 고정 길이 코드로 변환합니다.

NTFS 파일 시스템 파일 압축

NTFS 파일 시스템에서 압축은 투명하게 수행됩니다. 즉, 기존 애플리케이션을 변경하지 않고도 사용할 수 있습니다. 파일의 압축된 바이트는 애플리케이션에서 액세스할 수 없으며, 압축되지 않은 데이터만 표시됩니다. 따라서 압축된 파일을 여는 애플리케이션은 해당 파일이 압축되지 않은 것처럼 작업할 수 있습니다. 그러나 이러한 파일을 다른 파일 시스템에 복사할 수는 없습니다.

30기가바이트보다 큰 파일을 압축하는 경우 압축이 성공하지 못할 수 있습니다.

다음 항목에서는 NTFS 파일 시스템 파일 압축을 알아봅니다.

파일 압축 및 압축 해제 라이브러리

파일 압축 및 압축 해제 라이브러리는 기존 파일을 가져와서 원본의 압축된 버전에 해당하는 파일을 생성합니다. 또한 압축은 무손실이지만 애플리케이션에 대해 투명하지 않습니다. 애플리케이션은 파일 압축 라이브러리의 지원을 통해서만 해당 파일에서 작업할 수 있습니다. 또한 해당 파일에서 수행할 수 있는 유일한 작업은 원본에서 압축된 파일을 만들고 압축 해제된 버전에서 원본 데이터를 복구하는 것입니다. 편집은 일반적으로 지원되지 않으며, 지원되는 경우 검색이 제한됩니다.

일반적으로 Compress.exe를 사용하여 압축된 데이터를 압축 해제하기 위해 애플리케이션은 Lz32.dll의 함수를 호출합니다. 이러한 함수는 압축을 풀지 않고도 파일을 처리할 수 있습니다.

Lz32.dll의 함수를 사용하면 단일 파일 또는 여러 파일의 압축을 풀 수 있습니다. 또한 한 번에 압축된 파일의 일부분을 압축 해제하는 데 사용할 수도 있습니다.

다음 항목에서는 Lz32.dll의 함수에서 제공하는 파일 압축 해제를 알아봅니다.

캐비닛

캐비닛은 디스크 스패닝 및 다중 파일 압축과 같은 기능을 지원하는 압축 라이브러리에 의해 만들어집니다. 자세한 내용은 캐비닛 소프트웨어 개발 키트(https://msdn.microsoft.com/library/dncabsdk/html/cabdl.asp)를 참조하세요.

섹션 내용

항목 설명
압축 특성
NTFS 파일 시스템 볼륨에서 각 파일 및 디렉터리에는 압축 특성이 있습니다.
압축 상태
개별 파일 및 디렉터리에 대한 압축을 지원하는 볼륨의 각 파일과 디렉터리에는 압축 상태가 있습니다.
압축된 파일의 크기 가져오기
파일의 압축된 크기를 가져오려면 GetCompressedFileSize 함수를 사용합니다.
단일 파일 압축 해제
애플리케이션은 LZOpenFile, LZCopy 및 LZClose 함수를 사용하여 압축된 단일 파일의 압축을 풀 수 있습니다.
여러 파일 압축 해제
애플리케이션은 LZOpenFile, LZCopy 및 LZClose 함수를 사용하여 압축된 여러 파일의 압축을 풀 수 있습니다.
압축된 파일에서 읽기
애플리케이션은 LZSeek 및 LZRead 함수를 사용하여 압축된 파일을 한 번에 한 부분 압축 해제할 수 있습니다.