#!/bin/bash
# 실습 #7 ⑦ — tar | ssh 파이프 (디스크 임시 파일 없이 한 줄 백업)
# 4가지 패턴: 로컬→원격 / 원격→로컬 / 압축+암호화 / 다른 디렉터리로 직접 풀기
# 사용: bash setup_07_tar_ssh_pipe.sh <USER@HOST>
set -e

REMOTE="${1:-lab@192.168.56.20}"
SRC=/var/www
DATE=$(date +%Y%m%d_%H%M)

cat <<EOF
이 스크립트는 실제 실행하지 않고 4가지 패턴을 보여줍니다.
필요한 줄만 복사해서 사용하세요. REMOTE=$REMOTE / SRC=$SRC

=== 패턴 1: 로컬 → 원격 (임시 파일 없이 압축 + 전송) ===
tar czf - $SRC | ssh $REMOTE "cat > /backup/$(basename $SRC)_${DATE}.tar.gz"

=== 패턴 2: 원격 → 로컬 (원격에서 압축하면서 받기) ===
ssh $REMOTE "tar czf - $SRC" > /backup/$(basename $SRC)_${DATE}.tar.gz

=== 패턴 3: 압축 + GPG 암호화 + 원격 전송 ===
tar czf - $SRC | \\
    gpg --symmetric --cipher-algo AES256 | \\
    ssh $REMOTE "cat > /backup/$(basename $SRC)_${DATE}.tar.gz.gpg"
# 복원:
# ssh $REMOTE "cat /backup/file.tar.gz.gpg" | gpg --decrypt | tar xzf - -C /restore/

=== 패턴 4: 원격 다른 디렉토리에 바로 풀기 (압축본 안 남김) ===
tar czf - $SRC | ssh $REMOTE "mkdir -p /restore && tar xzf - -C /restore/"

=== 언제 이 패턴? ===
- 디스크 공간 부족 (tmp 파일 못 만들 때)
- 일회성 마이그레이션
- 보안: 디스크에 평문 안 남기고 싶을 때 (패턴 3)
EOF
