반응형

리눅스 강좌 11강. “폴더를 한 파일로!” — tar/zip/unzip로 압축·해제·공유하기

이번 강에서 할 일
1) 압축과 아카이브(묶기)의 차이 이해하기
2) tar로 폴더를 “묶고”(.tar, .tar.gz) 풀기
3) zip/unzip로 압축 파일 다루기
4) 압축 파일 내용만 미리보기/검증하기
5) 실습: “프로젝트 제출용 패키지 만들기”

🎬 도입 이야기: “폴더째로 제출하라는데… 파일이 너무 많아요!”

프로젝트 폴더에는 코드, 이미지, 로그, 설정 파일이 뒤섞여 있습니다. 이걸 그대로 공유하면 파일이 수십~수백 개가 되어 관리가 어렵죠.
그래서 우리는 폴더를 하나의 파일로 묶고(아카이브), 필요하면 압축해서 용량도 줄입니다.
오늘은 리눅스에서 가장 자주 쓰는 압축/해제 도구인 tarzip을 다룹니다.


1) 먼저 개념: “묶기(아카이브)” vs “압축”

아카이브(묶기)
여러 파일/폴더를 한 파일로 포장하는 것
예: .tar
압축
파일의 용량을 줄이는
예: .gz, .zip
핵심
.tar.gz는 “tar로 묶고gz로 압축한 파일”입니다.

2) tar로 묶고 풀기

🧠 약자/뜻
tar = tape archive (옛날 테이프 백업 문화에서 유래)
지금은 “폴더를 하나로 묶는 표준 도구”로 가장 많이 씁니다.

자주 쓰는 옵션 4개만 기억하기

-c : create (만들기)
-x : extract (풀기)
-v : verbose (과정 보여주기)
-f : file (파일 이름 지정)
# 폴더를 tar로 묶기
tar -cvf project.tar project/

# tar 풀기
tar -xvf project.tar

# gzip까지 같이(= .tar.gz 만들기)
tar -czvf project.tar.gz project/

# .tar.gz 풀기
tar -xzvf project.tar.gz
🧠 옵션 팁
-z는 gzip 압축을 뜻합니다. (tar + gz = tar.gz)
“압축까지 하고 싶으면 z를 추가!”라고 기억하면 편해요.

압축 파일 내용만 미리보기

# tar 파일 목록 보기(list)
tar -tf project.tar

# tar.gz 파일 목록 보기
tar -tzf project.tar.gz
안전 습관
중요한 압축을 풀기 전에, 먼저 -t로 “안에 뭐가 들어있는지” 확인하면 사고가 줄어듭니다.

3) zip / unzip로 다루기

윈도우/맥과 호환성이 좋아서 .zip은 “제출/공유”에서 정말 자주 쓰입니다. 리눅스에서도 당연히 만들고 풀 수 있어요.

🧠 뜻
zip = 압축 파일 만들기
unzip = 압축 파일 풀기
# 폴더를 zip으로 압축(-r = 하위까지)
zip -r project.zip project/

# zip 풀기
unzip project.zip

# zip 내용만 미리보기(-l = list)
unzip -l project.zip
옵션 기억법
-r = recursive (폴더 하위까지 포함)
-l = list (목록 보기)
참고(환경에 따라)
어떤 최소 설치 리눅스에서는 zip/unzip이 기본 설치가 아닐 수 있습니다.
그럴 땐 sudo apt install zip unzip로 설치할 수 있어요. (10강 복습!)

4) 실습 프로젝트: “프로젝트 제출용 패키지 만들기”

오늘의 목표: 제출 폴더 구조를 만들고, tar.gzzip 두 가지 방식으로 패키징해봅니다.

# 1) 연습 폴더 만들기
cd ~
mkdir -p archive_practice/project/src archive_practice/project/assets archive_practice/project/docs
cd archive_practice

# 2) 가짜 파일 만들기
echo "print('hello')" > project/src/main.py
echo "README: project info" > project/docs/README.txt
echo "image placeholder" > project/assets/img.txt

# 3) 폴더 구조 확인(tree가 있으면 편함)
ls -R project

# 4) tar.gz로 패키징
tar -czvf project_submit.tar.gz project/

# 5) zip으로 패키징
zip -r project_submit.zip project/

# 6) 내용 미리보기(풀기 전 확인)
tar -tzf project_submit.tar.gz
unzip -l project_submit.zip

# 7) (선택) 실제로 풀어보기(다른 폴더로)
mkdir -p test_extract_tar test_extract_zip
tar -xzvf project_submit.tar.gz -C test_extract_tar
unzip project_submit.zip -d test_extract_zip

# 8) 결과 확인
ls -R test_extract_tar
ls -R test_extract_zip
🧠 새 옵션 2개
-C : 다른 폴더로 이동해서 풀기(Extract 위치 지정)
-d : unzip에서 풀 폴더 지정(directory)

👩‍🏫 교사용 포인트

  • tar는 리눅스에서 표준, zip은 윈도우 호환이 좋아서 제출용으로 유리합니다. 두 개를 비교해주면 이해가 빠릅니다.
  • 실수 방지: “풀기 전에 목록 보기(-t, unzip -l)” 습관을 강조하세요.
  • 프로젝트 수업에서는 “폴더 구조 → 패키징 → 배포/제출” 흐름이 매우 중요합니다. 오늘 강이 그 핵심 연결고리입니다.

🧩 학생 미션

  1. tar가 무엇의 약자인지 쓰고, tar의 기본 목적(무엇을 하는 도구인지)을 설명해보세요.
  2. .tar.tar.gz의 차이를 “묶기/압축” 관점으로 설명해보세요.
  3. 폴더 projectproject.zip으로 압축하는 명령을 작성해보세요.
  4. 압축을 풀기 전에 내용만 확인하는 명령을 각각 1개씩 써보세요.
    (tar.gz용 1개, zip용 1개)

✅ 정답 예시

예시 1) tar = tape archive. 여러 파일/폴더를 하나로 묶는 아카이브 도구다.

예시 2) .tar는 묶기(아카이브), .tar.gz는 tar로 묶고 gzip으로 압축한 것이다.

예시 3) zip -r project.zip project/

예시 4)
- tar.gz 목록: tar -tzf project_submit.tar.gz
- zip 목록: unzip -l project_submit.zip

⚠️ 유의사항

  • tar -x...로 풀면 현재 폴더에 파일이 쏟아질 수 있습니다. 가능하면 -C로 폴더를 지정해 푸는 습관이 안전합니다.
  • zip/unzip이 없으면 sudo apt install zip unzip로 설치가 필요할 수 있습니다.
  • 제출용 압축은 파일명 규칙을 정해두면 좋습니다. (예: 이름_프로젝트_날짜.zip)

다음 강 예고: 12강에서는 “네트워크 기본”을 배웁니다. ping, ip, curl, ssh로 연결 상태 확인부터 원격 접속까지 다룹니다.

반응형

+ Recent posts