공공부하자개발 · 영어 학습 노트
리눅스
리눅스 명령어리눅스 자체를 익히는 명령 중심 학습0/10 완료
  • 01파일·디렉터리 명령
  • 02텍스트 보기·편집 (less·vi)
  • 03사용자·그룹·권한·sudo
  • 04패키지·시스템 정보 (dnf·rpm)
  • 05프로세스·자원 (ps·top·free·df)
  • 06네트워크 명령 (ip·ss·ping·scp)
  • 07압축·아카이브·검색 (tar·gzip·find)
  • 08셸 활용 (히스토리·별칭·단축키)
  • 09sed · awk 한 줄 처리 (치환·필드·집계)
  • 10링크 · 디스크 · 예약 작업 (ln·mount·crontab)
사이트 소개개인정보처리방침연락처
© 2026 공부하자
홈 › 리눅스 명령어 › 07 / 10

압축·아카이브·검색 (tar·gzip·find)

섹션 7진행 0 / 10
1왜 배우는가2핵심 원리3코드 예제4응용 변형 예제5자주 하는 실수 (Tip)6연습 문제7정리‹ 이전다음 ›

2. 핵심 원리

2.1 tar 다섯 글자

글자 뜻
c 만들기 (create)
t 목록 (list)
x 풀기 (extract)
z gzip 으로 압축·해제
f 다음 인자가 파일 이름

c·t·x 중 하나에 z 와 f 를 붙입니다. tar czf, tar tzf, tar xzf 세 조합이 전부입니다. v 를 넣으면 처리하는 파일 이름을 출력합니다.

2.2 tar 기본 형태

bash
tar czf app.tgz app             # app 폴더를 app.tgz 로
tar tzf app.tgz                 # 안에 뭐가 있나
tar xzf app.tgz                 # 현재 폴더에 풀기
tar xzf app.tgz -C /opt         # -C 지정 폴더에 풀기

f 뒤에 파일 이름이 바로 와야 합니다. tar czf app app.tgz 처럼 순서가 바뀌면 app 이라는 파일을 만들려다 실패합니다.

2.3 경로 다루기

bash
tar czf conf.tgz -C app conf                # app 으로 들어가서 conf 만, 경로는 conf/...
tar czf app.tgz --exclude='*.log' app       # 로그 제외
tar xzf app.tgz app/conf/app.properties     # 파일 하나만 꺼내기
tar xzOf app.tgz app/conf/app.properties    # O: 풀지 않고 화면에

-C 는 만들 때도 씁니다. tar czf conf.tgz app/conf 로 만들면 풀 때 app/conf/ 가 통째로 생기지만, -C app conf 로 만들면 conf/ 만 생깁니다. 풀리는 경로를 tzf 로 미리 보는 습관이 중요합니다.

2.4 압축 형식

확장자 도구 특징
.gz .tgz gzip 빠름, 기본
.bz2 bzip2 더 작음, 느림
.xz .txz xz 가장 작음, 가장 느림
.zip zip Windows 호환

tar 의 z 는 gzip, j 는 bzip2, J 는 xz 입니다. 로그 보관은 gzip, 반출용 큰 파일은 xz, Windows 와 주고받으면 zip 입니다.

2.5 gzip 단독

bash
gzip big.log                    # big.log.gz 로 바뀌고 원본 삭제
gzip -k big.log                 # -k 원본 유지
gunzip big.log.gz               # 풀기
zcat big.log.gz | head          # 풀지 않고 읽기
zgrep ERROR big.log.gz          # 풀지 않고 검색

gzip 은 파일 하나만 다루고 폴더는 못 합니다. 그래서 폴더는 tar 로 먼저 묶습니다. 로그 보관은 gzip 만으로 충분하고 zcat·zgrep·zless 가 그대로 읽습니다.

2.6 zip 과 unzip

bash
zip -r app.zip app              # 폴더째
unzip -l app.zip                # 목록
unzip app.zip -d out            # 지정 폴더에
unzip -o app.zip                # 묻지 않고 덮어쓰기
unzip -p app.jar META-INF/MANIFEST.MF   # 파일 하나를 화면에

jar·war 도 zip 형식이라 unzip -l app.jar 로 안을 봅니다. 운영 묶음 04 의 버전 확인이 이 방식이었습니다.

2.7 내용으로 찾기: grep -r

옵션 뜻
-r 폴더 재귀
-n 줄 번호
-l 파일 이름만
-c 파일별 개수
-i 대소문자 무시
--include='*.log' 확장자 제한
--exclude-dir=node_modules 폴더 제외

grep -rn 'db-dev' /opt/myapp/conf 가 "어느 파일 몇 번째 줄에 있나" 의 답입니다. -l 은 그 파일들에 sed 나 xargs 를 이어 붙일 때 씁니다.

2.8 속성으로 찾기: find

bash
find app -name '*.log' -size +100k          # 이름 + 크기
find app -name '*.log' -mmin -5             # 5분 안에 수정
find app -type f -mtime +30                 # 30일 넘음
find / -xdev -size +500M 2>/dev/null        # 파티션 안 큰 파일

01 레슨의 조건에 -size·-mmin 을 더했습니다. -xdev 는 다른 파티션으로 넘어가지 않고 2>/dev/null 이 권한 에러를 숨깁니다.

2.9 find 와 grep 조합

bash
find app -type f -exec grep -l 'fail 2' {} +          # 찾은 파일 안에서 검색
find app -name '*.properties' -mtime -1 | xargs grep -n 'db-'
find app -name '*.log' -print0 | xargs -0 grep -c ERROR   # 공백 안전

find 로 대상을 좁히고 grep 으로 내용을 봅니다. 파일 이름에 공백이 있을 수 있으면 -print0 과 xargs -0 짝을 씁니다.

2.10 체크섬

bash
sha256sum app.jar                     # 해시 출력
sha256sum app.jar > app.jar.sha256    # 파일로 저장
sha256sum -c app.jar.sha256           # app.jar: OK
md5sum app.jar                        # 옛 방식, 빠름
cmp a.jar b.jar && echo 같음          # 두 파일 직접 비교

반출 측에서 .sha256 을 만들어 함께 옮기고 반입 측에서 -c 로 확인합니다. OK 가 아니면 다시 옮깁니다. 배포 스크립트 첫 단계로 넣으면 잘린 jar 로 배포하는 사고가 없습니다.

2.11 분할과 합치기

bash
split -b 100m big.tgz part_           # 100MB 씩 part_aa part_ab ...
cat part_* > big.tgz                  # 순서대로 합치기
sha256sum -c big.tgz.sha256           # 합친 뒤 확인

반입 매체 크기 제한이 있을 때 씁니다. cat 은 파일 이름 순으로 합치므로 split 의 기본 접미사 aa·ab 순서가 맞습니다.

2.12 백업 한 줄

bash
tar czf "backup-$(date +%Y%m%d_%H%M%S).tgz" -C /opt/myapp conf
find /backup -name 'backup-*.tgz' -mtime +30 -delete

날짜가 이름에 들어가 정렬되고 -mtime +30 -delete 로 오래된 것을 지웁니다. 운영 묶음 06 의 cron 에 넣으면 자동입니다.

핵심 원리
  • 2.1 tar 다섯 글자
  • 2.2 tar 기본 형태
  • 2.3 경로 다루기
  • 2.4 압축 형식
  • 2.5 gzip 단독
  • 2.6 zip 과 unzip
  • 2.7 내용으로 찾기: grep -r
  • 2.8 속성으로 찾기: find
  • 2.9 find 와 grep 조합
  • 2.10 체크섬
  • 2.11 분할과 합치기
  • 2.12 백업 한 줄
이전 섹션1 왜 배우는가2 / 7다음 섹션3 코드 예제