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
-n
disables the actual creation or modification of files, and (depending on the level of verboseness) shows the effect which thecopy
command would have.-u
copies files only if their size or modification date differs, and links only if the link-text differs.-U
copies 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.