@ 압축 및 아카이빙
- 윈도우 압축(Ex : zip, alz, egg...)처럼 사용하려면 아카이빙을 실시하여 파일을 하나로 묶은 다음에 압축을 실시해야 한다.
압축을 하는 이유
- 용량을 줄이기 위해, 백업하기위해
1. gzip
- 압축 기능을 제공하며, 확장자는 '*.gz'으로 사용한다.
- 관련 명령어
gzip 압축할때 사용하는 명령어
-r 디렉토리이면 하위 디렉토리 및 파일까지 압축
-S 압축 파일을 '*.gz' 파일이 아닌 다른 파일로 생성
-d 압축 해지할때 사용
-f 기존 압축 파일이 있어도 무시하고 압축 파일 생성
-v 압축 통계/진행 출력, 1v~9v -> 번호가 높을수록 압축률이 좋다.
-k 원본 파일을 유지하여 압축
gunzip 압축 해지 및 압축 파일 내용을 확인할때 사용하는 명령어
zcat 압축 파일 내용을 확인할때 사용하는 명령어
[root@Client1 /root]# cd
[root@Client1 /root]# rm -rf test
[root@Client1 /root]# mkdir test
[root@Client1 /root]# cd test
[root@Client1 /root/test]#
[root@Client1 /root/test]# cp /etc/services file1
[root@Client1 /root/test]# cp /etc/services file2
[root@Client1 /root/test]# cp /etc/services file3
[root@Client1 /root/test]# cp /etc/services file4
[root@Client1 /root/test]#
[root@Client1 /root/test]# ls -l
합계 2512
-rw-r--r--. 1 root root 641020 2020-12-24 20:56 file1
-rw-r--r--. 1 root root 641020 2020-12-24 20:56 file2
-rw-r--r--. 1 root root 641020 2020-12-24 20:56 file3
-rw-r--r--. 1 root root 641020 2020-12-24 20:56 file4
[root@Client1 /root/test]# gzip file1
[root@Client1 /root/test]# gzip -v file2 (기본값 -6)
file2: 80.2% -- replaced with file2.gz
[root@Client1 /root/test]# gzip -9v file3
file3: 80.3% -- replaced with file3.gz
[root@Client1 /root/test]# gzip -1v file4
file4: 77.2% -- replaced with file4.gz
[root@Client1 /root/test]# ls -l
합계 524
-rw-r--r--. 1 root root 127220 2020-12-24 20:56 file1.gz
-rw-r--r--. 1 root root 127220 2020-12-24 20:56 file2.gz
-rw-r--r--. 1 root root 126611 2020-12-24 20:56 file3.gz
-rw-r--r--. 1 root root 146158 2020-12-24 20:56 file4.gz
[root@Client1 /root/test]# rm -rf file*
- 디렉토리 안에 있는 파일 압축
[root@Client1 /root/test]# mkdir dir1
[root@Client1 /root/test]# cd dir1
[root@Client1 /root/test/dir1]# cp /etc/services file1
[root@Client1 /root/test/dir1]# cp /etc/services file2
[root@Client1 /root/test/dir1]# cp /etc/services file3
[root@Client1 /root/test/dir1]# cd ..
[root@Client1 /root/test]#
[root@Client1 /root/test]# ls -l dir1
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test]# du -sh dir1
1.9M dir1
[root@Client1 /root/test]# gzip -r dir1
[root@Client1 /root/test]# ls -l dir1
합계 384
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file1.gz
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file2.gz
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file3.gz
[root@Client1 /root/test]# du -sh dir1
388K dir1
- 압축 파일 내용 확인
[root@Client1 /root/test/dir1]# gunzip -c file1.gz
[root@Client1 /root/test/dir1]# zcat -c file1.gz
- 압축 해제
[root@Client1 /root/test/dir1]# cd ..
[root@Client1 /root/test]# gzip -rd dir1
[root@Client1 /root/test]# ls -l dir1
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test]# cd dir1
[root@Client1 /root/test/dir1]# gzip file1
[root@Client1 /root/test/dir1]# gzip file2
[root@Client1 /root/test/dir1]# gzip file3
[root@Client1 /root/test/dir1]# ls -l
합계 384
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file1.gz
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file2.gz
-rw-r--r--. 1 root root 127220 2020-12-24 21:02 file3.gz
[root@Client1 /root/test/dir1]# gzip -d file1.gz
[root@Client1 /root/test/dir1]# gzip -d file2.gz
[root@Client1 /root/test/dir1]# gzip -d file3.gz
[root@Client1 /root/test/dir1]# ls -l
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
- 다수의 파일 압축 및 해지
[root@Client1 /root/test/dir1]# gunzip *.gz 또는 gunzip file*.gz
[root@Client1 /root/test/dir1]# ls -l
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
- 원본 파일을 유지하여 압축
[root@Client1 /root/test]# gzip -k file1
[root@Client1 /root/test]# ls -l
합계 2860
drwxr-xr-x. 2 root root 58 2022-05-27 10:05 dir1
-rw-r--r--. 1 root root 692252 2022-05-27 09:47 file1
-rw-r--r--. 1 root root 142525 2022-05-27 09:47 file1.gz
-rw-r--r--. 1 root root 692252 2022-05-27 09:47 file2
-rw-r--r--. 1 root root 692252 2022-05-27 09:47 file3
-rw-r--r--. 1 root root 692252 2022-05-27 09:47 file4
[root@Client1 /root/test]#
[root@Client1 /root/test]# rm -rf file1.gz
2. bzip2 - gzip보다 압축이 좋음
- 압축 기능을 제공하며, 확장자는 '*.bz2'로 사용한다.
- 디렉토리 안에 있는 내용들에 대해서 압축 기능은 제공하지 않는다.
- 관련 명령어
bzip2 압축할때 사용하는 명령어
-d 압축 해지할때 사용
-v 압축 통계/진행 출력
-k 원본 파일을 유지하여 압축
bunzip2 압축 해지 및 압축 파일 내용을 확인할때 사용하는 명령어
bzcat 압축 파일 내용을 확인할때 사용하는 명령어
[root@Client1 /root/test/dir1]# ls -l
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test/dir1]# bzip2 file1
[root@Client1 /root/test/dir1]# bzip2 file2
[root@Client1 /root/test/dir1]# bzip2 -k file3
[root@Client1 /root/test/dir1]# ls -l
합계 976
-rw-r--r--. 1 root root 115774 2020-12-24 21:02 file1.bz2
-rw-r--r--. 1 root root 115774 2020-12-24 21:02 file2.bz2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
-rw-r--r--. 1 root root 115774 2020-12-24 21:02 file3.bz2
- 압축 파일 내용 확인
[root@Client1 /root/test/dir1]# bunzip2 -c file1.bz2
[root@Client1 /root/test/dir1]# bzcat file1.bz2
- 압축 해지
[root@Client1 /root/test/dir1]# bzip2 -d file1.bz2
[root@Client1 /root/test/dir1]# bzip2 -d file2.bz2
[root@Client1 /root/test/dir1]# bunzip2 file3.bz2
bunzip2: Output file file3 already exists.
[root@Client1 /root/test/dir1]# ls -l
합계 2000
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
-rw-r--r--. 1 root root 115774 2020-12-24 21:02 file3.bz2
[root@Client1 /root/test/dir1]# rm -rf file3
[root@Client1 /root/test/dir1]# bunzip2 file3.bz2
[root@Client1 /root/test/dir1]# ls -l
합계 1884
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
3. 아카이빙 -> 용량이 안줄어든다
- 'tar' 명령어를 사용하여 다수의 파일을 하나의 묶음 파일로 생성한다.
- 대신, 압축은 실시하지 않기 때문에 gzip, bzip2를 사용해야 한다.
-c 아카이빙 실시
-x 아키이빙 해지
-f 아카이빙 파일 지정
-z 아카이빙 이후 gzip으로 압축
-j 아카이빙 이후 bzip2로 압축
-v 진행 출력
-t 아키이빙 파일 내용 확인
[root@Client1 /root/test/dir1]# tar cvf file.tar file1 file2 file3
file1
file2
file3
[root@Client1 /root/test/dir1]# ls -l
합계 3776
-rw-r--r--. 1 root root 1935360 2020-12-24 21:26 file.tar
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test/dir1]# tar tf file.tar
file1
file2
file3
[root@Client1 /root/test/dir1]# rm -rf file1 file2 file3
[root@Client1 /root/test/dir1]# ls -l
합계 1892
-rw-r--r--. 1 root root 1935360 2020-12-24 21:26 file.tar
[root@Client1 /root/test/dir1]# tar xvf file.tar
file1
file2
file3
[root@Client1 /root/test/dir1]# ls -l
합계 3776
-rw-r--r--. 1 root root 1935360 2020-12-24 21:26 file.tar
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test/dir1]# rm -rf file.tar
- 아카이빙 및 gzip 압축 및 해지
[root@Client1 /root/test/dir1]# tar czf file.tar.gz file1 file2 file3
[root@Client1 /root/test/dir1]# ls -l
합계 2260
-rw-r--r--. 1 root root 381983 2020-12-24 21:30 file.tar.gz
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test/dir1]# tar tf file.tar.gz
file1
file2
file3
[root@Client1 /root/test/dir1]# rm -rf file1 file2 file3
[root@Client1 /root/test/dir1]# tar xzf file.tar.gz
[root@Client1 /root/test/dir1]# ls -l
합계 2260
-rw-r--r--. 1 root root 381983 2020-12-24 21:30 file.tar.gz
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test/dir1]# rm -rf file.tar.gz
- 아카이빙 및 bzip2 압축 및 해지
[root@Client1 /root/test/dir1]# tar cjf file.tar.bz2 file1 file2 file3
[root@Client1 /root/test/dir1]# ls -l
합계 2140
-rw-r--r--. 1 root root 260725 2020-12-24 21:34 file.tar.bz2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test/dir1]# rm -rf file1 file2 file3
[root@Client1 /root/test/dir1]# tar xjf file.tar.bz2
[root@Client1 /root/test/dir1]# ls -l
합계 2140
-rw-r--r--. 1 root root 260725 2020-12-24 21:34 file.tar.bz2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test/dir1]# rm -rf file.tar.bz2
4. zip
- 윈도우에서 사용하는 zip 압축 기능
[root@Client1 /root/test/dir1]# zip file.zip file1 file2 file3
adding: file1 (deflated 80%)
adding: file2 (deflated 80%)
adding: file3 (deflated 80%)
[root@Client1 /root/test/dir1]# ls -l
합계 2260
-rw-r--r--. 1 root root 382024 2020-12-24 21:37 file.zip
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test/dir1]# rm -rf file1 file2 file3
[
[root@Client1 /root/test/dir1]# unzip file.zip
Archive: file.zip
inflating: file1
inflating: file2
inflating: file3
[root@Client1 /root/test/dir1]# ls -l
합계 2260
-rw-r--r--. 1 root root 382024 2020-12-24 21:37 file.zip
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file1
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file2
-rw-r--r--. 1 root root 641020 2020-12-24 21:02 file3
[root@Client1 /root/test/dir1]# cd ..
[root@Client1 /root/test]# cd ..
[root@Client1 /root]# rm -rf test
Ex) 아카이빙&압축 예제
- /root/test 디렉토리에 /etc 디렉토리에 있는 파일 중에 conf로 끝나는 파일을 아카이빙+gzip 압축을 실시하여라.
- 이때, 압축 파일명은 'conf.tar.gz'로 진행한다.
- /root/test 디렉토리에 /var/log 안에 있는 모든 내용을 'log.tar.bz2'로 아카이빙+압축을 실시하여라.
참조
1. 디렉토리나 파일을 만들때 빈칸을 넣지말자 -> \넣어야 한다.
2. 명령어 옵션을 사용할 때 인자값을 필요로하는 옵션은 맨 뒤에 쓰자
'리눅스' 카테고리의 다른 글
권한 (0) | 2022.04.07 |
---|---|
vi, vim 편집기 (0) | 2022.04.03 |
리눅스 계정 (0) | 2022.04.03 |
메타캐릭터 + 리다이렉션 (0) | 2022.04.03 |
기본 명령어 2 (0) | 2022.03.23 |