반응형
리눅스 tar 아카이브에 대해 알아보고 tar 개념, 실습
[ Archive ]
아카이브란?
여러 파일과 디렉터리를 담고 있는 하나의 파일.
-이동, 공유, 저장이 더욱 간편해짐. 모든 파일이 아카이브 파일에 들어간 후에 관리 및 추적이 더욱 쉬워진다.
아카이빙의 종류
tar
|
쉽게 공유하거나 백업하려고 디렉터리와 그 안에 있는 파일들의 사본을 만들 때 |
dd
|
파티션이나 하드디스크 등을 통째로 복사해야 할 때
|
rsync
|
주기적으로 시스템을 백업하려고 할 때
|
이 중에서 tar에 대해 알아보겠습니다.
[ tar로 파일과 파일 시스템 아카이빙하기 ]
- 사용법 : tar [ option .. ] [file ]
# Tar 사용 시 고려해야 할 사항
-
아카이브에 포함할 파일을 알아둔다.
-
아카이브가 사용할 스토리지 드라이브 안의 위치를 확인한다.
-
파일을 아카이브에 추가하고 아카이브 파일을 스토리지에 저장한다.
-
Options
-f
|
대상 아카이브 지정 (기본 옵션)
|
-c
|
tar 아카이브 생성 (파일 묶을 때 사용)
|
-x
|
tar 아카이브에서 파일을 추출 (파일 풀 때 사용)
|
-v
|
처리 과정을 자세하게 나열
|
-t
|
tar 아카이브에 포함된 내용 확인
|
-C
|
대상 디렉터리 경로 지정
|
-A
|
지정된 파일을 tar 아카이브에 추가
|
-r
|
tar 아카이브의 마지막에 파일들 추가
|
-u
|
tar 아카이브의 마지막에 파일들 추가
|
-k
|
tar 아카이브 추출 시, 기존 파일 유지
|
-z
|
gzip 압축 옵션
|
-j
|
bzip2 압축 옵션
|
[ 간단한 실습 ]
1. tar 아카이브 파일 생성
ubuntu@ubuntu:~$ touch file{1..3}
ubuntu@ubuntu:~$ ls
file1 file2 file3
# 현재, 하위 디렉터리 안에 있는 모든 파일과 디렉터리들을 복사해 archives.tar 이름의 아카이브 파일 생성
ubuntu@ubuntu:~$ tar cvf archives.tar *
file1
file2
file3
ubuntu@ubuntu:~$ ls
archives.tar file1 file2 file3
2. 아카이브 압축 파일 생성 / 아카이브 파일 확인 / split을 이용하여 아카이브 파일 나누기
# 절대경로를 사용해서 tar 아카이브 압축 파일을 생성해보겠다.
ubuntu@ubuntu:~$ pwd
/home/ubuntu
# 기존 cvf에 z옵션을 추가하면 gzip으로 압축이 된다. /home/ubuntu/에 있는 ~.mp3 로 끝나는 파일 대상
ubuntu@ubuntu:~$ tar cvfz musicArc.tar.gz /home/ubuntu/*.mp3
tar: Removing leading `/' from member names
/home/ubuntu/music1.mp3
/home/ubuntu/music2.mp3
/home/ubuntu/music3.mp3
/home/ubuntu/music4.mp3
/home/ubuntu/music5.mp3
ubuntu@ubuntu:~$ ls
archives.tar file2 music1.mp3 music3.mp3 music5.mp3
file1 file3 music2.mp3 music4.mp3 musicArc.tar.gz
# f는 고정옵션, t는 아카이브에 포함된 내용 확인, v는 처리과정을 나열하는 옵션
# musicArc.tar.gz에 어떤 파일들이 들어있는지 확인
ubuntu@ubuntu:~$ tar tfv musicArc.tar.gz
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music1.mp3
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music2.mp3
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music3.mp3
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music4.mp3
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music5.mp3
#
# split 명령에서 -b 옵션은 각 크기의 파일들을 일정 크기로 나누어준다. 큰 따옴표 안에는 생성할
# 파일들의 이름을 넣어준다. ls로 확인해보니 aa로 생성되었으며, ab ac 순으로 이름을 부여한다.
ubuntu@ubuntu:~$ split -b 100m archives.tar "archives.tar.part"
ubuntu@ubuntu:~$ ls
archives.tar file1 file3 music2.mp3 music4.mp3 musicArc.tar.gz
archives.tar.partaa file2 music1.mp3 music3.mp3 music5.mp3
3. 아카이브 파일을 대상 디렉터리 경로를 지정하여 추출하기
# archives.tar 아카이브 파일을 test디렉터리에 추출하겠다.
ubuntu@ubuntu:~$ ls
archives.tar file1 file3 music2.mp3 music4.mp3 musicArc.tar.gz
archives.tar.partaa file2 music1.mp3 music3.mp3 music5.mp3 test
# 만들땐 cvf, 풀 땐 xvf를 사용해주었다. 해당 디렉터리에 풀 시 -C 옵션을 사용하지 않아도 된다.
ubuntu@ubuntu:~$ tar -xvf archives.tar -C ./test
file1
file2
file3
4. find 명령을 이용하여 " .mp3 " 로 끝나는 파일의 이름을 찾은 후 tar명령을 실행한다.
# iname : i는 대문자, 소문자 구문 없이 모두 검색
# rvf : r은 이어쓰기 역할이다. tar아카이브의 마지막에 해당 파일들을 추가함
# { } : 앞에 find 명령을 통해 나온 출력값을 지칭함.
# \; : 명령이 끝났음을 의미
ubuntu@ubuntu:~$ ls
archives.tar file1 file3 music2.mp3 music4.mp3 musicArc.tar.gz
archives.tar.partaa file2 music1.mp3 music3.mp3 music5.mp3 test
ubuntu@ubuntu:~$ pwd
/home/ubuntu
ubuntu@ubuntu:~$ find /home/ubuntu/ -iname "*.mp3" -exec tar -rvf archives.tar {} \;
tar: Removing leading `/' from member names
/home/ubuntu/music4.mp3
tar: Removing leading `/' from member names
/home/ubuntu/music5.mp3
tar: Removing leading `/' from member names
/home/ubuntu/music3.mp3
tar: Removing leading `/' from member names
/home/ubuntu/music2.mp3
tar: Removing leading `/' from member names
/home/ubuntu/music1.mp3
ubuntu@ubuntu:~$ tar -tvf archives.tar
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:22 file1
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:22 file2
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:22 file3
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music4.mp3
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music5.mp3
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music3.mp3
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music2.mp3
-rw-rw-r-- ubuntu/ubuntu 0 2020-04-14 22:32 home/ubuntu/music1.mp3
반응형
'OS,Network,Container' 카테고리의 다른 글
CentOS7 RAID 1+0 생성 (2) | 2020.04.17 |
---|---|
CentOS7 RAID 5 구성, parted (9) | 2020.04.16 |
CentOS7 RAID1 구성, RAID 개념 (0) | 2020.04.15 |
리눅스 방화벽이란? Firewall (1) | 2020.04.15 |
CentOS7 설치 후 네트워크 설정 (1) | 2020.04.14 |