![como cp -f é diferente de cp --remove-destination?](https://rvso.com/image/36049/como%20cp%20-f%20%C3%A9%20diferente%20de%20cp%20--remove-destination%3F.png)
na página de manual do cp, ele lista a opção -f/--force como: se um arquivo de destino existente não puder ser aberto, remova-o e tente novamente
para a opção --remove-destination diz: remova cada arquivo de destino existente antes de tentar abri-lo (contraste com --force)
Assim, o primeiro verifica primeiro se pode ser aberto, caso contrário, exclui de qualquer maneira, enquanto o último apenas ignora essa etapa. Combinei cada um com a opção -i e, em ambos os casos, indica quais são as permissões dos arquivos se estiverem protegidos contra gravação.
Este último parece ser mais eficiente, especialmente se copiar/sobrescrever recursivamente diretórios grandes, mas por que manter ambas as opções? Qual é a vantagem de verificar algo que será anulado de qualquer maneira?
Responder1
Há uma distinção entre os dois (ênfase minha):
seum arquivo de destino existente não pode ser aberto, remova-o e tente novamente
remover cada arquivo de destino existenteantes de tentar abri-lo
No primeiro caso, se o arquivo puder ser aberto, cp
tentará substituir apenas o conteúdo. cp
não vai remover o arquivo desnecessariamente. Isso manterá as permissões e propriedades do arquivo original, a menos que você especifique que eles também serão copiados.
O segundo caso é útil quando o conteúdo não pode ser lido (comolinks simbólicos pendentes).
Responder2
e: caso o arquivo de destino possua vários links (hardlinks), --remove-destination não destruirá o conteúdo dos demais links. Em vez disso, apenas o link do destino é removido (agora sabemos por que "remover" é chamado de "desvincular" em funções mais profundas do sistema) e um novo arquivo com um novo inode é criado.