cp opções --no-clobber vs. --update

0

Eu quero copiar um único arquivo se (e somente se) o destino não existir. O arquivo de origem muda raramente, talvez uma vez por mês. O destino quase nunca existe.

Existe alguma diferença entre as opções -n e -u ? (Ou os dois!)

cp está sendo chamado diretamente de crond . Nenhuma outra opção cp é usada.

O mesmo trabalho cron é chamado em várias máquinas ao mesmo tempo, lendo da mesma origem e gravando no mesmo destino (ambos em um sistema de arquivos global GFS compartilhado). O arquivo de destino será movido logo em seguida por outro processo, portanto, o único momento em que ele pode existir é durante a corrida, quando a tarefa cron é executada simultaneamente em vários nós.

Qual seria mais eficiente? :

  • cp -n source dest
  • cp -u source dest
  • cp -nu source dest
  • cp -pu source dest

Atualmente estou inclinado para a alternativa simples -n .

    
por MattBianco 04.05.2015 / 13:14

1 resposta

3

Não faz sentido combinar -n e -u .

Use -n se você nunca quiser substituir um arquivo existente.

Use -u se você não quiser sobrescrever os arquivos mais recentes.

O caso em que os dois diferem é quando você tem um arquivo de destino que é mais antigo que o arquivo de origem. Considere o que você quer que aconteça neste caso e escreva seu comando de acordo.

Espero que -n seja mais eficiente que -u - mas é improvável que o efeito seja mensurável.

(Acima, 'mais antigo', 'mais recente' etc. são todos em termos do mtime dos arquivos.

    
por 04.05.2015 / 17:54