[우테코 8기 프리코스] 파일 압축 개념 정리

2025. 11. 6. 15:45·우아한 테크코스 8기 프리코스
개발에 앞에서 파일 압축 용어나 개념에 대해 한번 정리하고 가야 된다는 생각이 들었습니다.

용어가 헷갈려서
지금도 제가 압축/압축해제 프로그램을 목표로 하는지,
아니면 ZIP 압축/압축해제 프로그램을 만드는 것을 목표로 하는지 모르겠습니다.😭

개발에 들어가기에 앞서 아카이브, 압축, 압축포맷, ZIP, 압축 알고리즘등 용어등을 한번 정리해 보겠습니다.

 

아카이브와 압축

저는 아카이브와 압축이 같은 의미인지 알았습니다.

하지만 두 용어는 다른 개념입니다.

  • 아카이브: 여러 파일을 모아서 하나의 파일로 만들기
  • 압축: 압축 알고리즘을 적용하여 파일의 크기를 작게 만들기

여러 파일을 모아서 하나의 ZIP 파일을 만들면 뭉뚱거려서 압축한다고 표현하는데, 

엄밀히 말하면 아카이빙을 한 것입니다. (Packing이라고 표현하기도 하더라구요.)

 

하지만 보통 여러 개의 파일을 하나의 파일로 합칠 때 파일 압축을 필수로 하니, 관례적으로 아카이빙 한다는 게 압축한다는 용어로 바뀐 것 같습니다.

 

압축의 종류

파일 압축은 디지털 콘텐츠의 용량을 줄이는 것입니다.

 

압축은 크기 2가지로 분류할 수 있습니다.

  • 손실 압축
  • 무손실 압축

손실 압축은 사진, 음악, 동영상 등에서 주로 사용하고,

무손실 압축은 파일 등을 압축할 때 사용합니다. (물론 이미지나 음악등을 무손실 압축을 할 수 있습니다. ex. PNG, FLAC)

 

압축 포맷

압축 포맷은 여러 가지가 존재합니다.

  • ZIP
  • 7z
  • tar (아카이브)
  • gz
  • rar
  • ...

등 여러 가지의 포맷이 존재합니다.

 

각 압축 포맷은 내부적으로 다양한 압축알고리즘(대표적으로 Deflate)등을 사용하여 파일을 압축하여 압축에 걸리는 시간이나 압축률은 상이합니다.

 

ZIP 이란?

ZIP은 대표적인 압축 포맷입니다.

무손실 압축 포맷으로 필 캐츠라는 개발자가 1989년에 만들었습니다.

 

ZIP 포맷은 압축 없이 하나의 파일로 합치는 아카이빙을 하고, 여기에 Deflate 알고리즘등을 사용해 압축을 할 수 있습니다.

압축에 사용되는 알고리즘은 원래 Deflate 알고리즘만 지원했지만, 이후 LZMA 같은 최신 압축 알고리즘도 지원하기 시작했습니다.

 

ZIP의 스펙은 ZIP의 개발사인 PKWARE에서 찾을 수 있습니다. (영어문서인 것은 함정)

https://pkwaredownloads.blob.core.windows.net/pkware-general/Documentation/APPNOTE-6.3.9.TXT

 

 

 

여기에 ZIP 파일의 전체 구조가 나와있어 ZIP 파일을 만들 때 어떤 구조로 만들어야 되는지 알 수 있습니다.

   4.3.6 Overall .ZIP file format:

      [local file header 1]
      [encryption header 1]
      [file data 1]
      [data descriptor 1]
      . 
      .
      .
      [local file header n]
      [encryption header n]
      [file data n]
      [data descriptor n]
      [archive decryption header] 
      [archive extra data record] 
      [central directory header 1]
      .
      .
      .
      [central directory header n]
      [zip64 end of central directory record]
      [zip64 end of central directory locator] 
      [end of central directory record]

 

압축 알고리즘

압축 포맷들은 위에서 언급했듯이 Deflate 같은 압축 알고리즘을 사용해서 압축합니다. (Deflate 알고리즘은 필 캐츠가 ZIP 포맷에 사용하기 위해 만들었습니다.)

 

압축 알고리즘은 많지만 ZIP 포맷에서 지원하는 압축 알고리즘은 다음과 같습니다.

  •  DEFLATE
  • Deflate64 
  • BZIP2
  • LZMA
  • IBM z/OS CMPSC (메인프레임용)
  • Zstandard
  • XZ
  • WavPack (오디오)
  • PPMd (텍스트)

각 압축 알고리즘에 대해 조사하려면 깊게 들어가야 하기 때문에 이런 게 있다 정도로 일단 정리하고 넘어가겠습니다.

 

그래서 뭘 만들고 싶은데?

1차 목표로 만들고 싶은 프로그램의 요구사항을 간단히 정리하면

  • 여러 개의 파일을 하나의 파일로 모으는 아카이빙을 할 수 있어야 한다. (패킹)
  • 하나의 파일을 여러개의 파일로 다시 나누는 아카이빙 해제할 수 있어야 한다. (언패킹)
  • 압축 알고리즘을 적용하여 파일을 압축할 수 있어야 한다.

입니다.

 

이전 포스팅에서는 

  • Node.js를 사용하여 파일들을 ZIP 파일로 합치고 해제하는 프로그램 작성

이라고 ZIP 포맷을 대상으로 명시했는데, 우선 ZIP 포맷이 아니더라도 압축/압축해제가 되는 프로그램을 작성하는 것을 목표로 하려고 합니다.

'우아한 테크코스 8기 프리코스' 카테고리의 다른 글

[우테코 8기 프리코스] 오픈 미션 후기  (0) 2025.11.23
[우테코 8기 프리코스] 오픈 미션 시작  (0) 2025.11.05
[우테코 8기 프리코스] 3주차 과제 후기  (0) 2025.11.04
[우테코 8기 프리코스] 1주차 과제 후기  (0) 2025.10.17
'우아한 테크코스 8기 프리코스' 카테고리의 다른 글
  • [우테코 8기 프리코스] 오픈 미션 후기
  • [우테코 8기 프리코스] 오픈 미션 시작
  • [우테코 8기 프리코스] 3주차 과제 후기
  • [우테코 8기 프리코스] 1주차 과제 후기
월월월월
월월월월
  • 월월월월
    Bobostown
    월월월월
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • 개발 (4)
      • 사이드 프로젝트 (1)
        • interview-lab (1)
        • Loft (0)
      • Claude (1)
      • React (5)
        • React Router (1)
        • Interactive (2)
      • Javascript (1)
      • node.js (3)
      • npm (3)
      • Nest.js (0)
      • Web (5)
        • Web API (4)
      • TDD (2)
        • Jest (0)
      • TroubleShooting (1)
      • Rust (1)
      • Bash (1)
      • 보안 (1)
      • 일상 (4)
      • 여행 (5)
      • 우아한 테크코스 8기 프리코스 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    보홀
    Media Capture and Streams API
    json-schema
    node.js
    react
    LZ77
    devfest 2025
    nofitication
    private package
    motion
    VITE
    오픈미션
    framer motion
    peer dependency
    Web API
    npm
    package.json
    runzipper
    webbase line
    오실리에이터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
월월월월
[우테코 8기 프리코스] 파일 압축 개념 정리
상단으로

티스토리툴바