이전 심볼릭 링크를 다른 위치로 직접 연결

이전 심볼릭 링크를 다른 위치로 직접 연결

예:

다음 명령을 사용하여 /usr/local/bin 폴더에 대한 심볼릭 링크를 만들었습니다.

sudo ln -s ~/Desktop/package/Application/tool1
sudo ln -s ~/Desktop/package/Application/tool2

내 응용 프로그램 폴더(및 모든 해당 도구)를 /package/Application(기본적으로 Users 상위 디렉터리 외부)으로 이동하고 싶습니다. 원래 심볼릭 링크가 새 위치의 해당 도구를 가리키는 것이 가능합니까?

답변1

습관. 심볼릭 링크는 계속해서 같은 위치를 가리키며매달린 심볼릭 링크. 새 위치를 가리키도록 하려면 해당 항목을 삭제하고 올바르게 다시 생성하거나 이중 간접 지정을 수행할 수 있습니다. 도구의 현재 위치에서 새 위치로 심볼릭 링크를 생성하면 /usr/local/bin의 심볼릭 링크가 계속해서 (비록 이번에는 간접적이기는 하지만) 올바른 위치를 가리킵니다.

답변2

사용 중인 파일 시스템이 지원하는 경우다시 연결참조 링크 사용을 고려할 수 있습니다. 그래서 대신:

ln -s oldloc/foo tools/bar
mv oldloc newloc
# oh dear broken link

사용:

cp --reflink=always oldloc/foo tools/bar
# oldloc/foo and tools/bar point to the same disk extents
mv oldloc newloc
# newloc is just a rename so oldloc/foo and tools/bar still point to the same disk extents

아직 몇 가지 주의 사항이 있습니다. "foo"의 새 버전을 설치하면 도구/바가 업데이트되지 않습니다.

이는 대부분의 링크 사용에 있어 주요 문제입니다. 또한 이 재링크는 디렉터리에서는 작동하지 않습니다.

하드 링크 사용을 고려할 수도 있습니다. 하드 링크는 항상 동일한 파일(또는 동일한 기본 디스크 위치)을 가리킵니다.

관련 정보