Gostaria de copiar um conjunto de arquivos do diretório A para o diretório B, com a ressalva de que, se um arquivo no diretório A for idêntico a um arquivo no diretório B, esse arquivo não deverá ser copiado (e, portanto, seu tempo de modificação não deverá ser Atualizada). Existe uma maneira de fazer isso com as ferramentas existentes, sem escrever meu próprio script para fazer isso?
Para elaborar um pouco do meu caso de uso: estou gerando automaticamente vários .c
arquivos em um diretório temporário (por um método que precisa gerar todos eles incondicionalmente) e, quando eu os gerar novamente, gostaria de copiar apenas os que foram alterados para o diretório de origem real, deixando os inalterados intocados (com seus antigos tempos de criação), para que make
saibam que não é necessário recompilá-los. ( .c
Porém, nem todos os arquivos gerados são arquivos, portanto, preciso fazer comparações binárias em vez de comparações de texto.)
(Como uma observação: isso surgiu da pergunta que fiz em https://stackoverflow.com/questions/8981552/speeding-up-file-comparions-with-cmp-on-cygwin/8981762#8981762 , onde estava tentando para acelerar o arquivo de script que eu estava usando para fazer essa operação, mas me ocorre que eu realmente deveria perguntar se há uma maneira melhor de fazer isso do que escrever meu próprio script - especialmente porque existe uma maneira simples de fazer isso em um shell O script invocará algo como cmp
em cada par de arquivos e iniciar todos esses processos leva muito tempo.)
rsync -avnc
ou o longo caminho rsync --archive --verbose --dry-run --checksum
.
diff -qr dirA dirB
para ver quais arquivos são exclusivosdirA
edirB
, respectivamente.