cp -f와 cp --remove-destination의 차이점은 무엇입니까?

cp -f와 cp --remove-destination의 차이점은 무엇입니까?

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

--remove-destination 옵션의 경우 이는 다음을 의미합니다. 기존 대상 파일을 열기 전에 각각 제거합니다(--force와 대조).

따라서 전자는 먼저 열 수 있는지 확인하고 열 수 없으면 어쨌든 삭제하고, 후자는 해당 단계를 건너뜁니다. 각 옵션을 -i 옵션과 결합했는데, 두 경우 모두 파일이 쓰기 금지되어 있는 경우 권한을 나타냅니다.

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

답변1

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

만약에기존 대상 파일을 열 수 없습니다. 해당 파일을 삭제하고 다시 시도하십시오.
기존 대상 파일을 각각 삭제하십시오.열려고 하기 전에

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

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

답변2

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

관련 정보