cp: 소스와 대상이 동일한 경우 오류 방지

cp: 소스와 대상이 동일한 경우 오류 방지

다음 오류가 보고되지 않도록 cp(GNU coreutils)에 지시할 수 있습니까?

$ echo 1 > foo
$ cp foo foo

현재 보고서에는 다음과 같이 명시되어 있습니다.

cp: 'foo' and 'foo' are the same file

이는 매우 합리적이지만 항상 틀린 것은 아닙니다. 개념적으로, $source에서 으로 파일을 복사하는 경우 $dest이미 해당 디렉터리에 있으면 $dest기본적으로 복사가 이미 구성을 통해 수행된 것입니다.상황에 따라 다름, 이것이 반드시 오류로 보고되는 것은 아닙니다. 매뉴얼 페이지에서 관련된 내용을 찾을 수 없습니다. 이 --update옵션은 작동할 것 같지만 작동하지 않습니다.

분명히 여러 가지 방법으로 이 문제를 해결할 수 있지만 cp가 즉시 이 문제를 해결할 수 있는지 궁금합니다.

답변1

이는 GNU coreutils(coreutils 8.27부터 시작)에서는 불가능합니다. 이는 문서에 언급되지 않았으며소스 코드문서화되지 않은 방법은 표시되지 않습니다. 동일한 파일성 테스트는 하드 링크가 만들어졌거나 파일이 동일한 대상을 가리키는 심볼릭 링크인 특정 경우에만 허용됩니다.

Rsync는 이를 허용하므로 간단한 해결책 rsynccp.

관련 정보