[리눅스마스터 실기] 압축 유틸리티 정리 (tar, compress, gzip, bzip2, xz, zip, gcc)
Certificate/Linux Master 2022. 5. 11. 16:35728x90
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) - 예) c 옵션과 함께 사용하면 묶여지는 동안 파일의 이름을 보여줌. |
-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
- 레드햇 계열 리눅스인 경우 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
⑥ 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
그리드형(광고전용)
'Certificate > Linux Master' 카테고리의 다른 글
[리눅스마스터 1급 실기] 출제 주제별 파일/디렉터리 정리 (0) | 2022.05.12 |
---|---|
[리눅스마스터 1급 실기] man 명령어 사용법 (0) | 2022.05.12 |
[리눅스마스터 1급 실기] yum (0) | 2022.05.11 |
[리눅스마스터 1급 실기] rpm (0) | 2022.05.11 |
[리눅스마스터 1급 실기] 스왑(Swap) (0) | 2022.05.10 |
[리눅스마스터 1급 실기] 모듈 (modules.dep, depmod) (0) | 2022.05.10 |
[리눅스마스터 1급 실기] 디스크 쿼터(Disk Quota) (0) | 2022.05.10 |
[리눅스마스터 1급 실기] 디스크 관련 정보 (UUID, blkid) (0) | 2022.05.10 |