14.3. 파일 압축과 보존

여러 개의 파일을 하나로 묶어 저장하시면, 파일을 동시에 백업할 수 있으며, 파일을 다른 디렉토리나 심지어 다른 컴퓨터로도 쉽게 전송하실 수 있습니다. 또한 여러 파일을 파일 하나로 압축함으로서 디스크 공간을 절약하고 인터넷을 통해 더욱 빠르게 다운로드하실 수 있습니다.

아카이브 파일 (archive file)과 압축 파일 (compressed file)의 차이점을 이해하는 것은 매우 중요합니다. 아카이브 파일은 여러개의 파일과 디렉토리들을 하나의 파일에 저장한 것입니다. 아카이브 파일은 압축되지 않았습니다 — 따라서 아카이브 파일은 저장된 개별 파일과 디렉토리의 총량과 동일한 디스크 공간을 사용합니다. 압축 파일은 여러개의 파일과 디렉토리들을 하나의 파일로 저장하면서 또한 저장된 개별 파일과 디렉토리의 총량보다 적은 디스크 공간을 사용합니다. 만일 가지고 계신 컴퓨터에 충분한 디스크 공간이 없다면, 자주 사용하지 않는 파일이나 더이상 사용하지는 않지만 저장해놓고 싶은 파일들을 압축할 수 있습니다. 또한 아카이브 파일을 만드신 후 압축하여 디스크 공간을 절약하는 방법도 있습니다.

참고알림
 

아카이브 파일은 압축 파일이 아니지만, 압축 파일은 아카이브 파일이 될 수 있습니다.

14.3.1. 파일 롤러 (File Roller) 사용하기

Red Hat Linux에는 파일 롤러 (File Roller)라는 그래픽 유틸리티가 포함되어 있습니다. 이 유틸리티는 파일과 디렉토리를 압축, 압축 해제하며 아카이브하는데 사용됩니다. 파일 롤러는 일반 UNIX와 Linux 파일의 압축과 보존(아카이브) 형식을 지원하며, 단순한 인터페이스를 갖추고 있지만, 광범위한 도움말 문서 자료를 제공합니다. 또한 데스크탑 환경과 그래픽 파일 관리자에 통합되어 있으므로, 사용자는 보다 쉽게 파일 아카이브 작업을 수행하실 수 있습니다.

파일 롤러를 시작하시려면 주 메뉴 => 액세서리 => 파일 롤러를 클릭하시면 됩니다. 쉘 프롬프트에서 file-roller 명령을 입력하여 파일 롤러를 시작하실 수도 있습니다. 그림 14-1에서는 작동 중인 파일 롤러를 볼 수 있습니다.

작은보힌트
 

Nautilus와 같은 파일 관리자를 사용하신다면, 단순히 압축을 풀거나 아카이브를 해제할 파일에 두번 클릭하여 파일 롤러를 실행할 수 있습니다. 압축이 해제된 파일이 들어있는 폴더를 보여주는 파일 롤러 브라우저 창이 나타납니다.

그림 14-1. 작동 중인 파일 롤러

14.3.1.1. 파일 롤러를 사용하여 압축 풀기와 아카이브 해제하기

파일의 압축을 풀거나 아카이브를 해제하시려면, 열기 도구바 버튼을 클릭하십시오. 작업할 아카이브를 선택할 수 있는 파일 메뉴가 나타날 것입니다. 예를 들어 홈 디렉토리에 foo.tar.gz 파일이 저장되어 있다고 가정하고, 파일을 하이라이트하신 후 확인 버튼을 클릭하십시오. 그 파일은 파일 롤러 주 브라우저 창에 폴더로 나타날 것이며, 여러분은 폴더 아이콘에 더블 클릭하여 내용을 보실 수 있습니다. 파일 롤러는 사용자가 아카이브 내에서 특정 파일을 쉽게 찾을 수 있도록 모든 디렉토리와 하부 디렉토리를 계층 구조를 보여줍니다. 압축 풀기 (Extract) 버튼을 클릭 후, 아카이브 해제된 파일을 저장할 디렉토리를 선택하시고 확인 버튼을 클릭하시면, 개별 파일이나 전체 아카이브를 압축 해제하실 수 있습니다.

14.3.1.2. 파일 롤러를 사용하여 아카이브 생성하기

하드 드라이브에 여유 공간이 필요하거나, 다중 파일이나 다중 파일이 저장된 디렉토리를 이메일을 통하여 다른 사용자에게 보내시려면, 파일 롤러를 사용하여 파일과 디렉토리의 아카이브를 생성하실 수 있습니다. 새 아카이브를 생성하시려면, 도구바에서 새 (New) 버튼을 클릭하십시오. 파일 브라우저가 나타날 것이며, 이 창에서 아카이브의 이름과 압축 방법을 지정해 주십시오. 예를 들어 드롭 다운 메뉴에서 gzip을 사용하여 tar 압축 (tar.gz) 형식을 선택하신 후 생성하실 아카이브 파일의 이름을 입력하시면 됩니다. 확인을 클릭하시면 새로운 아카이브가 파일과 디렉토리를 저장할 준비가 되었습니다. 새로운 아카이브에 파일을 추가하시려면, 추가 버튼을 클릭하십시오. 브라우저 창 (그림 14-2)이 나타나면 아카이브에 추가할 파일이나 디렉토리를 찾으십시오. 선택을 마치셨다면 확인 버튼을 클릭하신 후 닫기 버튼을 클릭하여 아카이브를 종료합니다.

그림 14-2. 파일 롤러를 사용하여 아카이브 생성하기

작은보힌트
 

파일 롤러는 이 장에서 설명된 것보다 훨씬 많은 기능을 갖추고 있습니다. 보다 많은 정보를 원하신다면, 파일 롤러 메뉴얼 (도움말 => 메뉴얼)을 참조하시기 바랍니다.

14.3.2. 쉘 프롬프트에서 파일 압축하기

압축된 파일은 압축안된 큰 파일보다 디스크 공간을 절약하고 다운로드도 빨리 할 수 있습니다. Red Hat Linux에서 gzip, bzip2, 또는 zip 압축 도구를 사용하여 파일을 압축하실 수 있습니다.

bzip2 압축 도구는 가장 강력한 압축 기능을 제공하며 대부분의 UNIX 유사 운영 체제에서 사용되므로, 사용을 권장합니다. gzip 압축 도구도 대부분의 UNIX 유사 운영 체제에서 사용됩니다. 만일 리눅스와 MS Windows와 같은 다른 운영 체제 사이에서 파일을 전송할 필요가 있다면, 다른 운영 체제에서 가장 일반적으로 사용되는 zip을 사용하셔야 합니다.

압축 도구파일 확장자압축 풀기 도구
gzip.gzgunzip
bzip2.bz2bunzip2
zip.zipunzip

표 14-1. 압축 도구

약정에 의해, gzip을 사용해 압축된 파일에는 확장자 .gz가 주어지며, bzip2으로 압축된 파일에는 확장자 .bz2, zip으로 압축된 파일에는 확장자 .zip가 주어집니다.

gzip으로 압축된 파일은 gunzip을 사용하여 압축을 해제할 수 있으며, bzip2으로 압축된 파일은 bunzip2를 사용하여 압축 해제하고, zip으로 압축된 파일은 unzip을 사용하여 압축을 해제할 수 있습니다.

14.3.2.1. Bzip2와 Bunzip2

bzip2을 사용하여 파일을 압축하시려면, 쉘 프롬프트에서 다음과 같은 명령을 입력하셔야 합니다:

bzip2 filename

파일은 압축된 후 filename.bz2으로 저장될 것입니다.

파일의 압축을 풀기 위해서는, 다음과 같이 입력합니다:

bunzip2 filename.bz2

filename.bz2 파일은 삭제되고 filename으로 대체됩니다.

bzip2을 사용하여 여러 파일과 디렉토리를 동시에 압축할 수 있습니다. 각 파일과 디렉토리 사이에 공백을 두고 열거합니다:

bzip2 filename.bz2 file1 file2 file3 /usr/work/school 

위의 명령어는 file1, file2, file3 과 /usr/work/school 디렉토리의 내용을 압축한 다음 filename.bz2 파일에 저장합니다.

작은보힌트
 

보다 많은 정보를 원하시면, 쉘 프롬프트에서 man bzip2 명령과 man bunzip2 명령을 입력하여 bzip2와 bunzip2의 메뉴얼 페이지를 읽어 보십시오.

14.3.2.2. Gzip과 Gunzip

gzip을 사용하여 파일을 압축하시려면, 쉘 프롬프트에서 다음과 같은 명령을 입력하셔야 합니다:

gzip filename

파일은 압축된 후 filename.gz으로 저장될 것입니다.

파일의 압축을 풀기 위해서는, 다음과 같이 입력합니다:

gunzip filename.gz

filename.gz파일은 삭제되고 filename으로 대체됩니다.

gzip을 사용하여 여러 파일과 디렉토리를 동시에 압축할 수 있습니다. 각 파일과 디렉토리 사이에 공백을 두고 열거합니다:

gzip -r filename.gz file1 file2 file3 /usr/work/school 

위의 명령어는 file1, file2, file3 과 /usr/work/school 디렉토리의 내용을 압축한 다음 filename.gz 파일에 저장합니다.

작은보힌트
 

보다 많은 정보를 원하시면, 쉘 프롬프트에서 man gzip 명령과 man gunzip 명령을 입력하여 gzip와 gunzip의 메뉴얼 페이지를 읽어 보십시오.

14.3.2.3. Zip과 Unzip

zip을 사용하여 파일을 압축하시려면, 쉘 프롬프트에서 다음과 같은 명령을 입력하셔야 합니다:

zip -r filename.zip filesdir

위의 예시에서, filename.zip은 여러분이 만드신 파일을 나타내며 filesdir는 새로운 zip 파일을 저장하고자 하는 디렉토리를 나타냅니다. -r 옵션은 filesdir 디렉토리에 속해 있는 모든 파일들을 순환적으로(recursively) 포함한다는 것을 의미합니다.

zip으로 압축된 파일을 풀기 위해서는, 다음과 같이 입력합니다:

unzip filename.zip

zip을 사용하여 여러 파일과 디렉토리를 동시에 압축할 수 있습니다. 각 파일과 디렉토리 사이에 공백을 두고 열거합니다:

zip -r filename.zip file1 file2 file3 /usr/work/school 

위의 명령어는 file1, file2, file3 과 /usr/work/school 디렉토리의 내용을 압축한 다음 filename.zip 파일에 저장합니다.

작은보힌트
 

보다 많은 정보를 원하시면, 쉘 프롬프트에서 man zip 명령과 man unzip 명령을 입력하여 zip과 unzip의 메뉴얼 페이지를 읽어 보십시오.

14.3.3. 쉘 프롬프트에서 파일 보존(archive)하기

tar 파일은 한개의 파일에 여러개의 파일과 디렉토리를 모은 것입니다. 백업과 아카이브 파일을 만들기에 좋은 방법입니다.

tar 명령과 함께 사용할 수 있는 옵션들은 다음과 같습니다:

tar 파일을 생성하시려면 다음 명령을 입력하십시오:

tar -cvf filename.tar directory/file

위의 명령에서 filename.tar는 생성할 tar 파일을 나타내며 directory/file는 아카이브 파일에 저장할 파일이나 디렉토리들을 의미합니다.

tar를 사용하여 여러 파일과 디렉토리를 동시에 압축하실 수 있습니다. 다음과 같이 각 파일과 디렉토리명 사이에 공백을 두고 열거합니다:

tar -cvf filename.tar /home/mine/work /home/mine/school

위의 명령은 /home/mine의 하부 디렉토리인 work 디렉토리와 school 디렉토리에 저장된 모든 파일을 현재 디렉토리에서 filename.tar라는 새로운 파일에 저장합니다.

tar 파일에 저장된 파일의 목록을 보시려면, 다음과 같이 입력하십시오:

tar -tvf filename.tar

tar 파일의 내용을 꺼내기 위해서는 다음 명령을 입력하십시오:

tar -xvf filename.tar

위의 명령어는 tar 파일을 제거하지 않은 채, 아카이브 파일이 사용한 디렉토리 구조를 보존하면서 현재 디렉토리에 그 파일의 내용물을 복사해 놓습니다. 예를 들어, 만일 tar 파일이 foo/라는 디렉토리에 bar.txt라고 불리는 파일을 포함하는 경우, 이 아카이브 파일을 압축 해제하시면 현재 작업 중인 디렉토리에 foo/라는 디렉토리가 생성될 것이며 이 디렉토리에는 bar.txt 파일이 저장되어 있을 것입니다.

tar 명령은 파일을 압축하도록 기본 설정되지 않았다는 점을 기억해 주십시오. tar와 bzip을 사용하여 압축 파일을 생성하시려면, -j 옵션을 사용하셔야 합니다:

tar -cjvf filename.tbz file

bzip2으로 압축된 tar 파일들은 일반적으로 .tbz 확장자를 갖습니다; 그러나 가끔식 사용자는 tar.bz2 확장자를 사용하여 파일을 아카이브 저장하가도 합니다.

위의 명령은 아카이브 파일을 생성 후 filename.tbz라는 이름의 파일로 압축합니다. bunzip2 명령을 사용하여 filename.tbz 파일을 압축 해제하시면, filename.tbz 파일은 삭제되고 filename.tar 파일로 교체될 것입니다.

또한 다음과 같은 명령을 사용하여 bzip 파일과 tar 파일의 압축 풀기와 아카이브 해제를 동시에 실행하실 수 있습니다:

tar -xjvf filename.tbz

tar와 gzip을 사용하여 파일을 압축하시려면, -z 옵션을 사용하십시오:

tar -czvf filename.tgz file

gzip 명령을 사용하여 압축된 tar 파일은 일반적으로 .tgz 확장자를 갖습니다.

위의 명령어는 아카이브 파일 filename.tar을 생성한 후 filename.tgz 파일로 압축합니다. (filename.tar 파일은 저장되지 않습니다.) gunzip 명령을 사용하여 filename.tgz 파일의 압축을 해제하시면, filename.tgz 파일은 삭제되고 filename.tar로 대체됩니다.

다음과 같은 명령을 사용하여 gzip tar 파일을 압축 해제하실 수 있습니다

tar -xzvf filename.tgz

작은보힌트
 

tar 명령어와 관련된 보다 많은 정보를 원하신다면, man tar 명령을 입력하여 메뉴얼 페이지를 참조하시기 바랍니다.