링크가 많은 폴더가 있습니다.
폴더 내에서 링크를 이동할 수 있고 여전히 동일한 데이터를 가리킬 수 있도록 이러한 링크를 절대적으로 만들었습니다. 폴더로 이동하면 상대 링크가 끊어집니다.
그런데 폴더를 외장하드나 서버 등 다른 시스템으로 옮기면 문제가 발생합니다. 그러면 모든 절대 링크의 주소 기반이 잘못되었습니다.
링크가 가리키는 주소에 변수를 포함하도록 만들면 이 문제를 해결할 수 있습니다.
그게 가능합니까?
답변1
귀하의 질문에 대한 대답은 다른 심볼릭 링크인 것 같습니다. 비록 제가 아는 한 심볼릭 링크는 DragonFlyBSD에만 존재합니다(이전 질문 참조:동적 심볼릭 링크)
답변2
주문하다
symlinks -cr folder
모든 절대 기호 링크를 folder
상대 기호 링크로 변환합니다. 따라서 올바른 상대 위치를 가리키는 링크를 사용하여 전체 폴더를 이동할 수 있습니다(모두 의 다른 파일을 가리킨다고 가정 folder
).
그러다가 마치...
find folder -type l -exec echo 'LNK=$(readlink -f "{}");rm -fv "{}";ln -sv "$LNK" "{}"' ';' > xlinks
chmod +x xlinks
./xlinks
...모든 링크를 상대 링크에서 절대 링크로 변환합니다.
(참고: 실행 명령에서 직접 수행하는 것을 포기했습니다 find
. 그럼에도 불구하고 이것이 무엇을 할지 확인할 수 있는 기회를 제공합니다!)
답변3
케이크를 갖고 있으면서도 먹을 수는 없습니다. 상대 링크는 일반적으로 이동하고 트리 전체 또는 일부를 다른 위치로 복사할 수 있기 때문에 더 좋습니다.
계층 구조에서 파일을 이동하면 무엇인지 명확하지 않습니다.~해야 한다발생: 링크가 있고 을 실행 a -> b
하면 을 가리켜 야 합니까 ? 그것은 당신에게 달려 있습니다. 기호 링크는 위치를 가리킵니다. 파일을 가리키려면 하드 링크를 사용하십시오(디렉토리에서는 불가능합니다).c -> d
mv b d
a
d
파일을 이동했지만 여전히 이전 위치에서 해당 파일을 찾으려면 이전 위치에서 새 위치로 심볼릭 링크를 추가하세요.