리눅스2023. 4. 11. 13:53

반달가면 이글루에서 백업 - http://bahndal.egloos.com/504508

 

이제는 리눅스도 GUI가 꽤 잘 되어 있어서 파일 관리자에서 마우스로 클릭 몇번 하면 압축 파일을 만들거나 풀 수 있지만, shell script에서 압축 파일을 만져야 하는 경우가 있는 관계로 여기에 정리해 두기로.

우선 압축 파일 만들기 부터 해 보자. -c 옵션과 -f 옵션을 이용한다. myfile.txt와 myfile.dat 파일을 압축해서 my_file.tar 압축 파일을 만드는 예이다. 터미널창에서 아래와 같이 입력

# 파일 압축하기
tar -cf my_file.tar myfile.txt myfile.dat

-c: 압축 파일 만들기
-f: 파일(tar는 원래 테이프 백업용으로 만들어진 S/W다. 파일을 다룰 때는 -f 옵션이 필요)

옵션을 조합할 때 -cf임에 유의. -fc라고 하면 오류가 발생한다. 뒤에 인자로 들어간 my_file.tar가 -f 옵션과 연결되어야 하기 때문이다.

용량 절약을 위해 gzip 압축이나 bzip 압축을 추가하고 싶다면 아래와 같이 -z 또는 -j 옵션을 사용

tar -czf my_file.tar.gz myfile.txt myfile.dat

tar -cjf my_file.tar.bz2 myfile.txt myfile.dat

-z: gzip 사용(tar.gz 파일)
-j: bzip 사용(tar.bz2 파일)

특정 디렉토리에 있는 파일을 압축하려면 아래의 예시를 참고하자.

# ~/my_dir 디렉토리에 있는 txt 파일 압축
tar -czf myfile.tar.gz ~/my_dir/*.txt

# ~/my_dir 디렉토리로 간 후, txt 파일을 압축
tar -czf myfile.tar.gz -C ~/my_dir *.txt

-C [디렉토리]: 디렉토리 변경(압축 경로 지정)

위의 두가지 명령의 차이는 무엇일까? -C 옵션을 이용하면 해당 디렉토리로 먼저 간 후에 압축을 시작하므로 압축파일에 디렉토리 정보가 포함되지 않는다.

디렉토리 전체를 압축하는 것도 요령은 같다. 먄약 ./my_dir 디렉토리를 통째로 압축하려면 아래와 같이 입력.

# 디렉토리 압축하기
tar -czf my_dir.tar.gz ./my_dir

압축파일에 어떤 파일이 포함되어 있는지 보려면 -t 옵션을 사용한다.

# 압축 파일 내용 확인
tar -tzf my_dir.tar.gz

-t: 압축 파일 내용 표시

파일명 이외에 용량 등 좀 더 자세한 정보를 보고 싶다면 -v 옵션을 추가(verbose).

tar -tvzf my_dir.tar.gz

압축 파일을 풀 때는 -x 옵션을 이용하면 되겠다.

# 압축 풀기
tar -xzf my_dir.tar.gz

-x: 압축 풀기

특정한 디렉토리에 압축을 풀도록 경로를 지정하고 싶다면 -C 옵션을 사용한다. 만약 ~/my_dir_tmp 디렉토리에 풀고 싶다면 아래와 같이 하면 된다.

# 압축 풀기, 경로 지정
tar -xzf my_dir.tar.gz -C ~/my_dir_tmp

 

728x90
Posted by 반달가면