Copiando uma lista de teste/caminho/para/arquivos para a lista de prod/caminho/para/arquivos

Copiando uma lista de teste/caminho/para/arquivos para a lista de prod/caminho/para/arquivos

Gostaria de copiar uma lista de arquivos no formato test/path/to/file/filename.xyz para o caminho de produção correspondente prod/path/to/file/filename.xyz. Se o caminho de teste e o caminho de produção forem iguais, exceto pela presença de "prod" em vez de "teste", posso usar o seguinte comando? Isso substituirá o arquivo de destino?

$ xargs -I % --arg-file=input.txt cp /test/% /prod/%

Responder1

Edite input.txt de forma que pareça (observe o +)

+ /path/to/file/filename.xyz

Então,

rsync -amv \
  --include '*/' \
  --include-from input.txt \
  --exclude '*' \
  test/ prod/

Você também pode executá-lo diretamente editando o arquivo em tempo real, por exemplo:

rsync -amv \
  --include '*/' \
  --include-from <(sed 's/^/+ /' input.txt) \
  --exclude '*' \
  test/ prod/

Talvez seja necessário alterar a sedexpressão para atender às suas necessidades.

informação relacionada