CodeGym /행동 /Docker SELF /파일 아카이브랑 압축: 명령어 `tar`, `gzip`, `zip`

파일 아카이브랑 압축: 명령어 `tar`, `gzip`, `zip`

Docker SELF
레벨 6 , 레슨 4
사용 가능

파일 아카이브랑 압축: 명령어 tar, gzip, zip

1. 아카이빙과 압축 개념

아카이빙이 뭐야? 왜 필요한 거야?

책으로 가득 찬 책장을 상상해 봐. 책들을 깔끔하게 정리하려면 상자에 넣어서 보관할 수 있겠지(아카이빙). 그리고 더 촘촘히 정리하려면 끈으로 묶어야 할 거야(압축). 컴퓨터 세계에서 아카이빙이라는 건 여러 파일을 하나의 컨테이너(아카이브)로 묶는 과정이고, 압축은 그 크기를 줄이는 걸 의미해.

근데 왜 이게 필요할까? 몇 가지 예를 들어줄게:

  • 데이터 저장: 파일을 아카이브에 묶어두면 하나의 파일처럼 쉽게 이동하거나 복사할 수 있어.
  • 데이터 전송: 압축 덕분에 데이터 크기가 줄어들어서 네트워크로 전송하는 속도가 빨라져.
  • 백업: 아카이빙은 데이터를 보호하고 복원을 더 간단하게 만들어줘.

참, 1000개의 파일을 이메일로 보내려고 해본 적 있어? 아카이빙 없이 하면 완전 고문 같을 걸!


2. tar 명령어: 아카이브 생성 및 관리

tar란 무엇인가?

tar는 Linux에서 파일을 아카이빙하는 유틸리티야. tar 자체는 파일을 압축하지 않고 단순히 파일을 하나로 묶어. 파일을 압축하고 싶으면 (gzip, bzip2 등)과 함께 사용할 수 있어.

일반적인 구문

tar [옵션] <아카이브> <파일/폴더>

주요 옵션

  • -c: 새로운 아카이브 생성.
  • -v: 작업 과정 상세 출력 (추가된 파일에 대한 정보를 모두 보여줌).
  • -f: 아카이브 이름 지정.
  • -x: 아카이브에서 파일 추출.
  • -t: 아카이브 내용 표시.

사용 예제

1. 아카이브 생성

tar -cvf archive.tar file1.txt file2.txt
  • file1.txtfile2.txt 두 파일로 archive.tar 아카이브를 생성해.
  • -c: 새로운 아카이브 생성.
  • -v: 파일 추가 과정을 터미널에 출력해.
  • -f: 아카이브 이름을 archive.tar로 지정해.

2. 폴더 아카이브

tar -cvf project.tar /home/user/project
  • /home/user/project 폴더를 포함하는 project.tar 아카이브를 생성해.

3. 아카이브 추출

tar -xvf archive.tar
  • 현재 디렉토리에 archive.tar 아카이브를 해제해.

4. 아카이브 내용 보기

tar -tvf archive.tar
  • 아카이브에 있는 파일과 폴더 목록을 보여줘.

3. gzip을(를) 사용한 압축

gzip은(는) 무엇을 하나요?

만약 tar가 상자라면, gzip은 그 상자의 크기를 줄이는 진공 패키지라고 할 수 있어. gzip은(는) 압축 알고리즘을 사용해서 데이터를 줄이는 도구로, 공간을 절약하는 데 딱이야.

일반적인 구문

gzip [옵션] <파일>

사용 예시

1. 파일 압축

gzip file1.txt
  • 명령 실행 후 file1.txt 파일이 file1.txt.gz로 변경돼.

2. 파일 압축 해제

gunzip file1.txt.gz
  • 원본 파일 file1.txt을(를) 복원해.

3. tar과(와) gzip을(를) 사용한 보관 및 압축

tar -czvf archive.tar.gz file1.txt file2.txt
  • file1.txtfile2.txt 파일을 묶고 압축하는 archive.tar.gz 아카이브를 생성해.

4. 압축된 아카이브 추출

tar -xzvf archive.tar.gz
  • archive.tar.gz 아카이브의 내용을 추출하고 해제해.

4. 압축된 아카이브 생성용 유틸리티 zip

tar와의 차이점은?

tar와는 다르게 zip은 바로 압축된 아카이브를 만들며, 기본적으로 Windows 및 다른 시스템에서 사용 가능합니다.

일반적인 문법

zip [옵션들] <아카이브> <파일/폴더>

사용 예시

1. zip 아카이브 생성

zip archive.zip file1.txt file2.txt
  • archive.zip라는 아카이브를 생성하며, file1.txtfile2.txt 파일들을 포함시킵니다.

2. 폴더 아카이브

zip -r project.zip /home/user/project
  • project.zip라는 아카이브를 생성하며, /home/user/project 폴더 전체를 포함합니다.
  • -r: 파일과 폴더를 재귀적으로 추가합니다.

3. zip 아카이브 압축 해제

unzip archive.zip
  • archive.zip 아카이브의 내용을 추출합니다.

5. tar, gzip 그리고 zip 간의 차이점

유틸리티 아카이빙 압축 접근 방식 주요 용도
tar 파일 묶음 압축 없이 파일을 하나의 아카이브로 결합
gzip 압축 개별 파일이나 아카이브의 크기를 줄이기
zip 올인원 이동 가능한 아카이브 생성

6. 실습 과제

  1. /home/user/documents 폴더의 내용을 기반으로 backup.tar 아카이브를 작성하세요.
  2. gzip을 사용하여 backup.tar를 압축하여 backup.tar.gz 파일을 만드세요.
  3. 아카이브를 다른 디렉토리, 예를 들어 /tmp/backup에 압축을 푸세요.
  4. doc1.txtdoc2.txt 파일로 docs.zip zip 아카이브를 만드세요.
  5. unzip 명령어를 사용하여 docs.zip의 내용을 추출해보세요.

7. 일반적인 실수 및 유의점

1. "Permission denied" 오류 파일 접근이 제한된 경우 아카이브하려고 하면 오류 메시지를 받게 될 거야. 명령어를 관리자 권한으로 실행해보자: sudo.

2. 옵션이 헷갈려? tar 옵션은 가끔 헷갈릴 수 있어. 순서가 중요하다는 거 잊지마: 예를 들어, 먼저 작업 -c 또는 -x를 지정하고 그다음 다른 옵션을 추가해.

3. 압축된 아카이브가 열리지 않아 실수로 이미 압축된 파일에 추가로 압축을 걸었다면 (예: gzip archive.tar.gz), 당황하지 마. 그냥 두 번 풀어주면 돼.

4. 너무 큰 아카이브 zip 명령어를 사용할 때 임시 파일이나 캐시를 제외해서 아카이브 크기를 줄여봐: zip -r archive.zip folder -x "*.tmp".

5. 호환성 문제 Windows 사용자가 파일을 필요로 한다면, zip을 사용하는 게 좋아. 그쪽 OS에서 더 잘 지원돼.

이렇게 Linux에서 데이터 아카이브 및 압축을 배우게 됐어. 이 도구들은 대용량 데이터 작업을 간소화하거나, 데이터 전송 및 손실 방지에 유용할 거야. 다음 주제로 넘어가자—지식은 점점 더 쌓여갈 테니까! 🎉

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION