cp -f는 cp --remove-destination과 어떻게 다릅니까?

cp -f는 cp --remove-destination과 어떻게 다릅니까?

cp 맨페이지에는 -f/--force 옵션이 다음과 같이 나열되어 있습니다. 기존 대상 파일을 열 수 없으면 해당 파일을 제거하고 다시 시도하십시오.

--remove-destination 옵션의 경우 다음과 같이 표시됩니다. 열려고 시도하기 전에 기존 대상 파일을 각각 제거하십시오(--force와 대조).

따라서 전자는 먼저 열 수 있는지 확인하고 그렇지 않은 경우 어쨌든 삭제하는 반면 후자는 해당 단계를 우회합니다. 각각을 -i 옵션과 결합했는데 두 경우 모두 쓰기 금지된 경우 파일의 권한이 무엇인지 나타냅니다.

특히 큰 디렉토리를 반복적으로 복사/덮어쓰는 경우 후자가 더 효율적으로 보이지만 두 옵션을 모두 유지하는 이유는 무엇입니까? 어쨌든 무시할 것을 확인하면 어떤 이점이 있습니까?

답변1

둘 사이에는 차이점이 있습니다 (강조).

만약에기존 대상 파일을 열 수 없습니다. 해당 파일을 제거한 후 다시 시도하세요.
기존 대상 파일을 각각 제거하세요.열려고 하기 전에

첫 번째 경우, 파일을 열 수 있으면 cp내용만 바꾸려고 시도합니다. cp불필요하게 파일을 제거하지 않을 것입니다. 원본 파일도 복사되도록 지정하지 않는 한 원본 파일의 권한과 소유권이 유지됩니다.

두 번째 경우는 내용을 읽을 수 없을 때 유용합니다(예:매달린 심볼릭 링크).

답변2

및: 대상 파일에 여러 링크(하드링크)가 있는 경우 --remove-destination은 다른 링크의 내용을 삭제하지 않습니다. 대신 대상의 링크만 제거되고(이제 우리는 더 깊은 시스템 기능에서 "제거"를 "링크 해제"라고 부르는 이유를 알고 있습니다) 새 inode가 있는 새 파일이 생성됩니다.

관련 정보