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적절한 수의 접두사를 추가할 수 있도록 소스 및 대상 디렉터리가 서로 어떻게 관련되어 있는지 파악하려는 시도는 이루어지지 않습니다 ../.

관련 정보