Como usar o rsync para forçar a correspondência de todos os arquivos * .jar?

0

Eu tenho um diretório com muitos arquivos nele. Os únicos que me interessam são aqueles com a extensão .jar . No entanto, existem outros arquivos no diretório também.

Eu tenho um diretório de origem com somente .jar arquivos. Eu quero alcançar o equivalente a:

rm destdir/*.jar
cp sourcedir/*.jar destdir

No entanto, eu quero fazer isso sem realmente remover os arquivos que já estão lá, se eles já são os arquivos corretos.

Em outras palavras, quero que seja possível executar um único comando que:

  1. Para todos os arquivos .jar presentes em sourcedir , mas não em destdir , copie-os.
  2. Para qualquer arquivo .jar presente em sourcedir e destdir , certifique-se de que a cópia em destdir corresponda à cópia em sourcedir e sobrescreva-a, se não o fizer.
  3. Para qualquer arquivo .jar presente em destdir , mas não em sourcedir , exclua o arquivo.
  4. Para quaisquer outros arquivos presentes em destdir (sem uma extensão .jar ), ignore-os - não os exclua nem os altere.

parece que isso deve ser possível com rsync . Como posso fazer isso?

    
por Wildcard 19.07.2017 / 06:16

1 resposta

1

Você pode usar:

rync -av --include='*.jar' --exclude'*' --delete sourcedir/ destdir/

A opção -a é o modo de arquivo, preserva os links e carimbos de data e hora (verifique o man para uma explicação completa.) O -v é para verbosidade, remova se você não se importa com logs.

Isso deve lidar com suas três primeiras opções. A opção --delete cuidará do seu quarto requisito ao ignorar arquivos excluídos.

Se você deseja incluir diretórios que contenham arquivos .jar , você pode usar

rync -av --include='*.jar' --include='*/' --exclude'*' --delete sourcedir/ destdir/

Com base na resposta localizada aqui, se você tiver outras dúvidas, ele deverá ajudá-lo: Filtro Rsync: copiando somente um padrão

    
por 19.07.2017 / 07:16