빠른 검색을 수행했지만 이 시나리오에 대한 특정 정보를 찾을 수 없습니다.
디렉터리가 있고(경로를 무시하자) 이름을 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
. 명령이 수행하는 대상에 파일을 복사해도 이 링크에는 영향을 미치지 않습니다.A
A
A
어떤 이유로든 이름을 바꾸거나 삭제하면 A
심볼릭 링크가 S
깨져 사용할 수 없게 됩니다. 그런 다음 A
이전 디렉토리와 동일한 위치에 호출되는 다른 디렉토리(예: 새 디렉토리)를 생성하면 A
해당 S
콘텐츠에 대한 심볼릭 링크가 생성됩니다.
기호 링크는 S
디렉토리와 완전히 별개입니다 A
. 그 자체로는 그것이 존재하는지, 파일인지, 디렉토리인지, 아니면 다른 것인지는 S
상관하지 않습니다 . A
당신이 무엇을 하든 A
그럴 것이다아니요영향 S
.
심볼릭 링크 역참조 동작 S
(예: 심볼릭 링크 사용, 예: 실행 )은 해당 내용 (존재하는 경우, 디렉토리인 경우 등) ls S
에 따라 결과가 달라집니다.A
답변3
S.txt
(별도의 디렉터리에)라는 파일이 있다고 상상해 보세요 .
당신이 찾고 있는 정보는 디렉토리에 있습니다
A
.
디렉토리에 수행하는 작업의 영향을 받지 않습니다 A
.
심볼릭 링크는 이와 매우 유사합니다. 심볼릭 링크는 대상에 수행하는 작업의 영향을 받지 않습니다.