Como adicionar / substituir apenas arquivos modificados / atualizados recursivamente para algumas 2 pastas?

5

Atualmente, faço coisas como:

rm -rf ../../../$CLOUD_INSTALL_SUBDIR/lib_boost
mkdir ../../../$CLOUD_INSTALL_SUBDIR/lib_boost
cp -r ../../../$BOOST_ROOT_DIR/$BOOST_INSTALL_SUBDIR/lib/* ../../../$CLOUD_INSTALL_SUBDIR/lib_boost/

Qual é uma merda ... Então, eu me pergunto como atualizar / remover / adicionar apenas arquivos atualizados entre 2 pastas (em demo, temos a pasta com as últimas coisas ../../../$BOOST_ROOT_DIR/$BOOST_INSTALL_SUBDIR/lib/ e uma pasta com coisas que podem estar desatualizadas ../../../$CLOUD_INSTALL_SUBDIR/lib_boost )?

    
por myWallJSON 27.01.2012 / 05:18

2 respostas

6

O Rsync é seu mais novo melhor amigo.

rsync -av original/folder/ new/folder/

As barras à direita são importantes em ambos; Se você excluir o primeiro, ele copiará essa pasta como sua própria pasta em new/folder/ . É melhor usar o sinalizador -a para preservar permissões, registros de data e hora, etc.

O Rsync também criará diretórios automaticamente, conforme necessário, para duplicar a estrutura.

    
por 27.01.2012 / 05:41
1

Você poderia usar o rsync para isso, no seu exemplo ele vai gostar disso:

rsync -va ../../../$CLOUD_INSTALL_SUBDIR/lib_boost/ ../../../$CLOUD_INSTALL_SUBDIR/lib_boost

Onde a opção -v ativa o modo detalhado e -a ativa o modo de arquivamento

Você pode ler mais sobre o rsync em sua página de manual

    
por 27.01.2012 / 05:42