fix(deploy): chown silent failure 제거 + 에러 로그 출력

- 2>/dev/null || true 조합이 Synology ACL 실패를 완전히 숨겨
  신규 생성 디렉토리가 root:root로 남는 문제 해결
- chown/chmod 실패 시 WARN 로그 출력 및 CHOWN_FAILED 플래그
- trailing slash 제거로 디렉토리 자체도 재귀 chown 대상에 포함

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-13 01:51:41 +09:00
parent 86e7f727eb
commit 6e18782d3b

View File

@@ -63,12 +63,27 @@ rsync -rl --no-owner --no-group "$SRC/docker-compose.yml" "$DST/docker-compose.y
} }
# 파일 권한 설정 — bgg8988:users 755 # 파일 권한 설정 — bgg8988:users 755
# 에러는 로그로 남기되 배포는 계속 (Synology ACL 이슈가 있어도 서비스 자체는 동작)
echo "Setting ownership ${DEPLOY_USER}:${DEPLOY_GROUP} and mode ${DEPLOY_MODE}..." echo "Setting ownership ${DEPLOY_USER}:${DEPLOY_GROUP} and mode ${DEPLOY_MODE}..."
CHOWN_FAILED=0
for dir in $SERVICES; do for dir in $SERVICES; do
chown -R "${DEPLOY_USER}:${DEPLOY_GROUP}" "$DST/$dir/" 2>/dev/null || true # 디렉토리 자체 + 내부 항목 모두 재귀 chown (trailing slash 제거)
chmod -R "$DEPLOY_MODE" "$DST/$dir/" 2>/dev/null || true 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 done
chown "${DEPLOY_USER}:${DEPLOY_GROUP}" "$DST/docker-compose.yml" 2>/dev/null || true if ! chown "${DEPLOY_USER}:${DEPLOY_GROUP}" "$DST/docker-compose.yml"; then
chmod "$DEPLOY_MODE" "$DST/docker-compose.yml" 2>/dev/null || true 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" echo "SYNC_OK"