뭐...리눅스를 사용하시는 분들에게는 가장 기본적인 일이지만 초보에게는 살짝 햇갈리면서 의외로 많이 쓰이는 것...
압축하고 풀기입니다.
일단 우분투를 포함한 대부분의 리눅스의 압축과 윈도우즈에서의 압축은 조금 다르달까요...
리눅스에선 묶어주는 역할과 압축해주는 역할이 나누어져있다고 보면 됩니다. (어느쪽이 더 효율적이냐는 넘겨놓고~)
보통 가장 많이 보는 형식은 tar.gz입니다.
이것은 tar형식과 gz형식의 혼합입니다. tar형식은 파일들을 묶어주고 gz은 파일을 압축하는 역할을 하게 됩니다.
----<압축풀기>-----------------------------------------------------------------------------------------
1. tar.gz 압축풀기
$gunzip filename.tar.gz // tar.gz에서 gz을 풀어냅니다.
$tar xvf filename.tar // tar를 풀어냅니다. ( x: 압축풀기 , v: 압축푸는 상태를 본다, f: 파일이름 )
압축푸는 상황을 보고 싶지 않으시다면 v옵션을 주지 않으셔도 됩니다만 보통은 적습니다.
2. tar.gz 한번에 풀기
----<압축하기>-----------------------------------------------------------------------------------------
3. tar.gz 압축하기
$tar cvf filename.tar file1... //file1의 폴더나 파일을 filename.tar로 묶는다 (압축아님)
4. tar.gz 한번에 압축하기
$tar cvzf filename.tar.gz file1... //file1의 폴더나 파일을 filename.tar.gz로 묶고 압축한다.
------------------------------------------------자세한 설명 ----------------------------------------------------
tar 는 압축 명령어가 아닌 여러개의 파일을 하나로 묶는 명령어입니다.
즉, 여러개의 파일을 하나로 묶어주는 일종의 유틸리티 라고 할 수 있습니다. 하지만 거의 대부분 tar 는 gzip 이나 bzip2 등과 같은 압축 유틸리티와 함께 사용됩니다.
tar 에 여러가지 옵션중에 z 와 j 가 있는데 z 옵션을 사용하면 gzip 을 동시에 사용할 수 있고, j 옵션을 사용하면 bzip2 을 동시에 사용할 수 있습니다. 그러면 tar 사용시에 gzip 을 사용하는 다양한 방법들에 대해서 알아보도록 하겠습니다.
처음으로 tar 에서 사용하는 tar 의 작동명령어의 종류를 보도록 하겠습니다.
즉, tar 실행시에 tar 가 어떠한 일을 할 것인가를 결정하는 것이라 할 수 있겠습니다.
여기에서 표시되는 [-] 의 의미는 옵션문자 앞에 붙는 "-" 를 생략할 수 있음을 의미합니다.
tar 의 작동명령어 ( Operation )
[-]A : 압축파일에 tar 파일을 추가해서 넣을 때 ( --catenate --concatenate )
[-]c : tar 파일을 생성할 때 ( 여러개의 파일을 하나의 파일로 묶을 때 ) 즉, 압축파일 생성.
[-]d : 압축 파일과의 비교 ( tar 파일과 해당 파일시스템간의 차이점을 확인하고자 할 때 사용 )
[-]r : 압축파일의 끝부분에 파일을 추가 ( tar 파일에 다른 파일들을 추가하고자 할 경우에 사용 )
[-]t : 압축파일의 압축된 파일 리스트 확인 ( tar 파일의 내용을 확인하고자 할 때 반드시 사용 )
[-]u : 이미 압축되어 있는 파일보다 더 새로운 파일일 경우에 추가
[-]x : 압축파일을 압축해제 할 때 사용
--delete : 압축 파일에서 파일을 삭제할 때 사용
이번에는 tar 에서 사용하는 tar 의 Option 을 알아보도록 하겠습니다.
Option 이란 리눅스의 일반 명령어에서 흔히 사용되는 일반적인 명령어옵션을 의미하지만 여기서는 조금 특이한 용도로 사용됩니다.
이번에 설명하는 옵션은 매우 흔하게 사용되고 있으며 반드시 각각의 의미를 알아두어야 합니다.
tar 에서 사용하는 옵션명령어 Option
-C : 작업대상 디렉토리를 지정. ( 원하는 위치에 압축파일을 해제할 때 )
-f : tar 파일을 사용할 때에는 반드시 사용 ( --file F )
-j : bzip2 와 고나련하여 압축 또는 압축해제를 할 때 사용
-p : tar 파일을 생성할(풀) 때 원본파일의 속성들을 그대로 유지 ( 원본파일이 가지고 있는 퍼미션, 소유자의 정보를 그대로 유지함 )
-v : 묶을 때나 풀 때 그 과정을 자세하게 보려고 할 때 사용
-z : gzip 과 관련하여 압축이나 해제를 한꺼번에 하려고 할 때 사용.
tar 는 일반적으로 3가지 사용 유형이 있습니다.
이번에는 이 3가지의 유형에 대해 알아보도록 하겠습니다.
유형 1. tar 독립적으로 혼자 사용될 때
이 경우는 tar 가 압축과 압축해제와는 상관없이 여러개의 파일들을 하나의 파일로 묶거나 그 반대의 경우로 하나로 묶어진 파일을 다시 원상태의 여러개의 파일로 풀어주는 방법입니다.
묶을 때
]# tar cvf [파일명.tar] [대상파일]
]# tar cvf [파일명.tar] [대상디렉토리]
묶음 리스트 볼 때
]# tar tvf [파일명.tar]
묶음을 풀 때
]# tar xvf [파일명.tar]
tar 의 첫번째 사용 예로서 압축하는 것이 아닌 여러개의 파일을 단순히 하나의 파일로 묶는 것입니다.
아래와 같이 test 라는 디렉토리에는 파일이 2 개가 존재하고 있습니다. 이를 대상으로 tar 의 기본 사용 예를 보도록 하겠습니다.
먼저 위의 test 라는 디렉토리 안에 있는 파일들을 하나의 파일로 묶어보도록 하겠습니다.
파일을 묶을 때에는 cvf 라는 옵션을 사용합니다.
위의 tar 예에서
tar 는 tar 의 명령어이며,
cvf 는 파일을 하나로 묶기위한 tar의 옵션이며,
test.tar 는 하나의 파일로 묶여진 후에 생성될 파일명이며 ( 결과파일 )
test 는 tar 의 대상파일을 뜻합니다. ( 묶여질 파일 및 디렉토리 )
아래 그림은 위의 작업이 성공적으로 끝나서 나오는 결과물을 보여주고 있습니다.
보시면 test.tar 라는 파일이 보이는 것을 확인할 수 있습니다.
그렇다면 이렇게 묶여진 파일의 파일리스트를 확인해보도록 하겠습니다.
아래와 같이 tvf 옵션을 사용하여 tar 파일을 열어보시면 됩니다.
유형 2. tar 가 gzip 과 함께 사용될 때
이 경우는 tar 가 gzip 유틸리티를 불러서 파일을 묶고 압축을 하는 동시에 묶음 작업과 압축 작업을 동시에 수행하는 방법입니다.
그 반대의 경우로 tar 가 gzip 으로 압축 되어있는 파일을 풀어주는 방법입니다.
압축할 때
]# tar cvfz [파일명.tar.gz] [대상파일]
]# tar cvfz [파일명.tar.gz] [대상디렉토리]
압축파일 볼 때
]# tar tvfz [파일명.tar.gz]
압축 풀 때
]# tar xvfz [파일명.tar.gz]
이번 유형이 tar 가 실무에서 가장 일반적인 용도로 사용되는 것입니다.
이 작업을 하려면 z 라는 옵션을 추가해서 cvfz 라는 옵션을 사용해야 간단하게 묶음과 압축을 동시에 할 수 있습니다.
즉, tar 에서 z 옵션의 의미는 gzip 유틸리티를 이용하여 압축을 하거나 압축을 해제하라는 의미입니다.
따라서 tar 사용시에 z 라는 옵션이 들어가 있다면 무조건 gzip 을 불러서 사용하는 것이라는 것을 아시면 됩니다.
아래 그림과 같이 test1 디렉토리 내에 2 개의 파일을 묶음과 압축을 동시에 해보도록 하겠습니다.
cvfz 라는 옵션을 사용하고 새로 생성되는 파일명을 test1.tar.gz 으로 하였습니다.
결과로 test.tar.gz 파일이 생성 된 것을 확인할 수 있습니다.
그럼 생성된 파일의 리스트를 확인하고자 한다면 아래와 같이
tvfz 옵션을 사용하여 볼 수 있습니다.
유형 3. tar 가 bzip2 와 함께 사용될 때
이 경우는 tar 가 bzip2 와 함께 사용되는 경우입니다.
즉, tar 로 파일을 묶은 후에 bzip2 로 아북을 동시에 수행하는 방법입니다. 반대로 bzip 와 tar 로 압축된 파일을 다시 압축해제할 때에 사용하는 방법입니다.
압축할 때
]# tar cvfj [파일명.tar.bz2] [대상파일]
]# tar cvfj [파일명.tar.bz2] [대상디렉토리]
압축파일 볼 때
]# tar tvfj [파일명.tar.bz2]
압축 풀 때
]# tar xvfj [파일명.tar.bz2]
이번에는 tar 작업시에 bzip2 를 함께 사용하여 파일들을 묶은 후에 바로 bzip2 로 압축하는 예를 보도록 하겠습니다.
이번 예 에서는 다음과 같이 ttt 라는 디렉토리를 대상으로 작업할 것입니다.
ttt 라는 디렉토리에는 다음과 같이 5개의 파일이 들어있는 것을 확인할 수 있습니다.
다음은 tar 를 이용하여 cvfj 라는 옵션으로 ttt 디렉토리 전체를 압축한 것입니다.
이번 압축실행에서 cvfj 라는 작업옵션을 주었는데 c 는 압축할 때 사용하는 옵션이고, v 는 실행 내용을 자세히 보여주는 옵션이고 f 는 파일 단위작업임을 의미하는 옵션이고, j 는 bzip2 를 불러와서 압축을 수행하라는 의미입니다. 이 결과로 아래와 같이 ttt.tar.bz2 라는 파일이 생성된 것을 확인할 수 있습니다.
이번에는 tar 수행에서 tvfj 라는 작업옵션을 주어서 ttt.tar.bz2 로 압축된 파일의 리스트를 확인한 것입니다.
결과 ttt 원본 디렉토리의 내용과 동일하게 5 개의 파일이 그대로 압축된 것을 확인할 수 있습니다.
특정 폴더 및 파일 포함 안시키고 압축
--exclude=폴더
tar cvfzp home.tar.gz --exclude=/home/no_backup /home