C# 및 .NET에서 아카이브 파일 추출
.NET 애플리케이션에서 ZIP 및 기타 아카이브 형식을 프로그래밍 방식으로 풉니다.
.NET 아카이브 파일 추출
Aspose.ZIP for .NET은 C# 애플리케이션에서 아카이브를 열고 콘텐츠를 추출하기 위한 관리형 라이브러리입니다. API를 사용하면 아카이브 엔트리를 읽고, 전체 항목 또는 선택한 항목만 추출하며, 디렉터리 구조를 유지하고, 결과를 폴더나 스트림에 쓸 수 있습니다. 처리는 애플리케이션 내부에서 이루어지므로 서버 측 워크플로는 데스크톱 소프트웨어나 명령줄 유틸리티에 의존하지 않습니다.
일반적인 사용 사례로는 문서 수집, 백업 복원, 배포 패키지 처리, 업로드 처리, 자동 데이터 교환이 있습니다. 동일한 API는 ASP.NET 서비스, 백그라운드 워커, 데스크톱 애플리케이션, 클라우드 작업, CI/CD 파이프라인에서 사용할 수 있습니다.
정확한 워크플로는 형식에 따라 달라집니다. ZIP, 7Z, RAR, TAR, CAB은 서로 다른 컨테이너 구조, 압축 방식, API 클래스를 사용합니다. 이 개요는 공통 추출 과정을 설명하며, 형식별 가이드는 각 아카이브 유형에 맞는 클래스, 옵션, 제한을 제공합니다.
아카이브 파일 추출기란?
아카이브 추출기는 하나 이상의 파일을 담는 컨테이너를 열고 저장된 콘텐츠를 복원합니다. 일반적으로 메타데이터를 읽고 엔트리와 디렉터리를 식별하며, 데이터를 압축 해제한 뒤 승인된 위치에 결과를 씁니다. 암호화된 아카이브에는 유효한 자격 증명과 해당 형식에서 지원되는 설정도 필요합니다.
extract, unpack, decompress라는 용어는 비슷한 작업을 설명할 때 자주 함께 사용됩니다. ZIP 파일을 푼다는 말은 ZIP 컨테이너에서 콘텐츠를 추출한다는 뜻입니다. 아카이브 추출은 더 넓은 작업이며 7Z, RAR, TAR, CAB, CPIO, XZ 같은 형식도 포함합니다.
운영 환경에서 추출은 단순한 메서드 호출 하나로 끝나지 않습니다. 애플리케이션은 영구 저장소에 쓰기 전에 엔트리 이름 검사, 개별 항목 선택, 폴더 유지, 스트림 처리, 비밀번호 처리, 오류 보고, 제한 적용을 수행해야 할 수 있습니다.
아카이브 추출 작동 방식
일반적인 C# 워크플로는 다음 7단계로 구성됩니다:
- 로컬 경로, 업로드, 스트림 또는 스토리지 서비스에서 아카이브를 받습니다.
- 애플리케이션이 해당 형식을 지원하는지 확인합니다.
- 해당 형식용 API 클래스로 컨테이너를 엽니다.
- 필터링 또는 선택적 추출이 필요하면 엔트리를 검사합니다.
- 파일을 쓰기 전에 출력 경로와 리소스 제한을 검증합니다.
- 승인된 엔트리를 격리된 대상으로 추출합니다.
- 출력을 다음 애플리케이션 단계로 넘기고 임시 데이터를 제거합니다.
여는 클래스는 입력 유형에 따라 달라집니다. ZIP, 7Z, RAR, TAR, CAB은 동일한 내부 모델을 공유하지 않습니다. 그래도 서비스는 각 컨테이너를 알맞은 Aspose.ZIP API로 라우팅하면서 하나의 애플리케이션 수준 워크플로를 제공할 수 있습니다.
추출에 사용할 수 있는 아카이브 형식
이 라이브러리는 ZIP, 7Z, RAR, TAR, GZIP, BZIP2, XZ, LZIP, Z, CPIO, CAB, WIM을 포함한 널리 쓰이는 아카이브 및 압축 형식을 처리합니다. 일부 형식은 여러 엔트리를 포함하고, 다른 형식은 단일 압축 스트림이나 다른 압축 계층으로 감싼 TAR 컨테이너를 나타내므로 사용 가능한 작업은 형식마다 다릅니다.
파일 이름 확장자만 믿지 말고 실제 컨테이너에 맞는 핸들러를 선택하세요. 자동 파이프라인에 추가하기 전에 필요한 작업, 암호화 방식, 스트림 동작이 해당 형식에서 지원되는지 확인합니다.
일반적인 파일 추출 워크플로
전체 아카이브 풀기. 모든 엔트리가 필요하고 입력이 검증된 경우 전체 추출을 사용합니다. 필요하면 원래 디렉터리 계층을 유지하고, 동시 요청이 출력을 덮어쓰거나 섞지 않도록 작업마다 고유한 대상을 지정합니다.
선택한 엔트리만 읽기. Archive.Entries를 검사하고 데이터를 쓰기 전에 애플리케이션 규칙을 적용합니다. 패키지에 많은 에셋이 있지만 문서, 매니페스트, 구성 파일 또는 특정 폴더만 필요한 경우 유용합니다.
스트림 처리. 스트림 기반 입력은 ASP.NET 업로드, 오브젝트 스토리지, 데이터베이스, 메시지 기반 시스템에 적합합니다. 스트림 소유권과 수명을 명확히 하고, 제한 없는 아카이브 전체를 메모리에 버퍼링하지 마세요.
보호된 콘텐츠 열기. 관련 형식에서 사용할 수 있는 복호화 설정을 통해 자격 증명을 제공합니다. 비밀번호는 보호된 구성이나 시크릿 저장소에서 가져와야 하며 로그에 기록하면 안 됩니다.
큰 입력을 제한된 작업으로 처리. 압축 크기, 추출 후 크기, 엔트리 수, 처리 시간, 임시 저장소 사용량을 제한합니다. 이러한 제한은 확장자에서 신뢰를 추론하지 말고 애플리케이션에서 정의하세요.
C# 프로젝트에 Aspose.ZIP 추가
Windows, Linux 또는 macOS의 지원되는 .NET 환경을 대상으로 하는 C# 프로젝트에 Aspose.ZIP NuGet 패키지 를 설치합니다. 그런 다음 필요한 네임스페이스를 참조하고 입력 컨테이너에 맞는 클래스를 선택합니다. 이 과정에는 원본에 대한 읽기 권한, 대상에 대한 쓰기 권한, 설정된 확장 제한에 충분한 임시 저장소도 필요합니다.
Package Manager Console에서 다음 명령을 사용합니다:
Package Manager Console
PM> Install-Package Aspose.Zip
C# 예제: ZIP 파일 풀기
ZIP은 공통 워크플로를 보여주는 간결한 예입니다. 코드는 입력을 열고 콘텐츠를 대상 디렉터리에 씁니다. 외부 파일에 이 패턴을 사용하기 전에 컨테이너, 출력 경로, 리소스 제한을 검증하세요.
ZIP 콘텐츠를 디렉터리로 추출
using Aspose.Zip;
using System.IO;
string archivePath = Path.GetFullPath("input.zip");
string outputDirectory = Path.GetFullPath("extracted");
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
archive.ExtractToDirectory(outputDirectory);
}
운영 환경의 안전한 아카이브 추출
사용자나 외부 시스템에서 받은 아카이브는 신뢰할 수 없는 입력으로 취급하세요. 예상한 확장자라는 사실만으로 컨테이너가 유효하거나 안전하다고 볼 수 없습니다. 선택한 핸들러가 데이터를 해석할 수 있는지 확인하고 손상되었거나 지원되지 않는 입력은 거부합니다.
엔트리를 쓰기 전에 승인된 대상 기준으로 출력 경로를 해석합니다. 절대 경로, 상위 디렉터리 traversal, 대상 디렉터리 밖을 가리키는 결과를 거부하세요. 이렇게 하면 아카이브 안의 파일 이름이 파일 시스템의 다른 위치로 쓰기를 유도하는 것을 막을 수 있습니다.
압축 크기, 전체 및 엔트리별 추출 후 크기, 엔트리 수, 중첩 깊이, 실행 시간, 동시성을 제한합니다. 권한이 제한된 작업별 임시 폴더를 사용하고, 검증된 출력만 승격하며, 성공과 실패 후 모두 정리합니다.
로그에는 작업 ID와 상태 정보를 남기고 비밀번호, 비공개 파일 이름, 추출 콘텐츠는 기록하지 않는 것이 좋습니다. 출력이 이후에 파싱, 미리 보기, 스캔될 경우 각 후속 구성 요소를 별도의 신뢰 경계로 취급하세요.
브라우저에서 추출 테스트
무료 온라인 추출 앱 을 사용하면 소프트웨어 설치 없이 샘플 입력을 테스트할 수 있습니다. C# 워크플로를 구현하기 전에 예상 출력을 확인하는 데 유용합니다.
온라인 도구는 대화형 작업용입니다. .NET 라이브러리는 반복 가능한 서비스, 백그라운드 처리, 스토리지 파이프라인, 검증과 출력 처리를 애플리케이션이 제어해야 하는 엔터프라이즈 애플리케이션에 적합합니다.
파일 형식별 추출 가이드
구현 세부 사항은 컨테이너와 저장된 형식에 따라 달라집니다. 형식별 가이드는 일반적으로 다음을 설명합니다:
- 아카이브를 여는 올바른 Aspose.ZIP 클래스;
- 전체 및 선택적 추출 예제;
- 비밀번호와 암호화 동작;
- 해당되는 경우 스트림 기반 처리;
- 형식별 제한 및 운영 고려 사항;
- 관련 API 참조와 문서.
이 개요에서 구현으로 넘어갈 때는 실제 입력 유형에 맞는 가이드를 사용하세요. 그래야 ZIP에만 해당하는 가정을 7Z, RAR, TAR, CAB 또는 동작이 다른 스트림 압축 형식에 잘못 적용하지 않을 수 있습니다.
파일 형식별 아카이브 추출 가이드
ZIP 아카이브에 자주 포함되는 파일과 에셋의 C# 추출 페이지를 살펴보세요.
</div>
</div>
아카이브 추출 리소스
아카이브 추출 FAQ
1. C#에서 아카이브 파일을 추출하려면 어떻게 하나요?
Aspose.ZIP을 설치하고 형식에 맞는 클래스로 입력을 연 다음 전체 컨테이너 또는 선택한 엔트리를 승인된 디렉터리나 스트림으로 추출합니다.
2. ZIP 아카이브에서 파일을 추출하려면 어떻게 하나요?
ZIP 입력에 대해 Archive 인스턴스를 만들고 ExtractToDirectory를 호출하면 전체 콘텐츠를 풀 수 있습니다. 특정 항목만 검사하거나 저장해야 할 때는 Archive.Entries를 열거합니다.
3. 아카이브 추출은 ZIP 풀기와 같은 의미인가요?
ZIP 풀기는 ZIP 파일에 특화된 작업입니다. 추출은 더 넓은 개념이며 7Z, RAR, TAR, CAB, CPIO, WIM 같은 형식도 포함합니다.
4. .NET 애플리케이션에서 비밀번호로 보호된 아카이브를 열 수 있나요?
Aspose.ZIP은 해당 형식에서 유효한 자격 증명과 적절한 복호화 설정이 제공될 때 비밀번호 기반 접근을 지원합니다. 정확한 동작은 컨테이너 유형에 따라 달라집니다.
5. 사용자가 업로드한 아카이브를 안전하게 추출하려면 어떻게 해야 하나요?
격리된 임시 저장소를 사용하고, 모든 출력 경로를 검증하며, 허용 형식과 압축/추출 크기를 제한하고, 처리 시간 제한을 설정한 뒤 작업 후 임시 데이터를 삭제합니다.