압축 & 아카이브
* 압축 & 아카이브
- 파일 하나의 용량을 줄여주는 것이 압축이다.
- 원래 여러개의 파일을 압축하는 기능은 없다.
- 여러개의 파일을 하나로 묶는 과정을 아카이빙 이라고 한다.
! 윈도우
복수의 파일 선택 -> 압축
! 리눅스
복수의 파일 선택 -> 아카이브 -> 압축
! 실습 환경 구축
#mkdir -p /Practice/compress // 테스트 디렉터리 생성
#cd /Practice/compress // 디렉터리로 이동
#cp /usr/lib/locale/locale-archive ./file1 // 테스트 파일 file1로복사
#cp ./file1 ./file2 // file1을 file2로 복사
#cp ./file2 ./file3 // file2를 file3으로 복사
#ls -lh // 확인
-rw-r--r--. 1 root root 95M 2023-05-18 04:33 file1
-rw-r--r--. 1 root root 95M 2023-05-18 04:33 file2
-rw-r--r--. 1 root root 95M 2023-05-18 04:34 file3
① gzip
[ 사용법 ]
#gzip [파일명] // 압축결과 : [파일명].gz
#gzip [옵션] [파일명] // 압축결과 : [파일명].gz
#gunzip [파일명] // 압축해제
#gzip -d [파일명].gz // 압축해제
[ 옵션 ]
1 ~ 9
-6 : 기본값
-1 : 압축속도가 가장 빠르며 , 압축율을 가장 낮음
-9 : 압축속도가 가장 느리며 , 압축율을 가장 높음
[root@Server-A compress]# time gzip -1 file1 // 95M -> 23M
real 0m1.336s // 실제 걸린시간 ( user + sys )
user 0m0.331s // 사용자 영역에서 동작한시간
sys 0m1.003s // 커널에서 동작한시간
[root@Server-A compress]# time gzip -9 file2 // 95M -> 22M
real 0m35.509s
user 0m34.563s
sys 0m0.568s
[root@Server-A compress]# time gzip file3
real 0m5.266s
user 0m4.503s
sys 0m0.748s
[root@Server-A compress]# ls -lh //95M -> 22M
합계 65M
-rw-r--r--. 1 root root 23M 2023-05-18 04:33 file1.gz
-rw-r--r--. 1 root root 22M 2023-05-18 04:33 file2.gz
-rw-r--r--. 1 root root 22M 2023-05-18 04:34 file3.gz
#gunzip file1.gz // 압축 해지
#gunzip file2.gz
#gzip -d file3.gz // 압축 해지
#ls -lh
-rw-r--r--. 1 root root 95M 2023-05-18 04:33 file1
-rw-r--r--. 1 root root 95M 2023-05-18 04:33 file2
-rw-r--r--. 1 root root 95M 2023-05-18 04:34 file3
#gzip file1 file2 file3 // 복수의 인자 사용가능
#ls -lh
#gunzip file1.gz file2.gz file3.gz
#ls -lh
#gzip file* // 메타 문자 사용가능
#ls -lh
#gunzip file*
#ls -lh
② bzip2
[ 사용법 ]
#bzip2 [파일명] // 압축 결과 : [파일명].bz2
#bunzip2 [파일명] // 압축 해제
#bzip2 -d [파일명] // 압축 해제
[root@Server-A compress]# time bzip2 file1 // 95M -> 20M
real 0m6.869s
user 0m6.492s
sys 0m0.351s
[root@Server-A compress]# ls -lh
합계 209M
-rw-r--r--. 1 root root 20M 2023-05-18 04:33 file1.bz2
-rw-r--r--. 1 root root 95M 2023-05-18 04:33 file2
-rw-r--r--. 1 root root 95M 2023-05-18 04:34 file3
#bunzip2 file1.bz2 // 압축 해제
(== #bzip2 -d file1.bz2)
#ls -lh // 확인
#bzip2 file1 file2 file3 // 복수의 인자 사용가능
#ls -lh
#bzip2 file1.bz2 file2.bz2 file3.bz2
#ls -lh
#bzip2 file* // 메타 문자 사용가능
#ls -lh
#bunzip2 file*
#ls -lh
③ xz
[ 사용법 ]
#xz [파일명] // 압축결과 : [파일명].xz
#unxz [파일명].xz // 압축해제
#xz -d [파일명].xz
( 최소버전에는 설치가 안되어있기때문에 설치를 해야 한다. )
#yum install -y xz
[root@Server-A compress]# time xz file1 // 95M -> 3.0M
real 0m26.875s
user 0m26.671s
sys 0m0.151s
[root@Server-A compress]# ls -lh
합계 193M
-rw-r--r--. 1 root root 3.0M 2023-05-18 04:33 file1.xz
-rw-r--r--. 1 root root 95M 2023-05-18 04:33 file2
-rw-r--r--. 1 root root 95M 2023-05-18 04:34 file3
#unxz file1.xz // 압축 해제
(== #xz -d file1.xz )
#ls -lh // 확인
#xz file1 file2 file3 // 복수의 인자 사용가능
#ls -lh
#xz file1.xz file2.xz file3.xz
#ls -lh
#xz file* // 메타 문자 사용가능
#ls -lh
#xz file*
#ls -lh
아카이브 ( Archive )
- 파일 , 디렉터리의 묶음
- tar ( Tape ARchive ) , 확장자는 .tar를 사용
- 아카이브에서 옵션에 ' - ' 을 생략할 수 있다.
[ 옵션 ]
-c : 아카이브 파일 생성
-x : 아카이브 파일 해제
-v : 진행 과정 출력
-f : 아카이브 파일을 지정
-r : 기존 아카이브에 새로운 파일 추가
-t : 아카이브 파일의 목록을 확인
+@ 자주사용되어지는 옵션
생성 : cvf
해제 : xvf
1) 아카이브 파일 생성하기 ( cvf )
[ 사용법 ]
#tar cvf [아카이브파일].tar [파일1] [파일2] ...[파일n]
#tar cvf fileA.tar file1 file2 file3
(file*)
#ls -lh //지정한 파일들을 묶기만 하고
용량은 줄어 들지 않았다. (284M)
-rw-r--r--. 1 root root 284M 2023-05-18 05:48 fileA.tar
2) 아카이브 해제하기 ( xvf )
[ 사용법 ]
#tar xvf [아카이브].tar
#rm -rf file{1..3} // 압축이 해제되면 기존의 파일과
중복되기 때문에 실습환경상 삭제
#ls -lh
#tar xvf fileA.tar // 아카이브 해제
#ls -lh
3) 기존 아카이브 파일에 새로운 파일 추가 ( rvf )
[ 사용법 ]
#tar rvf [아카이브파일].tar [추가파일]
#cp file1 file4 // 추가용 테스트파일 복사
#tar rvf fileA.tar file4 // file4를 fileA.tar에 추가
#ls -lh // 증가된 용량 확인
-rw-r--r--. 1 root root 379M 2023-05-18 06:11 fileA.tar
( 284 + 95 = 379 )
4) 아카이브 파일 목록 확인 ( tvf )
[ 사용법 ]
#tar [아카이브파일].tar
#tar tvf fileA.tar
-rw-r--r-- root/root 99170352 2023-05-18 04:33 file1
-rw-r--r-- root/root 99170352 2023-05-18 04:33 file2
-rw-r--r-- root/root 99170352 2023-05-18 04:34 file3
-rw-r--r-- root/root 99170352 2023-05-18 06:10 file4
5) 특정 디렉터리에 아카이브 해제하기
[ 사용법 ]
#tar xvf [아카이브파일].tar -C [위치]
#mkdir /test // test디렉터리 생성
#tar xvf fileA.tar -C /test // test디렉터리에 아카이브 해제
#ls -lh /test // 확인
QUIZ
#cd /Practice/compress
#ls
file1 file2 file3 // 그 외 파일이나 디렉터리는 모두 삭제
1. 현재 경로에 있는 file 1 ~ 3파일을 gzip_test.tar로 아카이빙
2. 현재 경로에 있는 file 1 ~ 3파일을 bzip2_test.tar로 아카이빙
3. 현재 경로에 있는 file 1 ~ 3파일을 xz_test.tar로 아카이빙
4. file4 , file5, file6을 생성하여
file4는 gzip_test.tar에 추가
file5는 bzip2_test.tar에 추가
file6는 xz_test.tar에 추가
추가된 결과 확인
5. gzip_test.tar 파일을 gzip로 압축 ( 압축하기 전과 후에 크기 비교 )
6. bzip2_test.tar 파일을 bzip2로 압축 ( 압축하기 전과 후에 크기 비교 )
7. xz_test.tar 파일을 xz로 압축 ( 압축하기 전과 후에 크기 비교 )
8. /Practice/decompress 디렉터리 생성
gzip_test.tar.gz bzip2_test.tar.bz2 xz_test.tar.xz 파일을
decompress 디렉터리로 이동
9. decompress디렉터리에 bzip2 , gzip , xz 디렉터리 생성
각 이름에 맞는 파일을 각각의 디렉터리에 복사
gzip_test.tar.gz => gzip
bzip2_test.tar.bz2 => bz2
xz_test.tar.xz => xz
10. 각 디렉터리(gzip , bzip2, xz)에서 압축과 아카이브를 해제
정답
1) #tar cvf gzip_test.tar file1 file2 file3
2) #tar cvf bzip2_test.tar file1 file2 file3
3) #tar cvf xz_test.tar file1 file2 file3
4) #touch file4 file5 file6
#tar rvf gzip_test.tar file4
#tar rvf bzip2_test.tar file5
#tar rvf xz_test.tar file6
#tar tvf gzip_test.tar
#tar tvf bzip2_test.tar
#tar tvf xz_test.tar
5) #gzip gzip_test.tar
6) #bzip2 bzip2_test.tar
7) #xz xz_test.tar
8) #mkdir /Practice/decompress
#mv gzip_test.tar.gz bzip2_test.tar.bz2 xz_test.tar.xz /Practice/decompress
#ls /Practice/decompress
9) #cd /Practice/decompress
#mkdir gzip bzip2 xz
#cp ./gzip_test.tar.gz ./gzip
#cp ./bzip2_test.tar.bz2 ./bzip2
#cp ./xz_test.tar.xz ./xz
10) #cd /Practice/decompress/gzip
#gunzip gzip_test.tar.gz
#tar xvf gzip_test.tar
#cd /Practice/decompress/bzip2
#bunzip2 bzip2_test.tar.bz2
#tar xvf bzip2_test.tar
#cd /Practice/decompress/xz
#unxz xz_test.tar.xz
#tar xvf xz_test.tar
* 아카이브와 압축을 동시에 하는 방법
- 아래의 옵션을 아카이브 진행중에 추가한다.
-z : gzip
-j : bzip2
-J : xz
#cd /Practice/compress // compress로 이동
#tar cvfz fileA.tar.gz file{1..3} // 아카이빙 -> gz압축
#tar cvfj fileB.tar.bz2 file{1..3} // 아카이빙 -> bz2압축
#tar cvfJ fileC.tar.xz file{1..3} // 아카이빙 -> xz압축
#ls -lh // 결과 확인
#file fileA.tar.gz // 형식확인
#file fileB.tar.bz2 // 형식확인
#file fileC.tar.xz // 형식확인
* 아카이브와 압축을 동시에 해제하는 방법
- 아카이빙 해제중에 다음과 같은 옵션을 추가한다.
(원래는 압축해지 -> 아카이빙 해지)
-z : gzip
-j : bzip2
-J : xz
#mkdir ./A ./B ./C // 테스트 디렉터리 생성
#tar xvfz fileA.tar.gz -C ./A // 압축해지 -> 아카이브해지
(== tar xvf fileA.tar.gz) // 압축을 해제할때는 옵션을 사용하지 않아도
자동으로 압축 유틸리티가 선택된다.
#ls ./A // 확인
#tar xvfj fileB.tar.bz2 -C ./B // 압축해지 -> 아카이브해지
(== tar xvf fileB.tar.bz2) // 압축을 해제할때는 옵션을 사용하지 않아도
자동으로 압축 유틸리티가 선택된다.
#ls ./B // 확인
#tar xvfJ fileC.tar.xz -C ./C // 압축해지 -> 아카이브해지
(== tar xvf fileC.tar.xz) // 압축을 해제할때는 옵션을 사용하지 않아도
자동으로 압축 유틸리티가 선택된다.
#ls ./C // 확인
'LINUX(Server)' 카테고리의 다른 글
| 부팅 프로세스 (0) | 2024.04.15 |
|---|---|
| 환경 변수 (0) | 2024.04.14 |
| VI Editor (0) | 2024.04.12 |
| 다중 명령 (0) | 2024.04.11 |
| 리눅스 기초 명령어 (2) | 2024.04.10 |