🦇 Linux

리눅스 tar

ji-hyun 2021. 8. 29. 19:11

우리는 윈도우에서 파일 압축을 한번에 하지만 리눅스와 유닉스는 두 과정을 거쳐야 한다.

 

① a.txt, b.txt, c.txt, d.txt 라는 4개의 파일을 test 라는 한 개의 파일로 묶는 '파일 묶기' 과정 (bundle!)

② 그 test 파일을 압축하는 '파일 압축' 과정

(사실 윈도우에 있는 압축 프로그램이 이 파일 묶기와 파일 압축을 한 번에 해준다.)

 

 

 

tar 명령은 여러 파일들을 하나의 파일로 묶어주는 명령으로 사용한다. 리눅스에서 사용되는 GNU tar 는 옵션을 이용해서 파일로 묶거나 풀 때 압축 관련 작업을 동시에 진행할 수 있다.

 

 

 

 

tar [옵션] [파일명]

옵션 사용 시 - 기호를 사용하지 않아도 되지만, 인자값이 있는 옵션을 여러 개 지정하는 경우에는 - 기호를 사용해야 한다.

 

옵션 내용
-f(필수) 묶음 파일을 이름을 지정합니다.
-c 지정한 파일이나 디렉터리를 하나로 묶어서 새로운 tar파일을 생성합니다.
-x 생성된 tar파일을 풉니다.
-t 묶음을 풀기 전에 묶인 경로를 보여줍니다. (c를 하면 생성, x를 하면 해제, t를 하면 뭐로 이루어져있는지 파일목록 보여주기)
-C(대문자) 묶음을 풀 때 지정된 디렉터리에 압축을 풉니다. 지정하지 않으면 묶을 때와 동일한 디렉터리에 묶음이 풀립니다.
-v visaul의 의미로 파일이 묶이거나 풀리는 과정을 보여줍니다. 예를 들어 c옵션과 같이 사용하면 묶여지는 동안 파일의 이름을 보여줍니다.
-r 기존의 tar파일 뒤에 파일을 추가합니다. (빼먹었을 경우나, 추가로 더 묶어야 할 때)
-h 심볼릭 링크가 가리키고 있는 원본 파일을 저장합니다.
-p 파일이 생성되었을 때의 권한을 그대로 유지하게 해줍니다.
-P 맨 앞의 /를 포함해서 절대 경로로 관련 정보를 유지합니다.
--exclude 특정 파일만 제외시키고 묶을 수 있어요.
--remove-files tar압축 후 파일 지우기
-Z compress 관련 옵션으로 예전 UNIX 계열 표준 압축 파일인 tar.Z에 사용 
-z gzip 관련 옵션으로 tar.gz 압축 파일 생성~ (tar+gzip)
-j bzip2 관련 옵션으로 압축 파일 tar.bz2 생성 (tar+bzip2)
-J xz관련 옵션으로 압축 파일 tar.xz 생성 (tar+xz)

 

 

 

 

 

< 파일 압축 및 풀기 >

먼저 파일 압축하고 푸는 과정을 실습을 통해 알아보자. (★파일 묶기는 좀 뒤에 있음)

 

 

1. gzip, gunzip

 

 

ls 명령을 내려 httpd-2.4.48.tar.gz 파일이 있는지 확인한다.

이 파일이 있어야 압축 과정을 진행할 수 있다.

파일 다운 방법↓

2021.08.29 - [Linux] - 리눅스 - ftp

 

 

 

 

 

cp /etc/services y 명령을 통해 /etc/services 파일을 y 라는 이름으로 복사해온다.

ls 명령을 통해 y가 잘 복사됬는지 확인한다.

 

이제 파일 크기를 확인해보자.

ls -l 명령을 내리면 파일 크기가 670293 인데, 잘 와닫지 않는다.

ls -lh 명령을 내려서 좀 더 직관적인 파일 크기를 확인해본다. (h 명령은 human-readable 의 약자이다)

 

 

 

 

 

 

 

gzip y 명령을 하여 y 파일을 압축해준다.

ls -lh 명령을 내리면 아까 y 파일 크기 655K 가 133k 로 바뀐 것을 확인할 수 있다.

또한 파일 이름은 y.gz 로 변했으며 빨간색으로 바뀌었다. (확장자 gz)

 

 

 

 

 

 

이번엔 파일 압축을 풀어본다.

gunzip y.gz 명령을 내려서 압축을 해제하고

ls -lh 명령을 내려 파일 크기를 확인해본다. (133K -> 655K 로 돌아왔다)

 

 

정리

  • gzip y : y 파일 압축하기
  • gunzip y.gz : y.gz 파일 압축 풀기

 

 

 

2. xz, unxz

 

 

이번엔 xz 명령을 사용해볼 것이다.

  • xz y : y 파일을 압축한다 (크기: 98K)
  • unxz y.xz : y.xz 파일 압축을 푼다. (크기: 655K)

 

 

 

 

 

 

< 파일 묶기 및 해제 >

이번엔 여러개의 파일을 하나의 파일로 묶는 tar 명령과 옵션들에 대해 알아볼 것이다.

 

 

 

httpd-2.4.48.tar.gz 파일 압축을 해제해보자.

gunzip httpd-2.4.48.tar.gz 입력 (여기서 꿀팁! h를 쓰고 tab 키를 누르면 자동완성이 된다)

ls -lh 명령을 내려 파일 크기를 확인해보면 9.0M -> 41M 로 바뀌었다.

또한 확장자도 tar.gz 에서 tar 로 바뀌었다.

tar 는 묶여 있는 것이다 (테이프 아카이브 줄임말)

 

 

 

tar xf httpd-2.4.48.tar 명령을 기준으로 어떻게 바뀌는지 본다.

 

현재 httpd-2.4.48.tar 와 y 파일이 있었는데

tar xf httpd-2.4.48.tar 명령을 내리고  ls 명령을 내려 다시 확인해보니

httpd-2.4.48 와 httpd-2.4.48.tar 와 y 파일이 있다.

-f(필수) 묶음 파일을 이름을 지정합니다.
-x 생성된 tar 파일을 풉니다.

 

 

tar cf h.tar httpd-2.4.48.tar 명령을 내려 h.tar 라는 새로운 묶음 파일을 만들어준다.

-f(필수) 묶음 파일을 이름을 지정합니다.
-c 지정한 파일이나 디렉터리를 하나로 묶어서 새로운 tar파일을 생성합니다

 

 

 

 

'🦇 Linux' 카테고리의 다른 글

리눅스 - ftp  (0) 2021.08.29
리눅스 - rpm, yum  (0) 2021.08.29
[내가 보려고 쓴] 리눅스 프로세스 개념  (0) 2021.08.29
[내가 보려고 쓴] 리눅스 - du, df  (0) 2021.08.25
리눅스 - bashrc, bash_profile  (0) 2021.08.25