#!/bin/bash
# 실습 #7 ① — tar 6 패턴 + 압축 알고리즘 비교 (gzip/bzip2/xz/zstd)
# 동일 파일을 4가지 압축으로 만들어 크기·시간 비교
set -e

SRC=/var/log
WORK=/tmp/lab07_tar
mkdir -p "$WORK"; cd "$WORK"

echo "=== 0) 압축 도구 설치 ==="
sudo apt install -y bzip2 xz-utils zstd >/dev/null

echo
echo "=== 1) 묶기만 (압축 X) ==="
time sudo tar cf data.tar $SRC 2>/dev/null
ls -lh data.tar

echo
echo "=== 2) gzip (기본 -6) ==="
time sudo tar czf data.tar.gz $SRC 2>/dev/null
ls -lh data.tar.gz

echo
echo "=== 3) bzip2 (더 작지만 느림) ==="
time sudo tar cjf data.tar.bz2 $SRC 2>/dev/null
ls -lh data.tar.bz2

echo
echo "=== 4) xz (가장 작지만 가장 느림) ==="
time sudo tar cJf data.tar.xz $SRC 2>/dev/null
ls -lh data.tar.xz

echo
echo "=== 5) zstd (빠르면서도 작음, 멀티스레드) ==="
time sudo tar --use-compress-program='zstd -T0' -cf data.tar.zst $SRC 2>/dev/null
ls -lh data.tar.zst

echo
echo "=== 6) 해제 패턴 ==="
mkdir -p restored
tar xf data.tar -C restored/                 # 자동 감지
tar tf data.tar.gz | head -3                  # 목록만 보기
echo
echo "=== 비교표 (크기) ==="
du -sh data.tar* | sort -h
echo
echo "→ 정리: rm -rf $WORK"
