De acordo com a página de manual ,
-u,--update
copy only when the SOURCE file is newer than the destination file or when the destination file is missing
este é um recurso que combina dois testes, um trivial para implementar em um script ( ausente ) e um que requer algum trabalho ( mais recente ). Você pode criar um script que relate o que é necessário usando comm , diff e test .
Nenhum dos utilitários cp padrão fornece a capacidade de executar uma operação de cópia a seco. Como sugerido, rsync é a maneira de fazer isso com um utilitário comumente disponível. É claro que rsync é normalmente usado para copiar com base em mais critérios do que apenas mais recente ou ausente (tamanho de arquivo e timestamps também são usados). Mas isso pode ser reduzido a fazer apenas cp -u .
Para utilitários não-padrão, há o utilitário copy que escrevi (e, claro, ainda uso) no final dos anos 80. Provavelmente foi inspirado pelo utilitário make , já que a primeira opção que adicionei foi -n .
Para o exemplo dado, seria usado assim:
$ copy -nvU DIRECTORYA/* DIRECTORYB
** copy DIRECTORYA/foo to DIRECTORYB/foo
** 1 file would be copied, 616 bytes
Leitura adicional:
-
copiar - utilitário de cópia de arquivos / diretórios
-ndisables the actual creation or modification of files, and (depending on the level of verboseness) shows the effect which thecopycommand would have.-ucopies files only if their size or modification date differs, and links only if the link-text differs.-Ucopies only files that are newer than the destination, or that do not exist in the destination. -
entrada do changelog de agosto de 1988 :
1988-08-16 * src/copy/src/copy.c: added "-d" and "-n" options.