“mv” versus “cp” em um script bash [closed]

1

Estou tentando criar um script que possa carregar algumas configurações e arquivos em uma placa. Basicamente eu vou mais uma unidade flash no quadro, clique no script. O script irá copiar / mover alguns arquivos para substituir os antigos que estão desatualizados. Um exemplo disso seria eu substituir o /etc/apt/sources.list por um novo para repositórios diferentes. É melhor copiar ou mover um arquivo para esse local para substituí-lo? Eu também estarei instalando o apache2 neste script, em seguida, movendo os diretórios para www e cgi-bin . É melhor copiar ou mover diretórios? Eu também mudarei as permissões.

Basicamente, minha pergunta é: é melhor mover mv ou copiar cp arquivos e diretórios ao lidar com scripts de bash?

    
por Keith 13.10.2014 / 15:49

2 respostas

2

Mova-se se precisar apenas no caminho de destino, copie se precisar em ambos os locais. Não há "insegurança" inerente a mv ou cp e você será desnecessariamente adicionando complexidade (e bugs extremamente prováveis) aos seus scripts se você começar a tentar implementar seu próprio mv .

Para casos especiais, pode haver ferramentas mais adequadas que qualquer uma delas. Por exemplo, se você quiser alterar o proprietário ou o modo ao copiar, há a ferramenta install que faz isso em uma linha, em vez de três.

    
por l0b0 13.10.2014 / 17:58
1

Depende. Em certas situações (geralmente raras), você deve copiar o arquivo para um nome temporário no sistema de arquivos de destino , em seguida, mv para seu nome final, pois a operação mv é atômica em um sistema de arquivos registrados. Se houver alguma chance de o aplicativo tentar ler esse arquivo enquanto você o estiver substituindo, faça isso.

Você especificou que está transferindo o arquivo de um sistema de arquivos diferente (unidade flash). Nesse caso, mv está fazendo um cp implícito & amp; & amp; rm. Se você voltar mais de 20 anos, nem sequer suportaria isso, mas não há razão para ficar preso à história.

    
por Charlie Hedlin 13.10.2014 / 15:56