심볼릭 링크 불확실성

심볼릭 링크 불확실성

빠른 검색을 수행했지만 이 시나리오에 대한 특정 정보를 찾을 수 없습니다.

디렉터리가 있고(경로를 무시하자) 이름을 A로 지정한다고 가정해 보겠습니다. 이제 디렉터리 A(S라고 함)를 가리키는 심볼릭 링크를 만듭니다. 이제 다음이 필요합니다.

S -> A

다른 디렉터리가 있는 경우 B라고 말하고 다음을 수행해 보겠습니다.

cp -r B/ A/

심볼릭 링크가 유지되나요, 아니면 끊어지나요? bash 명령을 사용하지 않고 python distutils.dir_utils.copytree(B, A)를 사용한다고 가정해 보겠습니다. 심볼릭 링크 S가 여전히 A를 가리킬까요? A는 A로 남을 것인가, 아니면 B가 될 것인가?

답변1

명령줄에서 이를 상당히 쉽게 테스트할 수 있습니다.

# set up test
mkdir A
mkdir B
echo "this is A" > A/test.txt
echo "this is B" > B/test.txt
echo "this is A" > A/old.txt
echo "this is B" > B/new.txt

# contents of A change on copy
ln -s A S
cat S/test.txt
cp -r B/ A/
cat S/test.txt
cat A/test.txt

# S still points to A
ls -l S/
ls -l A/
ls -l B/

B의 파일을 볼 수 있듯이 A의 파일을 덮어쓰면 A와 S 모두에 영향을 미칩니다. 그러나 A에서 파일을 복사하면 A와 B 사이에 고유한 이름을 가진 파일이 남게 됩니다.S는 여전히 A를 가리키지만 A는 변경되었습니다..

기호 링크는 경로를 가리킵니다. 예를 들어 A를 삭제하고 S를 유지하는 경우 S는 더 이상 존재하지 않는 A를 계속 참조합니다.

rm -rf A/
ls -l S/

이제 A라는 텍스트 파일을 생성하면 S는 여전히 경로 A를 가리키기 때문에 텍스트 파일을 가리킵니다. Kusalananda와 G-Man이 말했듯이 A에게 하는 일은 S에 영향을 미치지 않습니다. 아니면 좀 더 구체적으로당신이 A에게 한 일은 S가 A를 가리킨다는 사실에 영향을 미치지 않습니다..

echo "new text file" > A
cat S

답변2

심볼릭 링크가 가리키는 경로입니다 S. 명령이 수행하는 대상에 파일을 복사해도 이 링크에는 영향을 미치지 않습니다.AAA

어떤 이유로든 이름을 바꾸거나 삭제하면 A심볼릭 링크가 S깨져 사용할 수 없게 됩니다. 그런 다음 A이전 디렉토리와 동일한 위치에 호출되는 다른 디렉토리(예: 새 디렉토리)를 생성하면 A해당 S콘텐츠에 대한 심볼릭 링크가 생성됩니다.

기호 링크는 S디렉토리와 완전히 별개입니다 A. 그 자체로는 그것이 존재하는지, 파일인지, 디렉토리인지, 아니면 다른 것인지는 S상관하지 않습니다 . A당신이 무엇을 하든 A그럴 것이다아니요영향 S.

심볼릭 링크 역참조 동작 S(예: 심볼릭 링크 사용, 예: 실행 )은 해당 내용 (존재하는 경우, 디렉토리인 경우 등) ls S에 따라 결과가 달라집니다.A

답변3

S.txt(별도의 디렉터리에)라는 파일이 있다고 상상해 보세요 .

당신이 찾고 있는 정보는 디렉토리에 있습니다 A.

디렉토리에 수행하는 작업의 영향을 받지 않습니다 A.

심볼릭 링크는 이와 매우 유사합니다. 심볼릭 링크는 대상에 수행하는 작업의 영향을 받지 않습니다.

관련 정보