우당탕탕 개발일지

[방치RPG 서버 제작기] 9. 유니티 파일 서버로 전송하기 본문

Server/방치RPG 서버

[방치RPG 서버 제작기] 9. 유니티 파일 서버로 전송하기

devchop 2025. 5. 18. 11:10

뽑기를 하려면 확률표를 공유해야 한다. 작업편의상, 유니티 프로젝트에 확률표를 옮기면 서버로 옮기는 쉘스크립트를 작성했다.

유니티는 .meta파일이 함께있기때문에, csv파일만 전송하도록 했다.

csv파일이 삭제되는 경우도 있기때문에, 전송받은 파일을 압축해제 하기 전 , csv폴더자체를 삭제함으로써 100% 동기화한다.

 

#!/bin/bash

# === 설정 ===
PROJECT_ROOT=$(pwd)
SOURCE_DIR="$PROJECT_ROOT/Assets/04_CSVs"
TEMP_DIR="$PROJECT_ROOT/tmp_csv_upload"
ARCHIVE_NAME="csvs.tar.gz"
REMOTE_USER="ubuntu"
REMOTE_HOST="서버_IP"  # 👉 여기에 실제 IP 입력
REMOTE_DIR="/root/danteRPG"
REMOTE_TARGET_DIR="$REMOTE_DIR/csvs"

# === 1. 로컬 임시 디렉토리 준비 ===
rm -rf "$TEMP_DIR"
mkdir -p "$TEMP_DIR"

# === 2. .csv 파일 수집 ===
echo "🔍 .csv 파일을 수집 중..."
cd "$SOURCE_DIR" || { echo "❌ SOURCE_DIR 진입 실패"; exit 1; }

CSV_FILES=$(find . -type f -iname "*.csv")

if [ -z "$CSV_FILES" ]; then
  echo "⚠️ .csv 파일을 찾을 수 없음"
  exit 1
fi

echo "📄 복사할 파일:"
echo "$CSV_FILES"

# === 3. 파일 복사 (디렉토리 유지, 공백 대응) ===
while IFS= read -r file; do
  src="$SOURCE_DIR/$file"
  dest="$TEMP_DIR/$file"
  echo "➡️ $src → $dest"
  mkdir -p "$(dirname "$dest")"
  cp "$src" "$dest"
done <<< "$CSV_FILES"

# === 4. 압축 ===
cd "$TEMP_DIR" || exit 1
tar -czf "$PROJECT_ROOT/$ARCHIVE_NAME" .

# === 5. 서버로 전송 ===
echo "🚀 서버로 전송 중..."
scp "$PROJECT_ROOT/$ARCHIVE_NAME" $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/

# === 6. 서버에서 압축 해제 ===
echo "🧨 서버에서 기존 csvs 폴더 삭제 후 압축 해제 중..."
ssh $REMOTE_USER@$REMOTE_HOST <<EOF
  rm -rf $REMOTE_TARGET_DIR
  mkdir -p $REMOTE_TARGET_DIR
  tar -xzf $REMOTE_DIR/$ARCHIVE_NAME -C $REMOTE_TARGET_DIR
  rm -f $REMOTE_DIR/$ARCHIVE_NAME
  echo "✅ 서버 처리 완료: $REMOTE_TARGET_DIR 재생성됨"
EOF

# === 7. 로컬 정리 ===
rm -rf "$TEMP_DIR"
rm -f "$PROJECT_ROOT/$ARCHIVE_NAME"

echo "🎉 모든 작업 성공적으로 완료!"