[RHEL6] 압축 및 해제 명령어 2탄(shar, tar, uncompress)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 압축 및 해제 명령어 2탄(shar, tar, uncompress)

by 찬찬이 아빠 2020. 3. 11.
반응형
  5. shar(쉘 압축)

 1) 경로 : /usr/bin/shar

 2) 요약 : 쉘 아카이브를 생성

 3) 사용 방법 : shar

 4) 추가 설명

shar로 압축된 파일은 #!/bin/sh 헤더 정보와 아카이브를 풀기 위한 쉘 스크립트 명령 모음, 그리고 압축하지 않은 채 묶여 있는 파일의 모음으로 되어 있습니다. 이 파일은 뉴스 그룹 관리자가 원본 파일을 읽고, 정리하고, 삭제하기가 수월합니다. 요즘에도 이 파일 포맷은 인터넷 뉴스 그룹에서 종종 볼 수 있지만 대부분 tar/gzip 명령어로 대체되었습니다.

shar 아카이브는 unshar 명령으로 압축을 해제할 수있습니다.

 

<shar 명령으로 압축하기>

c 원본 파일을 shar로 압축합니다.

# shar -o [저장할 파일] [원본 파일]
또는
# shar [원본파일] > [저장할 파일]

실제로 아래와 같이 hello.c 원본 파일을 hello.shar 파일로 압축할 수 있습니다.
# sh hello.c > hello.shar

 

shar 형태의 파일은 쉘 스크립트 형식으로 되어 있습니다.

# cat hello.shar
#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.2.1).
# To extract the files from this archive, save it to some FILE, remove
# everything before the '!/bin/sh' line above, then type 'sh FILE'.
#
# Made on 2020-03-11 13:26 KST by <chan.localhost>.
# Source directory was '/home/chan'.
#
# Existing files will *no* be overwritten unless '-c' is specified,
... 생략 ...

 

 

<shar 명령으로 압축 풀기>

hello.shar 파일의 압축을 해제하려면 unshar 명령어를 사용합니다.

# unshar hello.shar

 

 

 

  6. tar(파일 묶기)

 1) 경로 : /bin/tar

 2) 요약 : 여러 파일을 묶거나 해제

 3) 사용 방법 : tar [옵션] 파일명1 파일명2

 4) 옵션

 파일명1 : 결과 파일명 지정

 파일명2 : 압축이나 묶음으로 만들 대상 파일 지정

 -A, --catenate : 아카이브에 tar 파일을 추가

 -c, --create : 새로운 아카이브 파일을 생성

 -C, --directory DIR : 대상 디렉터리(DIR)를 지정

 -d, --diff, --compare : 아카이브와 파일 시스템의 차이를 비교

 -f, --file=ARCHIVE : 아카이브 이름(ARCHIVE)을 지정

 -j, -l --bzip : bzip2를 이용해 압축

 -M, --multi-volume : 멀티 볼륨 아카이브 생성, 해제, 출력

 -r, --append : 아카이브의 끝에 파일 추가

 -u, --update : 아카이브의 목록 중 기존의 파일에서 업데이트된 파일만 추가

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

 -w, --interactive : 모든 행동에 사용자의 확인을 요구

 -x, --extract, --get : 아카이브에서 파일을 해제

 -z --gzip, --unzip : gzip으로 압축. unzip으로 압축 해제

 --help : 도움말 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

tar 명령어는 다수의 파일이나 디렉터리를 하나의 파일로 묶습니다. 특히 백업으 목적으로 시스템의 파일을 하나의 파일로 묶을 때 유용합니다. gzip이나 bzip2와 같은 파일 압축 명령어와 함께 스면 파일 아카이브를 생성하면서 압축까지 병행할 수 있습니다.

 

아래와 같이 디렉터리에 파일이 있다고 가정합니다.

# pwd
/home/chan
# ls
AUTHORS   Makefile.am   acinclude.m4   config.sub   grubb   nohup.out
BUGS      Makefile.in   aclocal.m4     configure    install-sh   result
COPYING   NEWS          compile        configure.ac  lib   stage1
ChangeLog   README      config.guess   debian        missing    stage2
INSTALL     THANKS      config.h.in    depcomp       mkinstalldir  util
MAINTENANCE    TODO       config.lo     docs     netboot

 

<파일 묶기>

chan 디렉터리를 backup.tar 파일로 묶어 봅시다. tar 명령어는 -cf 옵션을 주로 사용합니다. -c 는 tar 아카이브를 생성하고 -f 옵션은 아카이브명을 지정합니다.

# tar -cf backup chan/
# ls -alh
total 4.5M
drwxr-xr-x 3 user user 4.0K Jul 4 10:05 .
drwxr-xr-x 28 user user 4.0K Jul 4 10:05 .
-rw-r--r-- 1 user user 4.5M Jul 4 10:05 backup.tar
drwxr-xr-x 10 user user 4.0K Jul 3 17;37 chan

 

<파일 보기>

-tvf 옵션은 tar로 묶인 아카이브를 실제로 풀지는 않고 파일의 내용만 출력합니다.

# tar -tvf backup.tar | more
drwxr-xr-x user/user 0	2010-07-03 17:37 chan/
drwxr-xr-x user/user 0	2005-05-07 17:37 chan/grub/
-rw-r--r-- user/user 605  2005-02-02 12;38 chan/grub/Makefile.am
-rw-r--r-- user/user 6858  2005-02-02 12;38 chan/grub/main.c
-rw-r--r-- user/user 605  2005-02-02 12;38 chan/grub/Makefile.in
... 생략 ...

 

<묶음 풀기>

-xf 옵션은 bakcup.tar 파일의 아카이브를 해제하고, -v 옵션은 명령이 실행되는 과정을 상세히 출력합니다.

# tar -xf backup.tar

 

<묶음 압축하기>

-cf 옵션에 z 옵션을 추가하면 아카이브를 하는 동시에 gzip으로 압축할 수 있습니다. 파일명은 tar 파일과의 구별을 위해 tar.gz나 tgz를 확장자로 사용합니다. -v 옵션은 실행 과정을 상세하게 출력합니다.

# ls -alh
total 1.2M
drwxr-xr-x 3 user user 4.0K Jul 4 10:14.
drwxr-xr-x 28 user user 4.0K Jul 4 10:14..
-rw-r--r-- 1 user user 1.1M Jul 4 10:14 backup.tar.gz
drwxr-xr-x 10 user user 4.0K Jul 4 10:14 chan

 

위에서 압축한 파일은 -xzf 옵션으로 압축을 해제할 수 있습니다. tar -xzf 명령은 gzip -dtar -xf 명령어 조합과 같습니다.

# tar -xzf bakcup.tar.gz

 

-u 옵션은 기존 아카이브 파일에 변경된 파일만 추가할 수 있습니다. 아래는 backup.tar 아카이브 파일에 새롭게 add_directory_test 디렉터리를 추가합니다.

# mkdir chan/add_directory_test
# tar -uvf backup.tar.gz chan/add_driectory_test/

 

아래는 시스템을 백업할 경우 자주 사용하는 옵션 조합입니다.

# tar cvpif backup.tar.gz -exclude=backup.tar.gz \
-exclude=/proc -exclude=/mnt -exclude=/media --exclude=/sys

 

-C 옵션은 아카이브를 해제할 대상 디렉터리를 지정할 수 있습니다.

# tar vxf foo.tar -C /home/chan

 

아래는 아카이브를 해제했다가 해제한 파일들을 삭제할 때 유용합니다.

# rm -f 'tar -tvf foo.tar | awk {'print $6'}'
또는
# tar tzf foo.tar | xargs rm -f

 

 

  7. uncompress(압축 해제)

 1) 경로 : /usr/bin/uncompress

 2) 요약 : compress로 압축된 파일을 해제

 3) 사용 방법 : uncompress [옵션] 압축파일명

 4) 옵션

 -f : 강제로 압축 해제. 기존에 같은 이름의 파일이 있는 경우 덮어씀

 -v : 압축이 해제되는 과정을 상세하게 출력

 -c : 원본 파일이 변경되지 않고 해제되는 내용만을 출력

 -V : 버전 정보 출력

 

 5) 추가 설명

uncompress는 압축된 파일을 풀어주는 명령어입니다. -v 옵션은 uncompress 명령 실행 시 상세한 정보를 출력합니다.

# uncompress -v mbox
mbox: -- replaced with mbox.Z Compression: 44.22%

 

-c 옵션은 압축 파일을 해제하지 않고 결과 정보만 출력합니다.

# uncompress -c mbox.Z
From root Tue Jul 9 03:30:06 2004
Return-Path:: <MAILER-DAEMON@park.chanchan.com>
Received: from localhost (localhost)
by park.chanchan.com (8.11.6/8.11.6) id gjdfi209j;
Tue, 9 Jul 2004 03:30:06 +900
Date: Tue, 9 Jul 2004 03:30:06 +900

 

-f 옵션은 현재 디렉터리에 같은 이름의 파일이 존재하면 덮어 씁니다.

# uncompress -f -v mbox.Z
mbox.Z: -- replaced with mbox
반응형

댓글