¿Cómo es cp -f diferente de cp – eliminar destino?

en la página de manual de cp, enumera la opción de fuerza -f / – como: si no se puede abrir un file de destino existente, quítelo e intente de nuevo

para la opción –remove-destination dice: eliminar cada file de destino existente antes de intentar abrirlo (contraste con –force)

Por lo tanto, el primero primero comtesting si se puede abrir, si no, elimina de todos modos, mientras que el segundo simplemente pasa por alto ese paso. Combiné cada uno con la opción -i, y en ambos casos, indica cuáles son los permissions de los files si está protegido contra escritura.

Este último parecería ser más eficiente, especialmente si copy repetidamente / sobrescribe directorys grandes, pero ¿por qué mantener ambas opciones? ¿Cuál es la ventaja de comprobar algo que se anulará de todos modos?

Hay una distinción entre los dos (el énfasis es mío):

si no se puede abrir un file de destino existente, quítelo e intente de nuevo
eliminar cada file de destino existente antes de intentar abrirlo

En el primer caso, si el file se puede abrir, cp intentará replace solo el contenido. cp no va a eliminar el file innecesariamente. Esto retendrá los permissions y las properties del file original a less que especifique que también se copyrán.

El segundo caso es útil cuando el contenido no se puede leer (como enlaces simbólicos colgantes ).

y: en caso de que el file de destino tenga múltiples enlaces (enlaces duros), –remove-destination no destruirá el contenido de los otros enlaces. En su lugar, solo se elimina el enlace del destino (ahora sabemos, por qué "eliminar" se llama "desvincular" en funciones más profundas del sistema) y se crea un nuevo file con un nuevo inodo.