From 6e18782d3b9261dedebc35532d0e05b27361d3e1 Mon Sep 17 00:00:00 2001 From: gahusb Date: Mon, 13 Apr 2026 01:51:41 +0900 Subject: [PATCH] =?UTF-8?q?fix(deploy):=20chown=20silent=20failure=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20+=20=EC=97=90=EB=9F=AC=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 2>/dev/null || true 조합이 Synology ACL 실패를 완전히 숨겨 신규 생성 디렉토리가 root:root로 남는 문제 해결 - chown/chmod 실패 시 WARN 로그 출력 및 CHOWN_FAILED 플래그 - trailing slash 제거로 디렉토리 자체도 재귀 chown 대상에 포함 Co-Authored-By: Claude Opus 4.6 --- scripts/deploy-nas.sh | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/scripts/deploy-nas.sh b/scripts/deploy-nas.sh index e0a23a0..d3a3048 100644 --- a/scripts/deploy-nas.sh +++ b/scripts/deploy-nas.sh @@ -63,12 +63,27 @@ rsync -rl --no-owner --no-group "$SRC/docker-compose.yml" "$DST/docker-compose.y } # 파일 권한 설정 — bgg8988:users 755 +# 에러는 로그로 남기되 배포는 계속 (Synology ACL 이슈가 있어도 서비스 자체는 동작) echo "Setting ownership ${DEPLOY_USER}:${DEPLOY_GROUP} and mode ${DEPLOY_MODE}..." +CHOWN_FAILED=0 for dir in $SERVICES; do - chown -R "${DEPLOY_USER}:${DEPLOY_GROUP}" "$DST/$dir/" 2>/dev/null || true - chmod -R "$DEPLOY_MODE" "$DST/$dir/" 2>/dev/null || true + # 디렉토리 자체 + 내부 항목 모두 재귀 chown (trailing slash 제거) + if [ -e "$DST/$dir" ]; then + if ! chown -R "${DEPLOY_USER}:${DEPLOY_GROUP}" "$DST/$dir"; then + echo "WARN: chown failed for $DST/$dir" + CHOWN_FAILED=1 + fi + chmod -R "$DEPLOY_MODE" "$DST/$dir" || echo "WARN: chmod failed for $DST/$dir" + fi done -chown "${DEPLOY_USER}:${DEPLOY_GROUP}" "$DST/docker-compose.yml" 2>/dev/null || true -chmod "$DEPLOY_MODE" "$DST/docker-compose.yml" 2>/dev/null || true +if ! chown "${DEPLOY_USER}:${DEPLOY_GROUP}" "$DST/docker-compose.yml"; then + echo "WARN: chown failed for $DST/docker-compose.yml" + CHOWN_FAILED=1 +fi +chmod "$DEPLOY_MODE" "$DST/docker-compose.yml" || echo "WARN: chmod failed for docker-compose.yml" + +if [ "$CHOWN_FAILED" = "1" ]; then + echo "NOTE: 일부 파일 소유권 설정 실패. NAS에서 직접 'sudo chown -R ${DEPLOY_USER}:${DEPLOY_GROUP} $DST' 실행 권장" +fi echo "SYNC_OK"