별의 공부 블로그 🧑🏻‍💻
728x90
728x170

 압축 유틸리티 정리 (tar, compress, gzip, bzip2, xz, zip, gcc)

① tar(tape archive)

  • 원래는 테이프 관련 장치를 이용하여 백업할 때 사용하는 명령이었다.
  • 현재는 여러 파일들을 하나의 파일로 묶어주는 명령으로 사용한다.
  • 파일로 묶을 때, 디렉터리를 지정할 경우, 그 디렉터리의 모든 파일과 서브 디렉터리들까지 함께 묶여진다.
  • 파일의 속성, 하드 링크, 심볼릭 링크 등도 보존된다.
  • 유닉스 에서 사용되는 tar
    • 파일로 묶거나 풀어주는 기능만 가능함.
  • 리눅스 에서 사용되는 GNU tar
    • 옵션을 이용해서 파일을 묶거나 풀 때 압축 관련 작업을 동시에 진행 할 수 있음.
  • 지원되는 압축 형식
    • compress(tar.Z)
    • gzip(tar.gz)
    • bzip2(tar.bz2)
    • xz(tar.xz)

 

사용법

  • 옵션 사용 시 기호를 사용하지 않아도 된다.
    • 단, 인자값(Argument) 이 있는 옵션을 여러 개 지정하는 경우에는 기호를 사용해야 한다.
$ tar [option] [파일명]

 

주요 옵션

옵션 설명
-c 지정한 파일이나 디렉터리를 하나로 묶어 새로운 tar 파일을 생성함. (Create)
-x 생성된 tar 파일을 풀음. (eXtract)
v - 어떤 명령을 실행할 때 대상이 되고 있는 파일들을 보여줌. (Verbose)
- 예) 옵션과 함께 사용하면 묶여지는 동안 파일의 이름을 보여줌.
-f 파일명 - 작업 대상이 되는 tar 파일의 이름을 지정함.
- 파일명 대신 -를 쓰면 표준 입출력이 됨.
- --file=파일명
-r 기존의 tar 파일 뒤에 파일을 추가함.
-t tar 파일 안에 묶여 있는 파일의 목록을 출력함.
-h 심볼릭 링크가 가리키고 있는 원본 파일을 저장함.
-C - 디렉터리를 변경할 때 사용 (Change)
- --directory=디렉터리명
-p 파일이 생성되었을 때의 권한을 그대로 유지하게 해줌. (Permisson)
-Z - compress 관련 옵션
- 예전 유닉스 계열 표준 압축 파일인 tar.Z 에 사용함.
- --compress, --uncompress
-z - gzip 관련 옵션
- 압축 파일인 tar.gz 에 사용함.
- --gzip
-j - bzip2 관련 옵션
- 압축 파일인 tar.bz2 에 사용함.
- --bzip2
-J - xz 관련 옵션
- 압축 파일인 tar.xz 에 사용함.
- --xz

 

사용 예

  • 현재 디렉터리에서 .c로 끝나는 파일을 starrykss.tar 파일(f)로 묶는데(c), 진행 결과를 출력함(v).
$ tar cvf starrykss.tar *.c

 

  • starrykss 라는 디렉터리와 서브 디렉터리의 모든 파일을 starrykss.tar 파일(f)로 묶음(c).
$ tar cf starrykss.tar starykss/

 

  • 현재 디렉터리에 starrykss.tar 파일(f)을 푸는데(x), 진행 결과를 출력함(v).
$ tar xvf starrykss.tar

 

  • 현재 디렉터리에 있는 jalin.txt와 yuloje.c 파일(f)을 cc.tar 파일에 추가로 묶는데(r), 진행 결과를 출력함(v).
$ tar rvf cc.tar jalin.txt yuloje.c

 

  • starrykss.tar 파일(f)의 내용을 보여줌(t, v).
$ tar tvf starrykss.tar

 

  • 현재 디렉터리에서 .c로 끝나는 모든 파일을 gzip(z) 압축(c)과 동시에 starrykss.gz 파일(f)로 묶음. 그리고 진행 결과를 출력함. (v)
$ tar zcvf starrykss.tar.gz *.c

 

  • gzip(z)으로 압축된 php-4.0.4.tar.gz 파일(f)을 푸는데(x), 진행 결과를 출력함. (v)
$ tar zxvf php-4.0.4.tar.gz

 

  • bzip2(j)로 압축된 php-5.1.4.tar.bz2 파일(f)을 푸는데(x), 진행 결과를 출력함. (v)
$ tar jxvf php-5.1.4.tar.bz2

 

  • xz(J)로 압축된 php-5.5.4.tar.xz 파일(f)을 /usr/local/src 디렉터리에(C) 푸는데(x), 진행 결과를 출력함. (v)
$ tar Jxvf php-5.5.4.tar.xz -C /usr/local/src

 

② compress, uncompress

  • 전통적으로 유닉스에서 사용했던 압축 프로그램
  • 리눅스에서는 압축률이 낮 현재는 거의 쓰이지 않는다.
  • compress
    • 압축 명령
    • 지정한 파일명 뒤에 .Z가 붙음.
  • uncompress
    • 압축 해제 명령
  • 대부분의 리눅스 배포판에서 기본 설치 시 제외 되어있다.
    • 레드햇 계열 리눅스인 경우 ncompress 패키지를 설치하면 사용할 수 있다.
      • yum install ncompress

 

사용법

$ compress [option] 파일명
$ uncompress [option] 파일명

 

주요 옵션

옵션 설명
-c - 표준 출력으로 지정하는 옵션
- 보통은 생략하지만, tar 등과 병행해서 사용할 때는 반드시 표기해야 함.
-v  압축 관련 정보 출력 (Verbose)

 

사용 예

  • compress 명령을 옵션 없이 사용하면 기본적으로 파일 이름 뒤에 .Z 를 붙여 압축 파일을 생성함.
  • test.txt 라는 파일은 사라지고 압축 파일인 'test.txt.Z' 라는 파일이 생성됨.
$ compress test.txt

 

  • starrykss.tar 파일을 압축함.
  • 결과로 starrykss.tar.Z 라는 파일이 생성됨.
$ compress starrykss.tar

 

  • 현재 디렉터리의 모든 파일을 tar로(f) 묶고(c), compress 압축하여 backup.tar.Z 파일로 저장함.
$ tar cvf - * | compress > backup.tar.Z

 

  • backup.tar.Z 파일의 압축을 해제하고, tar로 묶여져 있는 파일들을 현재 디렉터리에 풂.
$ uncompress -c backup.tar.Z | tar xvf -

 

③ gzip, gunzip

gzip(GNU Zip)

  • GNU에서 만든 압축 프로그램
  • 유닉스용 압축 프로그램인 compress를 대체하기 위해 만들어졌다.
  • gzip 으로 압축하면 파일 명 뒤에 .gz이 붙는다. (gunzip)
  • 압축 해제는 gunzip 명령을 사용한다.

 

사용법

$ gzip [option] 파일명
$ gunzip [option] 파일명

 

주요 옵션

옵션 설명
-d - 압축을 풀 때 사용하는 옵션
- --decompress, --uncompress
-1 - 파일의 압축 시간을 줄임.
- 이 옵션을 사용하면 압축은 빠르지만, 압축률은 떨어짐.
- --fast
-9 - 파일을 최대로 압축
- 압축률은 좋아지지만, 시간이 많이 걸림.
- --best
-c - 결과를 표준 출력으로 보낼 때 사용
- tar 와 병행해서 작업할 때 사용
-l - 압축 파일에 대한 정보를 출력하는 명령
- --list
-r - 대상이 디렉터리인 경우, 하위 디렉터리까지 찾아서 처리함.
- --recursive
-v - 진행 과정을 이름 및 퍼센트와 함께 자세히 보여줌.
- --verbose

 

사용 예

  • gzip 명령으로 starrykss.tar 파일을 압축함.
  • starrykss.tar.gz 라는 파일이 생성됨.
$ gzip starrkss.tar

 

  • starrykss.tar.gz 파일의 압축을 풂.
  • 'gzip -d starrykss.tar.gz' 명령과 같음.
$ gunzip starrykss.tar.gz

 

  • yuloje.tar.gz 파일의 압축을 해제 후, tar를 사용하여 현재 디렉터리에 풂.
$ gzip -cd yuloje.tar.gz | tar xvf -

 

  • 압축되기 전 파일명과 크기, 압축된 크기, 압축률에 대한 정보를 출력
$ gzip -l starrykss.tar.gz

 

(참고) zcat

  • gzip 패키지에 같이 들어 있는 명령
  • 압축되어 있는 텍스트 파일의 내용을 확인할 때 사용
$ zcat starrykss.txt.gz

 

④ bzip2, bunzip2

bzip2

  • 버로우즈-휠러 변환(Burrowws-Wheeler Transform)이라는 블록 정렬 알고리즘(Block Sort Text Compression Algorithm) 허프만 부호화(Huffman Coding)을 사용하여 줄리안 시워드(Julian Seward)가 만든 압축 프로그램
  • gzip 보다 압축률이 좋지만, 압축 시간이 더 걸린다.
  • 압축하면 파일명 뒤에 .bz2가 붙는다.
  • 압축 해제는 bunzip2 명령을 사용한다.

 

사용법

$ bzip2 [option] 파일명
$ bunzip2 [option] 파일명

 

주요 옵션

옵션 설명
-d - 압축을 풀 때 사용하는 옵션
- --decompress
-1 - 파일의 압축 시간을 줄임.
- 이 옵션을 사용하면 압축은 빠르지만, 압축률은 떨어짐.
- --fast
-9 - 파일을 최대로 압축
- 압축률은 좋아지지만, 시간이 많이 걸림.
- --best
-c - 결과를 표준 출력으로 보낼 때 사용
- tar 와 병행해서 작업할 때 사용
-f - bzip2나 bunzip2 명령은 기본적으로 존재하는 파일을 덮어쓰지 않는데, 이 명령을 사용하면 덮어쓰기를 한다.
- --force

 

사용 예

  • bzip2 명령으로 starrykss.tar 파일을 압축함.
  • starrykss.tar.bz2 라는 파일이 생성됨.
$ bzip2 starrykss.tar

 

  • starrykss.tar.bz2 파일의 압축을 풂.
  • 'bzip2 -d starrykss.tar.bz2' 명령과 같음.
$ bunzip2 starrykss.tar.bz2

 

⑤ xz, unxz

xz

  • LZMA2(Lempel-Ziv-Markov Chain Algorithm)라는 알고리즘을 이용하여 만든 데이터 무손실 압축 프로그램
  • gzip  bzip2 와 비교하여 매우 높은 압축률을 자랑한다.
  • 높은 압축률로 인하여 최근 공개용 소프트웨어 사이트에서 이 압축 포맷을 사용하여 파일을 배포하고 있다.
  • 압축하면 파일명 뒤에 .xz가 붙는다.
  • 압축 해제는 unxz 명령을 사용한다.

 

사용법

$ xz [option] 파일명
$ unxz [option] 파일명

 

주요 옵션

옵션 설명
-z - 압축할 때 사용하는 옵션
- 기본적으로 설정되어 있어서 사용하지 않아도 됨.- 
-d - 압축을 풀 때 사용하는 옵션
- --decompress, --uncompress

 

사용 예

  • xz 명령으로 starrykss.tar 파일을 압축함.
  • starrykss.tar.xz 라는 파일이 생성됨.
$ xz starrykss.tar

 

  • starrykss.tar.xz 파일의 압축을 풂.
  • 'xz -d starrykss.tar.xz' 명령과 같음.
$ unxz starrykss.tar.xz

 

(참고) 압축 프로그램 비교

  • 최근 공개용 프로그램을 파일로 배포할 때, 다양한 압축 포멧으로 제공된다.
  • gzip, bzip2, xz 식의 파일 중에서 xz로 압축한 파일의 크기가 가장 작다.
  • 참고 : https://www.php.net/downloads
 

PHP: Downloads

Current Stable PHP 8.1.5 (Changelog) php-8.1.5.tar.gz (sig) [19,196Kb] 14 Apr 2022 44d637627746082395d5d3d3d6ae7d71e780b82a8d55a0228887158c4316bf11 php-8.1.5.tar.bz2 (sig) [14,931Kb] 14 Apr 2022 827de56771c3ab8313a069812f15f6ec49989d510aebd0dce180839c6d8d6

www.php.net

 

⑥ zip, unzip

zip

  • DOS/Windows 계열 운영체제에서 많이 사용되던 압축 프로그램
  • 리눅스에서도 zip이라는 명령으로 사용 가능하다.
  • 압축하면 파일명 뒤에 .zip이 붙는다.
  • 압축 해제는 unzip 명령을 사용한다.

 

사용법

$ zip [option] 압축_파일명 파일명
$ unzip [option] 압축_파일명

 

주요 옵션

옵션 설명
-r 압축 대상이 디렉터리인 경우, 하위 디렉터리를 포함하여 압축함.

 

사용 예

  • zip 명령으로 starrykss.tar 파일을 압축함.
  • starrykss.zip 이라는 파일이 생성됨.
$ zip starrykss starrykss.tar

 

  • data 라는 디렉터리를 backup 이라는 이름으로 압축함.
  • backup.zip 이라는 압축 파일이 생성됨.
$ zip -r backup data/

 

  • starrykss.zip 이라는 압축 파일을 해제함.
$ unzip starrykss.zip

 

⑦ gcc(GNU Compiler Collection)

  • GNU 프로젝트에 의해 만들어진 일종의 컴파일러 모음
  • C, C++, Objective-C, Fortran, Java, Ada, Go 등 다양한 프로그래밍 언어를 지원한다.
  • 리눅스 기반에서 가장 손쉽게 이용할 수 있는 C 컴파일러 도구
  • C 언어로 작성한 파일을 gcc로 컴파일 하면 a.out이라는 실행 파일이 생성된다.
    • a.out 를 실행할 때, 이 파일이 환경 변수 PATH에 등록된 디렉터리에 위치하지 않으면 ./a.out 형태로 실행시켜야 한다.

 

사용법

$ gcc [option] 파일명

 

주요 옵션

옵션 설명
-o 컴파일할 때 실행 파일의 이름을 지정하는 옵션
-c - 링크는 하지 않고, 목적 파일만 만들어낼 때 사용하는 옵션
- .o 파일을 생성함.

 

사용 예

  • sum.c 파일을 컴파일하여 실행 파일을 생성함.
  • 특별한 옵션이 없으면 a.out로 생성됨.
$ gcc sum.c

 

  • sum.c 라는 파일을 컴파일하여 sum이라는 실행 파일을 생성함.
$ gcc -o sum sum.c

 

  • sum.c 를 컴파일하여 오브젝트 파일을 생성함.
  • 기본적으로 sum.o로 생성됨.
$ gcc -c sum.c

 

  • LinkedList.c 및 Test_LinkedList.c 를 컴파일하여 LinkedList라는 실행 파일을 생성함.
$ gcc -o LinkedList LinkedList.c Test_LinkedList.c

 

  • 두 개의 오브젝트 파일을 이용하여 LinkedList 라는 실행 파일을 생성함. 
$ gcc -o LinkedList LinkedList.o Test_LinkedList.o

 

문제 해결 전략

  • man 명령어를 사용하여 메뉴얼을 보면서 문제를 해결한다.
  • 압축 파일의 확장자명과 확장자명에 따른 tar 명령어의 옵션을 암기해둔다. 
    • compress : .Z (-Z)
    • gzip : .gz (-z)
    • bzip2 : .bz2 (-j)
    • xz : .xz (-J)
    • zip : .zip
728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖