"파일 경로"를 입력 매개변수로 사용하는 외부 구성을 갖춘 타사 소프트웨어가 있습니다. 불행하게도 이 소프트웨어는 미리 정의된 경로와 제공된 경로를 연결합니다. 예를 들어 'data/images'를 매개변수로 예상하고 '/Users/someuser/work/source/data/images'를 사용합니다. 절대 경로를 지정하고 싶지만 이 소프트웨어에 '/tmp/images'와 같은 경로를 지정하면 존재하지 않는 경로 '/Users/someuser/work/source//tmp/images'가 사용됩니다. '..'와 함께 사용할 수 있는 경로 트릭을 사용하면 소프트웨어가 something
미리 정의된 경로와 연결한 후 절대 경로가 생성되는 소프트웨어를 제공할 수 있습니다. '..'를 사용하면 작동하지만 경로 구성이 정적이고 미리 정의되어 있으므로 그다지 좋은 솔루션은 아닙니다. 경로 소프트웨어 사용은 변경될 수 있습니다.
답변1
/Users/someuser/work/source/XXX
Linux에서는 원하는 곳 어디든 가리킬 수 있는 가능성이 무수히 많습니다 .
심볼릭 링크를 사용하세요 - 다음과 같이 해보세요:
ln -s /wherever/you/want /Users/someuser/work/source/XXX
/Users/someuser/work/source/XXX
디렉토리로 나타나도록 할 것입니다 . 일부 소프트웨어가 그곳으로 이동하거나 파일을 쓰면 결국/wherever/you/want
.에 다른 파일 시스템을 마운트하십시오
XXX
. 즉mount /dev/something /Users/someuser/work/source/XXX
이렇게 하면 애플리케이션이 쓸 디렉토리에 바로 /dev/something 장치를 마운트할 수 있습니다.
"바인드 마운트"를 수행합니다. 즉, (이미 마운트된) 다른 파일 시스템의 일부를 다음에 다시 바인드합니다
XXX
.mount -o bind /wherever/you/want /Users/someuser/work/source/XXX
이는 심볼릭 링크와 매우 유사하게 작동하지만 응용 프로그램에서 감지하기가 훨씬 어렵습니다. 응용 프로그램은 대상 디렉터리가 심볼릭 링크인지 쉽게 확인하고 쓰기를 거부할 수 있지만 바인드 마운트 방법은 일반 디렉터리를 제공하지만 내용은
다음과 같은 Unionfs와 유사한 파일 시스템을 사용하십시오.노동 조합또는aufs- 이 방법으로 "통합"할 수 있습니다. 즉, 한 디렉토리에 여러 파일 시스템을 동시에 마운트할 수 있습니다(예:
XXX
).open()
, 등 의 메서드를 재정의하는 라이브러리와 LD_PRELOAD를 사용하여 몇 가지 트릭을 수행합니다.fopen()
가장 눈에 띄는 것은 다음과 같습니다.퓨즈, 즉, 확인해 보세요.FUSE용 유니온형 파일 시스템.
답변2
(루트) /Users/someuser/work/source/
에 심볼릭 링크를 걸면/
work$ ln -s / source
모든 경로는 루트를 기반으로 합니다.
/Users/someuser/work/source/tmp/images
가리킬 것이다
/tmp/images
당신이 확인할 수있는
work$ ls source/tmp/images