[RHEL6] 압축 및 해제 명령어 1탄(bzip2, compress, gzexe, gzip)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 압축 및 해제 명령어 1탄(bzip2, compress, gzexe, gzip)

by 찬찬이 아빠 2020. 3. 11.
반응형
  1. bzip2(압축명령어)

 1) 경로 : /usr/bin/bzip2

 2) 요약 : 높은 성능의 압축률을 자랑하는 압축 유틸리티

 3) 사용 방법 : bzip2 [-옵션] [파일명...]

 4) 옵션

 -c, --stdout : 압축되거나 압축을 푼 파일을 표준 출력으로 보냄

 -d, --decompress : 압축 해제

 -z, --compress : 파일 압축

 -t, --test : 압축을 풀지 ㅇ낳고 지정한 파일의 무결성만 검사

 -f, --force : 압축하거나 압축 해제 시 같은 이름의 파일이 있을 경우 떺어쓰기

 -k, --keep : 원본 파일을 보존하며 파일을 압축하거나 해제

 -s, --small : bzip2 실행 시 사용하느 메모리의 양을 줄임. bzip2 실행에 2.5바이트만을 사용. 이렇게 실행하면 속도는 두 배 이상 걸리지만 적은 메모리에서 bzip를 사용 가능

 -q , --quiet : 경고 메시지를 출력하지 않음

 -v, --verbose : 상세한 정보 출력

 -L, --license : 라이센스 정보 출력

 -V, -version L 버전 정보 출력

 -1~9 : 압축시 블록 크기 지정

 

 5) 추가 설명

bzip2는 Burrows-Wheeller 블록 정렬 테스트 압축 알고리즘과 Huffman 코딩을 이용해서 압축률이 뛰어납니다. bzip2는 GNU gzip과 비슷한 사용법을 갖습니다. 압축한 파일은 압축 전의 날짜, 권한, 소유자 등 속성을 그대로 갖습니다.그러므로 압축한 파일을 풀었을 때에도 원본 파일의 속성을 그대로 간직합니다. bzip2의 확장자는 .bz2입니다.

 

아래 두 파일을 bzip2를 이용해 압축합니다.

# ls
q-mail.hwp routing

 

각각의 파일 별로의 압축은 아래와 같이 실햅합니다.

# bzip2 q-mail.hw routing
# ls
q-mail.hwp.bz2 routing.bz2

 

bzip2 -d 명령으로 파일의 압축 해제합니다.

# bzip2 -d q-mail.hwp.bz2
# ls
q-mail.hwp routing.bz2

 

-d 옵션은 bunzip2 명령어와 같습니다.

# bunzip22 routing.bz2
# ls
q-mil.hwo routing.bz2

 

-d 옵션은 bunzip2 명령어와 같습니다.

# bunzip2 routing.bz2
# ls
q-mail.hwp routing

 

bz2로 압축된 patch-2.6.29.diff.bz2라는 커널 패치 파일을 받았습니다. 이 패치 파일의 압축을 해제한 후 커널에 적용해도 되지만, 좀 더 빠르게 작업하려면 파이프를 이용하여 아래와 같이 하나의 명령으로 시스템 커널에 패치를 바로 적용할 수 있습니다.

이 명령은 /usr/src/linux-커널버전/으로 이동하여 커널 디렉터리 안에서 실행해야 합니다.

# bzip2 -dc patch-2.6.29.diff.bz2 | patch -p1

 

bzip2 압축 파일이 손상되었을 경우

bzip2recover를 사용하여 손상된 압축 파일을 복구합니다.

bzip2recover [손상된 압축 파일명]처럼 사용합니다.

 

# bzip2recover test.bz2

bzip2recover 1.0: extracts blocks from damaged .bz2 files.

bzip2recover : searching for block boundaries ... block 1 runs from 80 to 607

bzip2recover : splitting into blocks writing block 1 to 'rec001@test.bz2

bzip2recover : finished

 

복구된 파일이 rec0001test.bz2로 만들어진 것을 확인할 수 있습니다.

rec00001test.bz2의 무결성 -t(테스트) -v(작업 내용 보기) 옵션으로 검사합니다.

# bzip2 -tv rec0001test.bz2

rec0001test.bz2: ok

 

손상된 압축 파일이 정상적으로 복구된 것을 확인할 수 있습니다.

 

 

 

  2. compress(파일 압축)

 1) 경로 : /usr/bin/compress

 2) 요약 : 파일 압축/해제

 3) 사용 방법 : compress [옵션] 파일...

 4) 옵션

 - b  maxbits : 최대 비트 수를 제한

 -c : 기본 생성 파일인 .Z의 형태가 아닌, 지정한 파일로 생성

 -d : 압축된 파일의 압축을 해제. 이는 uncompress 명령과 같음

 -f : 기존에 압축한 파일이 존재해도 이를 무시하고 압축 파일을 생성

 -r : 디렉터리를 지정했을 때, 하위 디렉터리와 파일까지 모두 압축

 -v : 압축 통계를 출력

 -V : 버전과 명령어에 대한 정보 출력

 

 5) 추가 설명

compress 명령어는 하나 이상의 파일을 압축하여 압축 파일을 생성합니다. 확장자는 .Z입니다. 다음과 같은 파일이 있다고 가정합니다.

# ls
20200311_Command.hwp 20200311.hwp 20200311titlesample1.hwp
20200310.hwp Planning.hwp

 

먼저 파일을 tar -cf 명령으로 하나의 파일로 묶습니다.

# tar -cf test.tar *

 

test.tar 파일로 각 hwp 파일이 묶인 것을 볼 수 있습니다.

# ls test.tar
test.tar

 

 

<파일 압축>

묶인 파일을 compress -f 명령으로 압축하면 압축 파일이 생성되고, 원본 파일은 지워집니다. -f 옵션과 -v 옵션을 함께 사용하여 압축율과 압축 진행 과정을 볼 수 있습니다.

# compress -f -v test.tar
sum.awk:          -- replaced with test.tar.Z Compression: 28.07%

# ls test.tar*
test.tar.Z

 

<파일 압축 해제>

압축한 test.tar.Z 파일은 uncompress 명령이나 compress -d 명령으로 압축을 해제합니다. 이때도 -v 옵션으로 진행 과정을 볼 수 있습니다.

# uncompress -v test.tar.Z
sum.awk.Z:        -- replaced with sum.awk

 

압축 해제한 test.tar 파일은 tar -xf 명령으로 풀면 원본 파일이 나옵니다.

# tar -xf test.tar

 

 

 

  3. gzexe(실행 파일 압축)

 1) 경로 : /usr/bin/gzexe

 2) 요약 : 실행 파일을 적절하게 압축

 3) 사용 방법 : gzexe [파일...]

 4) 추가 설명

gzexe 유틸리티는 실행 파일을 압축하고, 압축한 파일이 이전 파일과 같은 기능을 실행합니다. 이 명령어는 디스크 용량을 줄일 수 있습니다.

 

아래와 같이 /usr/bin/evince 명령어를 압축해 봅니다.

# ls /usr/bin/evince
-rwx-r-xr-x 1 root root 338K 2010-05-13 12:36 evince

# gzexe /usr/bin/evince
/usr/bin/evince:    59.6%

 

파일을 압축하면 원본 파일은 파일 맨 끝에 틸드(~)가 붙은 백업 파일을 생성하고, 압축된 파일은 기존의 파일명을 유지합니다.

# ls -alh /usr/bin/evince*
-rwxr-xr-x 1 root root 138K 2010-07-15 21:20 /usr/bin/evince
-rwxr-xr-x 1 root root 338K 2010-05-13 12:36 /usr/bin/evince~

 

evince~는 이전의 원본 실행 파일이고, evince는 압축된 실행 파일입니다. evince 파일이 문제 없이 동작한다고 생각하면 /usr/bin/evince~ 파일은 삭제할 수도 있습니다.

 

 

 

  4. gzip(파일 압축)

 1) 경로 : /usr/bin/gzip

 2) 요약 : 파일을 압축/해제

 3) 사용 방법 : gzip [옵션] [파일]

 4) 옵션

 -c, --stdout : 표준 출력에 쓰고, 원본 파일을 변경하지 않음

 -d, --decompress : 압축을 해제

 -f, --force : 출력 파일과 압축 링크를 강제로 덮어씌움

 -h, --help : 도움말 출력

 -l, --list : 압축된 파일의 내용을 출력

 -L, --license : 소프트웨어 라이선스를 출력

 -n, --no-name : 원본 이름과 타임 스탬프를 저장하거나 복구하지 않음

 -N, --name : 원본 이름과 타임 스탬프를 저장 또는 복구

 -q, --quiet : 경고 메시지를 출력하지 않음

 -r, --recursive : 현재 디렉터리를 기준으로 모든 하위 디렉터리와 파일까지 대상으로 함

 -S, --surfix=SUF : 압축 파일의 접두어로 지정한 SUF를 사용

 -t, --test : 실제로 ㅇ바축하지 않고 테스트만 수행

 -v, --verbose : 상세한 정보를 출력

 -V, --version : 버전 정보 출력

 -1, --fast : 빠르게 압축. 압축률은 낮음

 -9, --best: 느리게 압축, 압축률은 높음

 

 5) 추가 설명

gzip 명령어는 리눅스에서 사용하는 가장 보편적인 압축 방식으로써 압축률이 매우 뛰어납니다. 파일이나 디렉터리를 묶기 위해 자주 사용하는 tar 명령어와 함께 사용하여 tar.gz 확장자를 쓰기도 합니다. gzip 명령어는 파일을 압축만 할 뿐 여러 파일이나 디렉터리를 하나로 묶지는 못합니다. 파일 전송이나 관리 등의 이유로 여러 파일을 하나로 묶어야 한다면 tar 명령을 사용합니다. gzip 명령으로 압축하면 원본 파일은 사라지고 .gz의 확장자를 가진 파일이 생성됩니다. 이때 파일의 소유권과 권한은 원본 파일과 같습니다.

 

아래와 같이 gzip 명령으로 압축을 합니다.

# ls -alh dmesg
-rw-r----- 1 root adm 44K 2010-05-29 12:36 dmesg

# gzip -c dmesg > dmesg_backup.gz
# ls -alh dmesg_bakcup.gz
-rw-r--r-- 1 root root 12K 2010-05-29 17:02 dmesg_backup.gz

 

upgrade 디렉터리의 하위에 있는 파일을 확인하고 각각을 .gz 파일로 압축합니다.

# ls upgrade/
apache-1.3.24-1kr.i686.rpm openssh-askpass-3.4p1-1kr.i686.rpm
apache-1.3.26-1kr.i686.rpm openssh-clients-3.4p1-1kr.i686.rpm
apache-devel-1.3.24-1kr.i686.rpm openssh-server-3.4p1-1kr.i686.rpm
apache-devl-1.3.26-1kr.i686.rpm sendmail-8.12.3-2kr.i686.rpm
apache-doc-1.3.26-1kr.i686.rpm sendmail-cf-8.12.3-2kr.i686.rpm
openssh-3.4p1-1kr.i686.rpm

 

gzip -r 명령은 파일들을 개별적으로 압축합니다.

# gzip -r upgrade
# ls upgrade/
apache-1.3.24-1kr.i686.rpm.gz openssh-askpass-3.4p1-1kr.i686.rpm.gz
apache-1.3.26-1kr.i686.rpm.gz openssh-clients-3.4p1-1kr.i686.rpm.gz
apache-devel-1.3.24-1kr.i686.rpm.gz openssh-server-3.4p1-1kr.i686.rpm.gz
apache-devl-1.3.26-1kr.i686.rpm.gz sendmail-8.12.3-2kr.i686.rpm.gz
apache-doc-1.3.26-1kr.i686.rpm.gz sendmail-cf-8.12.3-2kr.i686.rpm.gz
openssh-3.4p1-1kr.i686.rpm.gz

 

위에서 실행한 결과를 gunzip -r(gzip -rd) 명령어로 압축을 해제합니다.

# gunzip -r upgrade

 

이제 upgrade 디렉터리의 모든 파일을 upgrade.tar.gz 이라는 파일명으로 압축합니다.

# tar cvzf upgrade.tar.gz upgrade/
upgrade/
/upgrade/apache-1.3.24-1kr.i686.rpm
/upgrade/openssh-askpass-3.4p1-1kr.i686.rpm
/upgrade/apache-1.3.26-1kr.i686.rpm
/upgrade/penssh-clients-3.4p1-1kr.i686.rpm
/upgrade/apache-devel-1.3.24-1kr.i686.rpm
/upgrade/penssh-server-3.4p1-1kr.i686.rpm
/upgrade/apache-devl-1.3.26-1kr.i686.rpm
/upgrade/endmail-8.12.3-2kr.i686.rpm
/upgrade/apache-doc-1.3.26-1kr.i686.rpm
/upgrade/sendmail-cf-8.12.3-2kr.i686.rpm
/upgrade/openssh-3.4p1-1kr.i686.rpm

압축 해제는 다음과 같습니다.
# tar xvzf upgade.tar.gz
반응형

댓글