Linux command - tar 명령어
레이아웃 업무를 하면서 사용하는 중요한 명령어 중의 하나가 tar 명령어이다.
부서간, 회사간, 혹은 엔지니어들 사이에 DB를 주고 받을 때 대부분 tar file 형태로 주고 받기 때문에 기본 옵션은 필수로 알고 있어야 한다.
필자의 경우는 DB 주고 받을 때 외에도 서버가 갑자기 먹통이 된다거나 누군가 실수로 DB를 삭제, 또는 overwrite 하는 등의 이유로 내가 작업한 DB를 날려먹을 때를 대비해서 중간 중간 DB를 백업해 놓는 용도로 많이 사용하고 있는 명령어이다.
(이런 저런 이유로 DB를 날려먹는 일이 가끔 발생하는데, 촌각을 다투는 바쁜 시점에 발생하는 경우가 많아서 이에 대한 대비가 늘 필요하다. Design-sync 와 같은 버전 콘트롤 tool이 적용되어 있지 않은 과제일 경우에는 tape-out 시즌 기준 하루 두 번 정도 레이아웃 DB 전체를 tar 파일로 저장해 놓는 편. 이렇게 하면 혹시 날려먹더라도 한나절 작업한 분량만 날려먹는다.)
어떤 이들은 tar 명령어를 압축하는 명령어로 알고 있기도 하는데, 이것은 tar 명령어의 옵션 중에 압축하는 옵션이 있어서 그런 것이지 실제 manual의 설명은 이렇게 되어 있다.
"GNU's 'tar' saves many files together into a single tape or disk archive, and can restore indivisual files from archives"
즉, 여러 개의 파일이나 디렉토리를 하나의 파일로 묶어서 저장하고, 이를 다시 원래대로 풀어놓을 수 있는 명령어이다.
tar 명령어의 옵션은 다른 리눅스 명령어와 마찬가지로 아주 많지만, 필자는 아래와 같이 다섯가지의 옵션 조합만으로 사용하고 있고, 이정도로도 충분히 업무에 불편함 없이 활용 가능하다.
--- 일반적인 사용 시 ---
1) tar -cvf AAA.tar FILE_LISTS => tar 파일을 만들 때 (create)
2) tar -tvf AAA.tar => tar 파일의 내용물을 (FILE_LISTS) 확인 할 때
3) tar -xvf AAA.tar => tar 파일을 풀 때 (extract)
--- 압축하여 사용할 때 (1,2,3 옵션에 z 옵션을 추가하여 사용) ---
4) tar -zcvf AAA.tarz FILE_LISTS => tar 파일을 만들 때 (create)
5) tar -zxvf AAA.tarz => tar 파일을 풀 때 (extract)
--- 옵션 설명 ---
-c : tar 파일을 생성하는 옵션 (create)
-v : 명령어 실행 시 FILE_LISTS를 화면에 프린트해 주는 옵션으로 필수는 아니지만 실행이 제대로 되는지 확인용으로 사용
-f : 아카이브 파일명(tar 파일명)을 지정할 때 사용. 이 옵션을 안쓰면 디폴트 파일명으로 만들어짐
-t : 아카이브 파일명(tar 파일명) 내용물(FILE_LISTS) list를 화면에 출력
-z : gzip으로 압축
위의 4)번과 같이 tar 파일을 만들면서 압축하는 것은 1번을 실행 후에 AAA.tar 파일을 gzip으로 압축하는 것과 동일하다.
그래서 AAA.tarz 파일명을 AAA.tar.z로 바꾼 후
gzip -d AAA.tar.z | tar xvf AAA.tar
이렇게 풀어도 위의 5) 번과 동일하다.
(참고로 tar 옵션은 - 기호를 붙여도, 안붙여도 둘 다 된다.)
--- 주의사항 ---
위의 4)번 옵션으로 tar 파일을 생성할 때는 압축된 파일이라는 점을 표시하기 위하여 파일의 확장자를 tarz 등으로 알아 볼 수 있게 만들어 주는 것이 좋다.
그리고 tar 파일을 x 옵션을 써서 풀 때 특히 주의할 점은, 별도의 옵션 없이 바로 풀면 tar 파일 내부에 있는 파일 이름과 동일한 이름의 파일이 디렉토리에 이미 존재한다면 바로 overwrite해 버린다.
잘못하다가는 DB를 복원하려다가 오히려 DB를 날려버리는 수가 있으니 tar xvf 옵션을 사용할 때는 습관적으로 안전하게 TEMP 디렉토리를 만들어 그곳에서 tar 파일을 extract 하거나, k 옵션을 사용하여 기존 파일을 보호하자.
이와 관련된 자세한 옵션은 tar --help를 실행하여 살펴 볼 수 있다.