Overview
오늘은 리눅스 압축&보관 유틸리티에 대해서 알아보려고 한다.
sequenceDiagram
participant User as User
participant Tar as Tar Utility
participant Gzip as Gzip Utility
participant Bzip2 as Bzip2 Utility
participant Xz as Xz Utility
participant Zip as Zip Utility
participant SevenZ as 7z Utility
User->>+Tar: Create Tar Archive (tar)
Tar-->>+User: .tar file
User->>+Gzip: Compress with Gzip (gz)
Tar->>Gzip: .tar file
Gzip-->>+User: .tar.gz file
User->>+Bzip2: Compress with Bzip2 (bz2)
Tar->>Bzip2: .tar file
Bzip2-->>+User: .tar.bz2 file
User->>+Xz: Compress with Xz (xz)
Tar->>Xz: .tar file
Xz-->>+User: .tar.xz file
User->>+Zip: Create & Compress with Zip (zip)
Zip-->>+User: .zip file
User->>+SevenZ: Create & Compress with 7z (7z)
SevenZ-->>+User: .7z file
리눅스 압축&보관 유틸리티란?
Linux는 파일 압축 및 보관을 위한 다양한 도구를 제공하며 각 도구에는 고유한 기능 및 사용 사례가 있다.
Linux에서 가장 일반적으로 사용되는 압축&보관 유틸리티에 대해서 알아보려고 한다.
압축 유틸리티
종류 및 사용법 ( ---> 15% 씩 압출 효율이 높아진다. )
압축 : `gzip / bzip2 / xz / zip / compress <파일 또는 디렉터리>`
해제 : `gunzip / bunzip2 / unxz / unzip / uncompress <파일 또는 디렉터리>`
예외: `gzip -d <파일 또는 디렉터리> (압축해제)` = gunzip
보관 유틸리티(tar, Tape ARchive)
종류 및 사용법
보관 : `tar cvf 아카이빙파일명.tar <소스파일>`
해제 : `tar xvf 아카이빙파일명.tar`
리눅스에서 사용되는 프로그램은 C언어로 된 소스(source)파일을 tar 형식으로 압축해서 배포된다.
(소스프로그램은 GNU 웹사이트나 관련 프로그램사이트에서 무료로 배포된다.)
프로그램은 대부분 여러 배포판들의 패키지관리 기법을 통해 쉽게 설치,관리할 수 있지만 환경설정을 변경해야하거나 부득이하게 소스파일로 설치해야 하는 경우도 있다.
수동으로 소스파일을 설치할 때 가장 처음에 할 일은 압축된 프로그램을 풀어 내용을 확인하는 것이다.
프로그램은 압축도구에 따라 각기 다른 확장자가 붙게 된다. 이때 사용되는 압축도구에는 `compress, gzip, bzip2, xz` 총 4가지가 존재한다.
이번에는 이 네 가지의 압축도구와 tar 명령의 사용법에 대해 알아보려고 한다.
tar 명령은 파일 아카이브라 불리며 원래는 저장소라는 뜻을 가지고 있다. 리눅스에서는 파일을 묶어서 하나로 만든 것이라는 의미로 사용한다.
파일로 묶을 때 디렉터리를 지정하면 그 디렉터리의 모든 파일과 서브디렉터리들까지 함께 묶여진다.
또한 파일의 속성이나 허가권, 하드링크, 심볼릭링크 등도 보존할 수 있다. tar는 파일을 묶어주고 풀어주는 기능으로만 사용했지만 현재는 파일을 묶거나 풀 때 압축관련 작업도 동시에 진행할 수 있다.
1. compress (.Z 확장자) 사용방법
compress [파일명] # 압축
uncompress [파일명] # 압축해제
유닉스에서 많이 사용하던 압축 프로그램이다. 하지만 압축률이 낮아 현재는 거의 사용되지 않는다.
compress 명령을 통해 압축한 파일에는 `.Z` 확장자가 붙는다.
2. gzip (.gz 확장자) 사용방법
gzip [옵션] [파일명] # 압축
gunzip [옵션] [파일명] # 압축해제
zcat [파일명] # 압축된 파일의 내용 확인
- -d : 압축풀기
- -1 : 압축시간 줄이기 (압축률은 떨어진다.)
- -9 : 파일을 최대로 압축 (시간이 오래걸린다.)
- -l : 압축파일에 대한 정보 출력
- -r : 압축대상이 디렉터리라면 하위디렉터리까지 모두 압축
- -v : 진행과정을 %와 함께 자세히 출력한다.
압축된 파일을 풀기 위해서는 `gunzip` 명령이나 `gzip -d` 명령이 있다.
두 가지 명령은 같은 결과를 보여주며 사용자의 편의에 맞게 사용하면 된다.
3. bzip2 (.bz2 확장자) 사용방법
bzip2 [옵션] [파일명] # 압축
bunzip2 [옵션] [파일명] # 압축해제
- -d : 압축풀기
- -1 : 압축시간을 줄인다. (압축률은 떨어진다.)
- -9 : 파일을 최대로 압축
- -f : 존재하는 파일을 덮어쓰기한다.
- 줄리안 시워드가 만든 압축프로그램으로 블록정렬 알고리즘을 사용한다.
- 기본적인 사용법은 gzip과 동일하며 gzip보다 압축률은 좋지만 압축시간은 더 걸린다.
- (다만, gzip의 -l 옵션은 bzip2에서는 사용할 수 없다.)
- 사용법은 gzip과 동일하다.
4. xz (.xz 확장자) 사용방법
xz [옵션] [파일명] # 압축
unxz [옵션] [파일명] # 압축해제
- -d : 압축풀기
- xz는 데이터 무손실 압축프로그램이다.
- gzip과 bzip2 에서 사용하는 압축률 조절 옵션(-1~-9)기능이 없지만, 다른 압축파일에 비해 매우 높은 압축률을 자랑한다.
4. tar 사용방법
tar [옵션] [파일명]
tar은 리눅스에서 여러개의 파일이나 디렉터리를 하나로 묶는데에 사용된다. 파일을 묶을 때 여러 압축프로그램과 관련된 옵션을 동시에 사용할 수 있다. 즉, 파일을 묶으면서 압축을 동시에 진행할 수 있다.
tar에서는 옵션을 사용할 때 주로 `-` 기호를 사용하지 않아도 무관하다.
- -c : 지정된 파일이나 디렉터리를 묵어 하나의 tar파일 생성
- -x : 생성된 tar파일 풀기
- -v : 작업중 대상이 되는 파일을 보여준다.
- -f : 작업대상의 tar파일에 대한 이름 지정
- -r : 기존의 tar 파일 안에 다른파일 추가
- -t : tar 파일에 묶인 파일의 목록 출력
- -Z : compress 관련 옵션 tar.Z 파일 생성에 사용
- -z : gzip 관련 옵션으로 tar.gz 파일 생성에 사용
- -j : bzip2 관련 옵션으로 tar.bz2 파일 생성에 사용
- -J : xz 관련 옵션으로 tar.xz 파일 생성에 사용
1) 여러개의 파일을 하나로 묶기
tar를 이용해서 5개의 log파일을 하나로 묶어보았다. 파일을 묶을 때는 기본적으로 cvf 옵션을 동시에 사용해야 한다.
-v 옵션을 사용했기 때문에 묶이는 파일이 모두 출력되었으며, -f 옵션을 이용해서 생성될 파일명을 [log.tar]로 지정했다. (파일명을 지정하지 않으면 진행과정만 출력될 뿐, tar파일이 생성되지 않는다.)
기존에 있던 파일은 그대로 존재하고 새로운 파일에 묶여있다.
2) tar 묶인 파일 확인
tar 파일 안에 어떤 파일 들이 묶여있는지 확인하기 위해서는 -t 옵션을 사용한다.
기본적으로 -tf 옵션만으로 파일의 내용을 확인할 수 있다.
이후 파일의 내용을 자세히 확인하기 위해서는 -v옵션을 같이 사용한다.
3) tar 파일 풀기
4) tar과 압축프로그램의 사용
tar에서는 각 압축프로그램에 관련된 옵션을 이용해서 묶음과 동시에 압축할 수 있다.
(z = gz / j = bz2 / J = xz)
tar에서 압축에 사용되는 z, j, J 세 개의 옵션은 묶인 파일을 풀 때도 마찬가지로 사용한다.
(압축을 풀면서 묶였던 파일을 푼다.)
tar cvf [파일명] [묶을파일] # tar파일 생성
tar rvf [파일명] [묶을파일] # 기존 tar파일에 다른파일 추가로 묶기
tar xvf [파일명] # tar파일 풀기
tar tvf [파일명] # tar파일에 묶인 파일 확인
Reference
국비수업
'Linux' 카테고리의 다른 글
CentOS 7 / 계정에 sudo 권한 주기 (0) | 2022.04.28 |
---|---|
Django(Linux) (0) | 2022.02.16 |
LVM (0) | 2022.02.16 |
마운트(Mount) / 오토 마운트(Auto Mount) (0) | 2022.01.17 |
파티션(Partition) (0) | 2022.01.17 |