cp -s의 목적은 무엇입니까?

cp -s의 목적은 무엇입니까?

이 질문에 대한 대답에서 알 수 있듯이, cp -l 또는 ln을 사용한 하드링크 사이에 차이가 있습니까?

cp 명령에 -l 옵션을 생성하는 목적은 디렉터리(내용)를 반복적으로 하드 링크하는 것입니다. -s 옵션은 이에 대응하는 옵션으로 하드 링크 대신 소프트 링크를 생성하지만 재귀적으로 사용할 수는 없는 것으로 보입니다.

그렇게 하려고 하면 다음과 같은 오류 메시지가 나타납니다.

cp: `source_dir/source_file': can make relative symbolic links only in current directory

아마도 이것은 배포판에 따라 다릅니다. Ubuntu 12.04에서는 이것이 결과입니다. 원본 파일과 링크가 동일한 디렉토리에 있는 경우에만 작동합니다.

아마도 구문이 올바르지 않습니까? cp -rs target_directory destination_directory내가 사용한 것입니다.

예:

$ ls sourcedir/             
-rw-rw---- 1 user group 1123 Jan  8 23:10 source_file
$ cp -rs sourcedir/ targetdir/
cp: `targetdir/sourcedir/source_file': can make relative symbolic links only in current directory

답변1

소스 디렉터리의 절대 경로가 주어지면:

cp -rs $PWD/sourcedir/ targetdir/

그러면 의 심볼릭 링크에는 targetdir에 대한 절대 경로가 포함됩니다 sourcedir.

그렇지 않고 방금 심볼릭 링크를 만들었다면 다음과 같은 결과가 생성될 것입니다.

targetdir/filename -> sourcedir/filename

그러나 원본 파일을 찾는 올바른 상대 경로는 아닙니다. 다음과 같아야 합니다.

targetdir/filename -> ../sourcedir/filename

cp적절한 수의 접두사를 추가할 수 있도록 소스 및 대상 디렉터리가 서로 어떻게 관련되어 있는지 파악하려고 시도하지 않습니다 ../.

관련 정보