리눅스나 SSH환경에서 파일을 압축하고 해제 하는 기능은 상당히 자주 사용되는 기능이다.
서버를 이전할때는 당연히 전체 압축 후 해제를 해 줄 것이고, 단순히 파일들을 이동 시킬때도 윈도우 환경과 리눅스 환경의 차이 때문에 tar계열의 압축을 시켜서 이동시키는게 안전하다.
예를 들어 퍼미션은 윈도우에서 없는(다른) 개념이기 때문에 리눅스 서버에서 있던 퍼미션 정보는 윈도우 환경으로 이동되는 순간 없어져 버린다. 퍼미션이 다른 여러 파일들을 이동 시킬때 퍼미션이 전부 초기화 되어 버리면 다시 퍼미션 지정을 해 줘야 하기 때문에 번거로울 것이다.
그리고 윈도우에선 blog.php와 Blog.php와 같이 대소문자가 다른 같은 이름의 파일을 그냥 "같은 파일"로 취급해 버린다. 만약 이런식의 이름을 가진 파일들이 리눅스 서버에 있다면 윈도우로 옮길때는 파일명을 변경 해 줘야 할것이다.
이런 번거로움들을 피하기 위해 tar명령어는 숙달하고 있어야 한다.
일단 옵션을 보자
-c : tar 파일 만들 때 사용
-x : 묶여진 tar파일 해제할 때 사용
-v : 파일들을 묶거나 해제할 때 파일들의 이름과 크기 표시
-f : 사용할 tar 파일을 지정
-t : 묶여진 tar 파일의 내용물을 출력
복잡해 보이지만 어렵게 생각 할 필요는 없다.
형식은 $ tar 옵션 압축할 파일명 압축할 파일(폴더)
ex) $ tar -cvf bbs.tar bbs/
ex) $ tar -cvfz backup *
ex) $ tar -cvfj backup *
두번째 예는 현 위치에서 모든 파일 및 모든 하위 폴더, 파일을 압축 하라는 명령어이다. 여기서
z 옵션은 gzip을 사용한 압축을 할때 사용한다.
j 옵션은 bzip2를 사용한 압축을 할때 사용한다.
편의적으로 말해 tar압축 이라고 하지만, 엄밀히 tar은 압축이 아니라 단순한 파일 묶음이다. gzip이나 bzip2를 써서 압축을 해야 용량이 작아진 '압축파일'이 되는 것이다.
그리고 두번째 예의 경우는
일반적으로 tar 묶을 때
tar -cvf [파일명.tar] [경로]
일반적으로 tar 풀 때
tar -xvf [파일명.tar]
bzip2압축이라면 j 추가, gzip이라면 z 추가, xz라면 J추가
# tar ( ㉠ )xvf httpd-2.2.32.tar.bz2
# tar ( ㉡ )xvf mysql-boost-5.7.18.tar.gz
# tar ( ㉢ )xvf php-5.6.31.tar.xz
여기서 v 옵션은 위에서 설명하였듯이 목록을 출력하는 옵션이므로 압축이나 압축해제 대상 파일이 많은 경우엔 뺴주는 것이 속도가 빠르다.
참고로, 리눅스에서 기본적으로 지원되는 압축 포맷 중 압축률이 높은 순서는
xz > bzip2 > gzip > compress
압축을 해제 하지 않은 채 압축파일 내용만 보고 싶다면
tar -tvf 파일명.tar
'IT 실무 > 서버 관리' 카테고리의 다른 글
[리눅스] nice, renice 명령어 (0) | 2018.03.08 |
---|---|
[리눅스] DNS 네임서버 설정 (0) | 2018.03.07 |
[리눅스마스터] squid 프록시 서버 (0) | 2018.03.06 |
NFS(Network File System)으로 폴더 공유하기 (0) | 2018.03.03 |
rsyslog.conf 예제파일, 설정법 설명 (0) | 2018.03.03 |
댓글