# 260307 외부 NAS -> 내부 NAS 컴퍼니엑스 동기화 리서치 tags: [nas, companyx, sync, research] 상위 원칙: - [Writing Principles](https://github.com/happybell80/0_VALUE/blob/main/02_Governance/writing-principles.md) - [Infra Project Identity](../../00_Philosophy/00_IDENTITY/Infra_Project_Identity.md) - [Core Infrastructure Principles](../../00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md) ## 목적 - 아이디어 문서 [260307_external_nas_companyx_sync_아이디어.md](../ideas/260307_external_nas_companyx_sync_아이디어.md)의 핵심 질문, 즉 `외부 NAS 파일을 내부 NAS로 단방향 동기화하고 서버는 내부 NAS만 사용`하는 구조가 실제 운영 후보가 될 수 있는지 확인한다. - 이 문서는 구현 방법을 확정하는 문서가 아니라, 확인된 사실과 미확정 항목을 분리해 다음 `plans` 문서가 무엇을 고정해야 하는지 좁히는 것을 목표로 한다. ## 리서치 질문 1. 외부 NAS 파일을 현재 환경에서 51123 내부 NAS 경로로 실제 가져올 수 있는가 2. 외부 NAS를 서버가 직접 읽지 않고도 필요한 파일 접근 구조를 만들 수 있는가 3. 외부 NAS `/6.Company X` 전체를 내부 NAS `/mnt/nas/workspace/6.Company X`로 가져오는 구조를 운영 후보로 볼 수 있는가 4. 현재 시점에서 이미 운영 후보로 볼 수 있는 방식과, 아직 결정할 수 없는 항목은 무엇인가 ## Facts ### 1. 내부 NAS 기준 경로는 이미 복구되어 있다 - 51123의 내부 NAS 기준 경로는 `/mnt/nas`다. - 내부 NAS 주소는 `192.168.0.101`이다. - `/mnt/nas`는 실제 CIFS(Common Internet File System) 마운트로 복구됐고, 쓰기 검증까지 끝났다. - `/mnt/nas/workspace/6.Company X` 경로가 실제 생성되어 있다. 근거: - [260307_NAS_192_168_0_101_SSOT_전환_및_CIFS_실마운트_복구.md](../troubleshooting/260307_NAS_192_168_0_101_SSOT_전환_및_CIFS_실마운트_복구.md) ### 2. 외부 NAS의 직접 SMB(Server Message Block) 접근은 현재 경로가 아니다 - 외부 NAS `sigongipc.synology.me:5000/5001`는 Synology DSM(DiskStation Manager) 웹 경로로 응답한다. - 외부 SMB `139/445` 직접 접근은 타임아웃으로 막혀 있다. - 따라서 현재 확인된 외부 접근 경로는 DSM File Station API다. 근거: - [260307_external_nas_to_internal_nas_sync_probe.md](../../260307_external_nas_to_internal_nas_sync_probe.md) ### 3. 외부 NAS -> 내부 NAS 파일 전송은 실제로 1회 이상 검증됐다 - 외부 NAS 경로 `/6.Company X/Thumbs.db`를 내부 NAS 경로 `/mnt/nas/backup/current/external-nas-test/Thumbs.db`로 저장했다. - 저장 후 SHA256 해시 일치가 확인됐다. - 외부 NAS 상위 폴더 구조 일부도 내부 NAS에 동일하게 생성됐다. - 다만 현재 검증 경로는 `/mnt/nas/backup/current/external-nas-test/...`였고, 목표 운영 경로 `/mnt/nas/workspace/6.Company X`로의 전체 동기화는 아직 실행되지 않았다. 근거: - [260307_external_nas_to_internal_nas_sync_probe.md](../../260307_external_nas_to_internal_nas_sync_probe.md) ### 4. 2026-03-07 실측에서는 파일 다운로드와 내부 NAS 저장 시간이 짧았다 실행 기준: - 스크립트: `infra/scripts/bin/companyx_external_nas_sync_probe.sh` - 실행 시각: 2026-03-07 16:22 KST - 테스트 저장 경로: `/mnt/nas/backup/current/external-nas-timing-test/20260307_162237` 실측값: - DSM 로그인: 약 `0.683초` - 상위 폴더 목록 조회(`/6.Company X`): 약 `0.067초` - 사진 하위 폴더 목록 조회: 약 `0.061초` - `Thumbs.db` `12,288B`: 약 `0.094초` - 엑셀 `151,832B`: 약 `0.103초` - JPG `457,889B`: 약 `0.121초` - PDF `20,147,273B`: 약 `0.571초` 근거: - 기존 리서치 초안의 2026-03-07 실측 기록 ### 5. 2026-03-11 기준 목표 운영 경로 샘플 동기화도 성공했다 - 실행 시각: `2026-03-11 18:24:47 KST` - 목표 경로 `/mnt/nas/workspace/6.Company X/Thumbs.db`로 외부 NAS `/6.Company X/Thumbs.db`를 직접 내려받았다. - 파일이 실제 생성됐고, 같은 시각 프로브 경로에 저장한 파일과 SHA256 해시가 일치했다. 검증값: - `/mnt/nas/workspace/6.Company X/Thumbs.db` - SHA256: `d858dd42f76a21f74cb2c1de0de55379de5cbb6deb2ac1805181e35c8971e346` ### 6. 2026-03-11 기준 대표 하위 폴더 전체 동기화도 성공했다 - 대상 폴더: `/6.Company X/7. 사진/220308_X코스_5기 발표 사진` - 내부 NAS 목표 경로: `/mnt/nas/workspace/6.Company X/7. 사진/220308_X코스_5기 발표 사진` - 결과: 파일 `20개`, 총 `6,505,335B` 동기화 - 소요 시간: 약 `2.907초` 해석에 필요한 사실: - 샘플 1건이 아니라, 실제 하위 폴더 1개 전체 파일 집합도 목표 운영 경로로 내려받을 수 있었다. - 이 시점 검증 기준으로는 대표 사진 폴더 1개 전체 동기화가 실패 없이 끝났다. ### 7. 2026-03-11 기준 재실행 시 같은 크기 파일은 모두 건너뛸 수 있었다 - 같은 대표 폴더를 다시 점검했다. - 확인 파일 수: `20개` - 같은 크기로 이미 존재해 재다운로드 불필요 판정된 파일: `20개` - 다시 받아야 하는 파일: `0개` - 점검 시간: 약 `0.0142초` 주의: - 이 검증은 현재 `파일 크기 동일` 기준의 단순 건너뛰기 가능성만 확인한 것이다. - 수정시각이나 해시까지 포함한 최종 증분 정책이 확정된 것은 아니다. ### 8. 인증서 문제는 아직 남아 있다 - 외부 DSM HTTPS 인증서는 만료 상태였다. - 실제 인증서 정보: - `notAfter=Dec 17 03:05:26 2021 GMT` - `subject=CN = tnsipc.synology.me` - 현재 접속 호스트는 `sigongipc.synology.me`이므로, 만료뿐 아니라 호스트명 불일치도 있다. - 현재 스크립트는 `-k` 옵션으로 인증서 검증을 우회했다. 근거: - 기존 리서치 초안의 2026-03-07 실측 기록 ## Interpretation ### 1. 아이디어의 핵심 구조 자체는 이미 성립 가능성이 높다 - 외부 NAS 직접 SMB 접근이 막혀 있어도, DSM API를 통해 파일을 내려받아 내부 NAS에 저장하는 경로는 실제로 동작했다. - 따라서 `외부 NAS를 서버가 직접 마운트해서 읽는다`가 아니라 `외부 NAS에서 파일을 가져와 내부 NAS에 적재한 뒤 서버는 내부 NAS만 읽는다`는 구조는 현재 환경과 충돌하지 않는다. - 목표 경로 `/mnt/nas/workspace/6.Company X`에도 샘플 파일 직접 동기화와 해시 일치가 확인됐으므로, 이 경로 자체도 단순 가정이 아니라 실제 동작 경로다. - 대표 하위 폴더 1개 전체 동기화도 성공했으므로, `단일 파일 가능` 수준을 넘어 `실제 폴더 단위 동기화 가능`까지는 확인됐다. ### 2. 지금 닫을 수 있는 질문과 아직 닫을 수 없는 질문을 구분해야 한다 지금 닫을 수 있는 질문: - 외부 NAS 파일을 내부 NAS로 가져올 수 있는가: 예 - 내부 NAS를 서버 측 기준 저장소로 삼을 수 있는가: 예 - 외부 NAS를 서버 런타임 경로에서 분리하는 구조가 가능한가: 예 - `/6.Company X`를 내부 NAS `/mnt/nas/workspace/6.Company X`로 받는 구조가 가능한가: 예, 샘플 파일 직접 동기화와 해시 일치까지 확인 - 대표 하위 폴더 1개를 실제로 끝까지 받을 수 있는가: 예, 20개 파일 전체 동기화 확인 - 같은 경로 재실행 시 단순 증분 건너뛰기 후보를 만들 수 있는가: 예, 크기 기준으로는 20/20 건너뛰기 확인 아직 닫을 수 없는 질문: - 어떤 동기화 정책이 최종 운영안인가 - `/6.Company X` 전체 폴더 재귀 동기화에서 총 소요 시간과 실패율이 어느 정도인가 - 삭제 전파, 수정시각 역전, 해시 재검증을 포함한 최종 증분 규칙을 무엇으로 확정할 것인가 ### 3. 이 아이디어는 이제 `가능한가` 단계는 통과했고, `어떻게 운영할 것인가` 단계로 넘어갔다 - 이 리서치 기준으로 보면 아이디어 문서의 가설은 부정되지 않았다. - 남은 문제는 아이디어의 존립 여부가 아니라, 운영 정책과 자동화 방식의 확정이다. - 따라서 다음 문서는 새로운 아이디어 문서가 아니라, 운영안을 고정하는 `plans` 또는 그 전 단계 보강 리서치가 맞다. ## Unresolved 1. 동기화 대상 범위 - 현재 아이디어는 `/6.Company X` 전체를 대상으로 하지만, 실제 계획에서 정말 전체를 한 번에 받을지 단계적으로 받을지는 아직 고정되지 않았다. 2. 실패 복구 기준 - 중간 실패 시 어디서부터 재시도할지, 실패 목록을 어떤 파일 형식으로 남길지 정해지지 않았다. 3. 인증서 처리 - `-k` 우회를 계속 허용할지, 외부 DSM 인증서를 별도로 정리할지 결정이 필요하다. 4. 대량 폴더 실측 - 샘플 파일과 대표 하위 폴더 1개는 검증됐다. - 하지만 `/6.Company X` 전체 트리 기준 총 시간, 총 파일 수, 장시간 실행 안정성은 추가 검증이 필요하다. 5. 목표 경로 전체 동기화 검증 - `/mnt/nas/workspace/6.Company X`에 샘플 파일 1건과 대표 하위 폴더 1개는 검증됐지만, `/6.Company X` 전체 파일 트리를 끝까지 동기화하는 검증은 아직 수행되지 않았다. ## 아이디어를 닫는 현재 결론 - `외부 NAS -> 내부 NAS 단방향 동기화 후 서버는 내부 NAS만 사용`이라는 아이디어는 현재 근거 기준으로 **유효한 운영 후보**다. - 대상 경로 `외부 NAS /6.Company X -> 내부 NAS /mnt/nas/workspace/6.Company X`도 샘플 파일 기준으로는 이미 동작이 확인됐다. - 대표 하위 폴더 1개 전체 동기화와 재실행 건너뛰기 후보까지 확인됐으므로, 이 구조는 `아이디어 수준`을 넘어 `부분 운영 검증이 된 구조`로 볼 수 있다. - 사용자 결정 기준으로 증분 정책은 `수정시각 + 파일 크기`, 삭제 전파는 `비활성화`로 방향이 정리됐다. - 즉, 이 아이디어는 `불가능하거나 근거 없는 제안` 상태가 아니라, 실제 검증된 접근 경로가 있는 가설로 닫을 수 있다. - 다만 이 문서만으로 최종 운영안을 확정할 수는 없으므로, 다음 단계는 정책과 적용 순서를 고정하는 `plans` 문서다. ## 다음 단계 1. `plans`에서 먼저 고정할 항목 - 대상 루트 - 실패 기록 방식 - 인증서 처리 방침 2. `plans` 전 추가 검증이 필요하면 좁혀서 할 항목 - `/6.Company X` 전체 트리 1회 동기화 - 수정 파일 1건 발생 상황에서 재실행 검증 - 실패 후 재시도 기준 검증 ## 관련 문서 - 아이디어: [260307_external_nas_companyx_sync_아이디어.md](../ideas/260307_external_nas_companyx_sync_아이디어.md) - 계획: [260311_external_nas_companyx_sync_운영계획.md](../plans/260311_external_nas_companyx_sync_운영계획.md) - 프로브: [260307_external_nas_to_internal_nas_sync_probe.md](../../260307_external_nas_to_internal_nas_sync_probe.md) - 내부 NAS 기준 경로 복구: [260307_NAS_192_168_0_101_SSOT_전환_및_CIFS_실마운트_복구.md](../troubleshooting/260307_NAS_192_168_0_101_SSOT_전환_및_CIFS_실마운트_복구.md) - 관련 리서치: [260307_companyx_mobile_file_portal_research.md](./260307_companyx_mobile_file_portal_research.md)