뭉게뭉게 엔지니어
Compress(tar,gzip,bzip2) 본문
여러 개의 파일을 하나로 만드는 방법으로는 묶음 과 압축 이 있다.
무엇인지 설명하기 전에 이미 이름에서 감이 오니까 그 용도를 우선적으로 살펴보자!
- 배포의 편리성 : 데이터를 빠르고, 편리하게 송·수신 하기 위해 사용한다. - 파일 관리의 편리성 : 대용량의 데이터를 보관하기 위해 사용한다. |
묶음은 단순하게 파일을 하나로 묶는 것을 말하며, tar 명령어를 사용한다.
tar 명령어 사용 후 file 명령어를 활용하여 파일 형식을 찾아보면 Archive 임을 확인할 수 있다!
더불어 tar는 아카이브 기능뿐만 아니라, tar로 묶여지기 전 파일들의 속성과 디렉터리 구조 등을 유지하는 특징이 있다.
그래서 리눅스용 프로그램, 데이터, 소스 및 라이브러리 등을 배포하는 용도로 많이 사용한다.
(내용 출처: https://recipes4dev.tistory.com/146)
tar의 주요 명령 옵션은 아래와 같다.
tar [OPTION...] [FILE]...
-f : 대상 tar 아카이브 지정. (기본 옵션)
-c : tar 아카이브 생성. 기존 아카이브 덮어 쓰기. (파일 묶을 때 사용)
-x : tar 아카이브에서 파일 추출. (파일 풀 때 사용)
-v : 처리되는 과정(파일 정보)을 자세하게 나열.
-z : gzip 압축 적용 옵션.
-j : bzip2 압축 적용 옵션.
-t : tar 아카이브에 포함된 내용 확인.
-C : 대상 디렉토리 경로 지정.
-A : 지정된 파일을 tar 아카이브에 추가.
-d : tar 아카이브와 파일 시스템 간 차이점 검색.
-r : tar 아카이브의 마지막에 파일들 추가.
-u : tar 아카이브의 마지막에 파일들 추가.
-k : tar 아카이브 추출 시, 기존 파일 유지.
-U : tar 아카이브 추출 전, 기존 파일 삭제.
-w : 모든 진행 과정에 대해 확인 요청. (interactive)
-e : 첫 번째 에러 발생 시 중지.
※ tar 파일의 확장자는 .tar 이다.
여기서 많이 사용하는 것은 cvf (묶기) 와 xvf(풀기)인데, 쉽게 구성도를 그리면 아래와 같다.
구성도를 토대로 실습을 해보자!
실습 환경 설정]
파일 3개 생성
# touch /root/1 /root/2 /root/3
[root@localhost ~]# ll
합계 8
-rw-r--r-- 1 root root 0 6월 30 11:42 1
-rw-r--r-- 1 root root 0 6월 30 11:42 2
-rw-r--r-- 1 root root 0 6월 30 11:42 3
[root@localhost ~]# alias ll
alias ll='ls -l --color=auto'
--------------------------------------------------------------
절대 경로로 묶기]
[root@localhost ~]# tar cvf /root/123.tar /root/1 /root/2 /root/3
tar: Removing leading `/' from member names (▶절대 경로로 묶는 경우는 최상위(/)가 제거된 상태로 묶인다.)
/root/1
/root/2
/root/3
[root@localhost ~]# ls
1 123.tar 2 3
anaconda-ks.cfg initial-setup-ks.cfg
공개 다운로드 문서 바탕화면 비디오 사진 서식 음악
파일 포맷 확인]
[root@localhost ~]# file /root/123.tar
/root/123.tar: POSIX tar archive (GNU)
기존 1,2,3 파일 삭제후 묶음을 해제]
[root@localhost ~]# rm ./1 ./2 ./3
rm: remove 일반 빈 파일 `./1'? y
rm: remove 일반 빈 파일 `./2'? y
rm: remove 일반 빈 파일 `./3'? y
[root@localhost ~]# alias rm
alias rm='rm -i'
tar xvf ~
[root@localhost ~]# tar xvf /root/123.tar
root/1 v옵션
root/2 v옵션
root/3 v옵션
[root@localhost ~]# ls -R /root/
/root/:
123.tar anaconda-ks.cfg initial-setup-ks.cfg root
공개 다운로드 문서 바탕화면 비디오 사진 서식 음악
/root/root:
1 2 3
~
--------------------------------------------------------------
상대 경로로 묶기]
[root@localhost ~]# touch ./11 ./22 ./33
[root@localhost ~]# ls
11 123.tar 22 33 anaconda-ks.cfg initial-setup-ks.cfg
상대경로로 파일지정하여 묶음]
[root@localhost ~]# tar cvf /root/112233.tar ./11 ./22 ./33
./11
./22
./33
묶음 파일 정보 확인]
[root@localhost ~]# tar tvf /root/112233.tar
-rw-r--r-- root/root 0 2022-06-30 12:02 ./11
-rw-r--r-- root/root 0 2022-06-30 12:02 ./22
-rw-r--r-- root/root 0 2022-06-30 12:02 ./33
기존 파일 삭제후 묶음을 해제]
[root@localhost ~]# rm -rf ./11 ./22 ./33
[root@localhost ~]# tar xvf /root/112233.tar
./11
./22
./33
[root@localhost ~]# ls
11 123.tar 33 112233.tar 22 anaconda-ks.cfg root
압축은 여러 개의 파일을 하나로 묶음과 동시에 크기를 줄일 수 있다. gzip과 bzip2 명령어를 사용한다.
gzip, bzip2는 tar로 묶인 파일을 압축하는 명령어이다.
명령어의 구조는 아래와 같다.
위 구성도를 토대로 실습을 해보자!
※압축 해제
gzip ▶ gunzip
bzip2 ▶ bunzip2
==============================================================
gzip>>
[root@localhost ~]# gzip /root/123.tar
[root@localhost ~]# ls
11 123.tar.gz 33 initial-setup-ks.cfg
공개 문서 비디오 서식
112233.tar 22 anaconda-ks.cfg root
다운로드 바탕화면 사진 음악
▶ 기존 123.tar 가 사라진 것을 확인할 수 있다!
gzip의 확장자는 .tar.gz 이다.
압축파일인지 확인]
[root@localhost ~]# file /root/123.tar.gz
/root/123.tar.gz: gzip compressed data,
was "123.tar", from Unix, last modified: Thu Jun 30 11:45:06 2022
다시 묶음파일로]
[root@localhost ~]# gunzip /root/123.tar.gz
[root@localhost ~]# ls /root/123.tar
/root/123.tar
--------------------------------------------------------------------
bzip2>>
압축 전 ls 확인]
[root@localhost ~]# ls /root/123.tar
/root/123.tar
압축 후 확인]
[root@localhost ~]# bzip2 /root/123.tar
[root@localhost ~]# ls
11 123.tar.bz2 33 initial-setup-ks.cfg
공개 문서 비디오 서식
112233.tar 22 anaconda-ks.cfg root
다운로드 바탕화면 사진 음악
▶ 기존 123.tar 가 사라진 것을 확인할 수 있다!
bzip2의 확장자는 .tar.bz2 이다.
파일 형식 확인]
[root@localhost ~]# file /root/123.tar.bz2
/root/123.tar.bz2: bzip2 compressed data, block size = 900k
그런데 tar로 묶어주고 다시 gzip 또는 bzip2를 하는 것이 번거롭기 때문에 한번에 해주는 방법도 있다!
구조를 먼저 확인하는 것이 이해에 도움이 될 것!
실습!
gzip>>
기존 파일 삭제]
# rm -rf ./11 ./22 ./33 ./123.tar ./112233.tar
[root@localhost ~]# tar zcvf 123.tar.gz ./1 ./2 ./3
./1
./2
./3
[root@localhost ~]# ls
1 123.tar.gz 2 3 anaconda-ks.cfg initial-setup-ks.cfg
root 공개 다운로드 문서 바탕화면 비디오 사진 서식 음악
기존 파일 삭제 -> 압축 파일 해제 -> 확인]
[root@localhost ~]# rm -rf ./1 ./2 ./3
[root@localhost ~]# tar zxvf /root/123.tar.gz
./1
./2
./3
[root@localhost ~]# ls
1 123.tar.gz 2 3 anaconda-ks.cfg
initial-setup-ks.cfg root
공개 다운로드 문서 바탕화면 비디오 사진 서식 음악
---------------------------------------------------------------
bzip2
새로 파일을 ./11 ./22 ./33 을 만들고 해볼 것
[root@localhost ~]# tar jcvf /root/112233.tar.bz2 ./11 ./22 ./33
./11
./22
./33
[root@localhost ~]# ls
1 11 112233.tar.bz2 123.tar.gz 2 22 3 33
anaconda-ks.cfg initial-setup-ks.cfg root
공개 다운로드 문서 바탕화면 비디오 사진 서식 음악
# rm -rf ./11 ./22 ./33
[root@localhost ~]# tar jxvf /root/112233.tar.bz2
./11
./22
./33
---------------------------------------------------------------
-C 압축 해제 시 경로 설정>>
/stickytest 디렉터리에 압축을 해제]
[root@localhost ~]# tar jxvf /root/112233.tar.bz2 -C /stickytest/
./11
./22
./33
[root@localhost ~]# ls -al /stickytest/
합계 4
drwxrwxrwt 2 root root 36 6월 30 12:42 .
dr-xr-xr-x. 20 root root 4096 6월 30 11:17 ..
-rw-r--r-- 1 root root 0 6월 30 12:39 11
-rw-r--r-- 1 root root 0 6월 30 12:39 22
-rw-r--r-- 1 root root 0 6월 30 12:39 33
'☁ Server > 기초 따라가기' 카테고리의 다른 글
System Process 관리 (0) | 2022.07.17 |
---|---|
Package 관리 (0) | 2022.07.17 |
Special permission & ACL(확장퍼미션) (0) | 2022.07.08 |
Permission (0) | 2022.07.08 |
Ownership (0) | 2022.07.05 |
Comments