유닉스, 리눅스에서는 디스크를 관리하고 파일을 다루는 파일 시스템에서 Windows와 큰 차이가 있습니다. 자세한 개념을 설명하려면 몇 개의 포스팅이 별도로 필요합니다. 그렇지만 상황에 따라서 디스크 용량이나 파티션 등의 이유로 서로 다른 드라이브의 공간을 로컬 폴더인 것처럼 사용하고 싶을 때가 있습니다.
좀 더 풀어서 설명하면 디스크를 우선하는 Windows에서 C 드라이브의 용량이 부족해서 D 드라이브의 공간을 마치 C 드라이브를 접근하는 것처럼 사용할 수 있는 방법이 있습니다. 몇 가지 방법이 있지만 논리적인 링크인 심볼릭 링크(Symbolic Link)를 사용해서 다른 디스크의 폴더(물론 같은 디스크의 폴더도 사용 가능)를 자신이 원하는 곳에 폴더로 생성하고 접근할 수 있습니다.
저도 대략적으로 이해하고 있다가 이번 포스팅을 위해 좀 검색해서 찾아보니, 꽤 오래 전인 2013년에 포스팅한 글 입니다만, 개념과 실제 테스트를 통해 잘 정리된 포스팅이 있어서 링크를 함께 첨부합니다.
심볼릭 링크를 생성하는 방법은 간단합니다.
CLI(Commnad Line Interface), cmd창에서 mklink 명령을 사용하면 됩니다.
/? 를 사용하면 도움말을 볼 수 있습니다만, 개념이 부족하면 이해하기는 어려울 수도 있습니다.
여기서는 심볼릭 링크를 만들 기 때문에 /d 옵션을 사용합니다.
좀 더 자세한 개념은 위에 첨부한 링크의 포스팅을 찬찬히 읽어보면 이해하기 쉽습니다. 이 개념은 유닉스 계열의 OS에서도 사용하고 있으므로 시간이 되시면 꼭 읽어보기를 추천드립니다.
실제 심볼릭 링크 생성 예제입니다.
한글에서는 기호화된 링크라고 번역이 되어 나옵니다.
> mklink /d [자신이 생성하고자 하는 경로(폴더)] [대상경로(폴더)]
프로그램 개발 중에 upload 폴더를 지정하였지만, tomcat에서 연동하고 있는 경로에서 조회가 안됩니다. 저는 이 문제를 심볼릭 링크를 사용하여 처리했습니다.
이 방법은 로컬 머신에서 이클립스 등의 IDE를 통해 개발하는 시스템에서는 Build Clean을 할 경우 해당 폴더가 모두 삭제되므로 다시 링크를 생성하는 번거로움은 있지만, 서비스 중인 시스템에서는 가끔 디스크 문제를 해결하기 유용한 방법이 되기도 합니다.
나중에 SPRING에서 Configuration을 통해 처리하는 방법을 찾기는 했습니다만 프로그램에서 별도의 설정이 없이 해결할 수 있는 방법이기도 하니 알아두면 좋습니다. ^-^:
d:\upload에 profile 이미지를 업로드했고, 이를 참조하기 위해서 static 폴더에 심볼릭 링크를 profileimg라는 이름으로 생성했습니다.
위와 같이 생성된 폴더를 볼 수 있으며 폴더의 속성은 아래와 같습니다.
조금 길게 설명했다는 생각도 듭니다만, 심볼릭 링크는 디스크와 상관없이 특정 대상 폴더(디렉터리)를 자신이 원하는 폴더(디렉터리)에 링크로 생성하여 바로 사용할 수 있는 방법입니다.
개념을 정리해 두면 프로그래밍으로 해결하지 못할 수 있는 경로 문제를 손쉽게 해결할 수 있는 방법이기도 합니다.
'Dev. Cookbook > Spring, Spring Boot' 카테고리의 다른 글
[JUnit] MockitoAnnotations.initMocks is Deprecated (0) | 2022.12.13 |
---|---|
[Spring Boot] LocalDateTime 입출력 시 JSON 변환 방법 (0) | 2022.12.06 |
[Thymeleaf] 단순 텍스트 출력 - text, utext (0) | 2022.11.15 |
댓글