최근 수정 시각 : 2024-02-28 20:40:00

ZPAQ



1. 개요2. 상세3. 사용법
3.1. 아카이브 압축(add)3.2. 아카이브 추출(extract)3.3. 아카이브 목록 나열(list)3.4. 옵션
4. 활용5. 기타

1. 개요

홈페이지: https://mattmahoney.net/dc/zpaq.html

ZPAQ은 Matt Mahoney가 개발한 압축 프로그램이다. 동시에 이 압축 프로그램으로 생성된 무손실 압축 파일 형식이기도 하다. 전용 확장자는 *.zpaq이다.

2. 상세

ZIP, 7-Zip, RAR과 같은 일반적인 압축 파일 형식과는 달리 압축 파일에 변경 사항이 발생할 경우 저널링(버전 관리)이 지원된다는 점이 가장 큰 특징이다. ZPAQ 포맷 소개(반디집)

Windows 기준 최신 버전은 2016년 8월 17일에 출시된 v7.15 버전이다.

3. 사용법

GUI를 지원하지 않아, 7z.exe, FFmpeg 등의 프로그램처럼 명령줄(CLI)로 사용할 수 있다.
ZPAQ의 압축 작업은 크게 add, extract, list 중 하나로 수행된다.

3.1. 아카이브 압축(add)

#!syntax powershell zpaq add archive.zpaq .\*
  • add 또는 a: 아카이브에 파일을 추가시킨다.
  • archive.zpaq: 만들 아카이브 파일의 이름을 지정한다. .zpaq 확장자는 생략해도 된다.
  • .\*: 이 폴더에 있는 모든 파일과 하위 경로의 파일들을 아카이브 추가 대상으로 지정한다.

참고로 약어를 이용해서 위와 같은 경우 짧게 zpaq a archive .\* 라고 입력해도 똑같이 실행된다.

.zpaq 아카이브 파일이 대상 폴더에 없는 상태에서 위의 add 명령어를 쓰면 아카이브 파일을 새로 만든다. 만약 위의 상황에서 archive.zpaq 파일이 이미 있다면 기존 추가 대상 파일들 중에서 '변경, 추가, 삭제'된 파일들의 정보만 해당 아카이브에 버전으로 기록한다. 추가 대상 파일의 '경로, 크기, 마지막 수정 날짜, 속성(Windows), 권한(Unix/Linux)' 정보가 바뀌었으면 파일이 변경된 것으로 간주한다. 그런 후 변경 사항을 CLI에 알려준다.[1]

버전 기록 시 추가 대상 파일이 새로 생겼다면 +로, 삭제되었다면 -[2], 변경되었다면 #로 표시된다.

백업 대상 파일의 경로는 자유롭게 지정할 수 있다.
  • .cmd 파일을 만들고 여기에 명령어를 입력 후 더블클릭해서 실행할 경우, 위와 같이 .\*라고 입력하면 해당 .cmd 파일이 같이 있는 위치의 파일과 경로들을 모두 백업에 추가한다.[3]
  • 가령 Windows의 사진 폴더를 백업하고 싶다면 절대 경로로 D:\Data\Pictures\*로 입력해도 된다.
  • "D:\Data\Pictures\유튜브 썸네일\작업.psd"과 같이 파일 하나만 지정할 수도 있다. 경로나 파일 여러 개를 입력하려면 공백으로 구분한다. 그리고 경로나 파일 이름에 공백이 들어가 있다면 큰따옴표로 감싸야 한다.

권한 거부 등의 이유로 추가 대상 파일을 읽을 수 없는 경우 해당 파일은 건너뛰고 경고가 표시된다. 다른 파일들은 여전히 백업에 추가된다.

3.2. 아카이브 추출(extract)

#!syntax powershell zpaq extract archive.zpaq .\
  • extract 또는 x: 아카이브에 있는 최신 버전의 파일들을 추출한다.

3.3. 아카이브 목록 나열(list)

#!syntax powershell zpaq list archive.zpaq
  • list 또는 l: 아카이브에 있는 최신 버전의 파일들을 프롬프트 창에 나열해서 보여준다.

3.4. 옵션

옵션 지정의 경우 아래와 같이 명령어 뒤에 붙여서 이용할 수 있다.
#!syntax powershell zpaq add jpg_only_archive.zpaq .\* -only *.jpg
  • -only [파일]
    • add와 함께 사용 시: 이 폴더에 있는 파일들 중 조건에 맞는 파일들[4]만 아카이브에 추가한다.
    • extract와 함께 사용 시: 아카이브에서 조건에 맞는 파일만 추출한다.
    • list와 함께 사용 시: 아카이브에서 조건에 맞는 파일만 프롬프트 화면에 나열한다.
  • -not [파일]
    • add와 함께 사용 시: 이 폴더에 있는 파일들 중 조건에 맞는 파일들을 제외하고 아카이브에 추가한다.
    • extract와 함께 사용 시: 아카이브에서 조건에 맞는 파일들을 제외하고 추출한다.
    • list와 함께 사용 시: 아카이브에서 조건에 맞는 파일들을 제외하고 프롬프트 화면에 나열한다.
  • -force 또는 -f
    • add와 함께 사용 시: 대상 파일의 마지막 수정 날짜 등의 정보가 바뀌지 않았더라도 파일을 아카이브에 추가한다.
    • extract와 함께 사용 시: 추출 대상 경로에 같은 파일이 이미 존재하면 덮어쓴다.
    • list와 함께 사용 시: 날짜 및 속성의 차이는 무시하고 SHA-1 조각 해시만 계산해서 파일을 비교한 후 목록을 나열한다.
  • -key [비밀번호]
    • add와 함께 사용 시: 새 아카이브는 [비밀번호]로 암호화되며 이후 모든 작업은 동일한 암호를 필요로 한다. 아카이브는 AES-256 CTR 모드로 암호화된다.
  • -all [N]
    • list와 함께 사용 시: 아카이브의 최신 버전과 특정 파일이 '삭제'로 표시된 버전을 포함하여 아카이브에 저장되어 있는 모든 버전을 프롬프트에 나열한다.
    • extract와 함께 사용 시: 위의 list -all에서 표시된 각 버전의 파일들을 모두 추출한다. N에서는 경로 이름에 들어갈 숫자의 자릿수를 지정[5]하며 기본값은 4이다.

4. 활용

CLI를 사용해보지 않았다면 진입 장벽도 있는 편이고 국내에서는 잘 알려지지 않은 프로그램이다 보니 많이 사용되지는 않는 모양이다. 당장 네이버에 검색해 봐도 한국어로는 관련 정보가 전무한 편.

하지만 제대로 활용한다면, 예를 들어 외장 HDD를 연결해서 본인 컴퓨터의 D 드라이브에 있는 모든 파일들 혹은 특정 폴더의 특정 확장자를 가진 파일들만 백업시키는 식으로 사용할 수 있다.

5. 기타

대한민국에서 널리 사용되고 있는 국산 압축 프로그램 중 하나인 반디집에서 ZPAQ 형식의 압축과 압축 해제를 지원한다. 단, 반디집에서는 ZPAQ 형식의 저널링, 파일 편집, 암호 설정 등의 기능을 지원하지 않는다는 제한 사항이 있지만, 압축 파일을 열어서 안에 파일들이 어떤 구조로 저널링 기록이 이루어지는지는 볼 수 있다. 단, 2023년 11월 기준 7-Zip 파일 탐색기는 ZPAQ 형식을 지원하지 않는다.
[1] 예를 들어 마지막에 3 +added, 1 -removed.라고 표시된다면 3개의 파일들이 추가 혹은 변경으로 저장되었고 1개의 파일이 삭제로 마킹되었다는 의미이다.[2] .zpaq 아카이브 안에 저장되어 있는 파일이 아카이브 밖에서는 사용자가 파일을 삭제하는 등의 작업을 통해 없어졌다고 판단하면 아카이브 안에서 해당 파일이 '삭제'되었다고, 즉 [-]로만 표시되는 식. 따라서 파일이 삭제되었다는 정보를 아카이브에 반영하더라도 아카이브 파일의 크기는 줄어들지 않는다. 아카이브에서도 삭제해 버린다면 저널링의 목적 중 하나인 롤백의 의미가 없어지니.[3] 단, .cmd 파일을 다시 실행해서 저널링 작업을 수행할 경우 그 .cmd 파일과 .zpaq 아카이브 파일 본인까지 모두 쓸데없이 다시 아카이브에 추가하게 되므로 zpaq add archive.zpaq .\* -not *.cmd *.zpaq와 같이 제외 처리가 필요하다. 옵션 문단 참고.[4] 바로 위의 코드 스니펫 예시에서는 JPG 확장자를 가진 파일들만[5] 예를 들어 -all 2로 지정할 경우 01\, 02\ 등으로 표시하는 식.