아카이브(archive) 는 원래 보관소라는 뜻을 가지고 있지만, 리눅스에서는 '파일을 묶어서 하나로 만든 것' 이라는 뜻을 가지고 있습니다. 얼핏 이야기를 들어봤을 때는 윈도우의 압축과 같은 의미가 아닌가 싶지만, 엄연히 다릅니다. 파일을 한대 묶고, 실제로 용량이 줄어들긴 하지만 유의미한 차이는 없는 수준이기 때문입니다. 압축은 아카이브 이후에 다뤄볼 생각입니다.
파일 아카이브
tar(tape archive) 명령은 원래 여러 파일이나 디렉터리를 붂어서 마그네틱테이프와 같은 이동식 저장 장치에 보관하기 위해 사용하는 명령이었습니다. 하지만 지금은 다른 시스템과 파일을 주고받거나, 백업하기 위해 여러 파일이나 디렉터리를 하나의 아카이브 파일로 생성하거나, 기존 아카이브에서 파일을 추출하는 데 사용합니다. tar 명령은 아래 테이블로 정리해봤습니다.
tar |
- 기능 : 파일과 디렉터리를 묶어 하나의 아카이브 파일을 생성한다. - 형식 : tar 기능 [옵션] [아카이브 파일] 파일명 - 기능 c : 새로운 tar 파일을 생성한다. t : tar 파일의 내용을 출력한다. x : tar 파일에서 원본 파일을 추출한다. r : 새로운 파일을 추가한다. u : 수정된 파일을 업데이트한다. - 옵션 f : 아카이브 파일이나 테이프 장치를 지정한다. 파일명을 '-' 로 지정하면 tar 파일 대신 표준 입력에서 읽어들인다. v : 처리하고 있는 파일의 정보를 출력한다. h : 심벌릭 링크의 원본 파일을 포함한다. p : 파일 복구 시 원래의 접근 권한을 유지한다. j : bzip2로 압축하거나 해제한다. z : gzip으로 압축하거나 해제한다. - 사용 예 : tar cvf unix.tar Unix tar xvf unix.tar |
사용 예시처럼 보통 옵션을 3개 붙여서 많이 사용하는데, 주로 사용하는 옵션은 cvf, tvf, xvf, rvf 입니다. 하나씩 알아보도록 하겠습니다.
아카이브 생성하기: cvf 옵션
tar 명령을 이용하여 여러 파일이나 디렉터리를 묶어서 아카이브 파일을 생성할 수 있습니다.
저는 해당 루트에서 ch2 디렉터리를 tar로 묶어보려 합니다. 옵션은 cvf로 할 건데, 옵션의 뜻은 다음과 같습니다.
c 옵션은 아카이브를 생성하기 위해 필수로 들어가야 하는 옵션이기 때문에 들어갔습니다. v 옵션은 처리중인 파일의 이름을 (ch2 안에 있는 파일과 디렉터리) 화면에 출력하는 기능을 하는데, 지정하지 않아도 ch2를 tar로 묶는데에 무리는 없지만 처리되는 파일이 어떤 건지 눈으로 확인하는 게 좋습니다. f 옵션은 생성되는 아카이브의 이름을 지정하는데, f옵션 바로 뒤에 오는 단어를 아카이브명으로 간주합니다. 때문에 [아카이브명] [묶을 파일명] 순서로 작성하면 됩니다.
tar cvf 옵션을 작성하고, tar의 이름은 ch2.tar 로 했습니다. 그리고 ch2를 묶을 파일명으로 받아 묶었습니다.
ls로 경로내 파일을 확인해 봤습니다. 기존 ch 디렉터리 목록에서 ch2.tar가 새로 생긴 것을 볼 수 있었습니다.
원래대로라면 ch2.tar가 만들어졌기 때문에 ch2를 지우는 것이 많습니다. 같은 파일이 용량을 두배로 차지하기 때문입니다. 하지만 지금은 예시를 드는 것이기 때문에 그냥 내비두겠습니다.
아카이브 내용 확인하기 : tvf 옵션
이제 묶어놓은 아카이브 내용을 확인해볼 차례입니다. 옵션은 tvf입니다. cvf 옵션을 이해했다면 tvf는 딱히 설명이 필요 없습니다. ch2.tar 파일의 상세정보를 확인해 보겠습니다.
이와 비슷한 기능을 본적이 있을 겁니다. 바로 디렉터리 내 상세정보를 출력하는 ls -l 입니다. 새로 설명할 게 없기 때문에 분류가 어떤 의미를 지니고 있는지만 작성해 보겠습니다.
- : 파일의 종류 (b, c, d, l, s, p 등)
rw-r--r-- : 접근 권한
user1/user1 : 파일 소유자와 파일의 소속 그룹
숫자 : 파일 크기
날짜와 시간 : 파일을 마지막으로 수정한 일시
이름 : 파일명
아카이브 풀기 : xvf 옵션
아카이브를 풀때는 xvf 기능을 사용합니다. tar로 묶어놨던 ch2 파일을 풀어보려고 하는데, ch9 디렉터리에 이동시킨 후 풀어볼겁니다.
mv 명령으로 ch2.tar를 ch9 디렉터리에 이동시킨 후, tar xvf로 아카이브를 풀었습니다. 해당되는 목록이 출력되고 ch9 디렉터리에 파일이 생성됐습니다. 보통 아카이브 파일은 tvf 옵션으로 안에 파일이 뭐가 있는지 확인하고, 적당한 위치로 이동시킨 뒤 xvf 하는 것이 중요합니다.
아카이브 파일 추가하기 : rvf 옵션
이미 생성된 아카이브를 만들 때 깜빡하고 파일을 누락시켰다면 rvf (replace) 옵션을 사용하면 됩니다. 다만 추가하려는 파일은 무조건 아카이브 맨 마지막에 들어가기 때문에 이점에는 유의해야 합니다.
/etc/hosts 디렉터리를 복사해온 뒤 ch2.tar에 rvf 해봤습니다. 직후 hosts 디렉터리가 잘 들어갔는지는 tvf 명령을 통해 확인해볼 수 있었습니다.
아카이브 생성하고 압축하기
아카이브는 윈도우의 압축같은 기능이 아니라고 했을 겁니다. 실제로 용량이 줄어들기는 하지만 1기가에서 999메가가 된다고 유의미한 차이가 있다 할 수는 없으니까요. 이번에는 아카이브로 파일을 묶음과 동시에 압축을 해보려고 합니다.
보통은 아카이브 (tar) 파일을 만든 뒤 그 파일을 gzip 명령을 통해 압축을 했었습니다. 다만 결국 묶어서 압축하는 행위를 두번 하게 되는데에서 번거로움이 있기 때문에 한번에 수행하는 겁니다.
기존 cvf에서 z가 추가된 옵션 명령입니다. 파일명은 기존 tar 파일명과 헷갈리지 않기 위해 tar.gz로 파일을 저장했습니다.
해당 아카이브 압축파일은 tvf 또는 xvf로 내용을 확인하고 출력하는 것도 가능하다는 점만 기억하면 됩니다.
'Ubuntu Linux' 카테고리의 다른 글
파일 압축하기, 풀기 (0) | 2022.05.31 |
---|---|
APM을 이용한 웹서버 구축 (0) | 2022.05.30 |
우분투 패키지 설치 (0) | 2022.05.26 |
리눅스 시스템의 종료 (1) | 2022.05.25 |
리눅스 시스템의 부팅 (3) (0) | 2022.05.23 |