심볼릭 링크에서 복사할 때 GNU cp의 기본 동작은 무엇입니까?

심볼릭 링크에서 복사할 때 GNU cp의 기본 동작은 무엇입니까?

누군가 이것에 대해 자세히 설명해 주시겠습니까?공식문서에 이런 설명이 있습니다?

심볼릭 링크에서 복사할 때 cp는 일반적으로 재귀적으로 복사하지 않거나 --link(-l)가 사용되는 경우에만 링크를 따릅니다.

답변1

심볼릭 링크가 있다고 가정합니다 foo/bar -> baz.

% mkdir foo
% ln -s baz foo/bar
% tree foo
foo
└── bar -> baz

1 directory, 1 file

직접 복사하는 경우 foo/baz대상 cp은 기호 링크를 따라 복사됩니다.

% cp foo/bar .
cp: cannot stat 'foo/bar': No such file or directory

여기서는 재귀 복사를 통해 도달 cp하지 않으므로 foo/bar대상 파일이 복사됩니다.

대신, 재귀를 복사 foo하고 지시 하면 cp대상이 아닌 심볼릭 링크 자체가 복사됩니다.

% cp -r foo foo2
% tree foo2
foo2
└── bar -> baz

1 directory, 1 file

재귀적으로 복사하려고 시도하면서 이 -l옵션 도 설정하면 cp다음 심볼릭 링크가 다시 시도됩니다.

% cp -rl foo bar3
cp: cannot stat 'foo/bar': No such file or directory

관련 정보