qual é o comando rsync para “inteligentemente” mesclar duas pastas?

34

Eu tenho algumas pastas que foram duplicadas por engano e eu tenho que mesclá-las. Digamos que a pasta A contenha o arquivo X e a pasta B contenha o arquivo Y, gostaria de obter o arquivo X copiado para a pasta B. Mas, é claro, posso enfrentar casos mais complexos, em que f.i. ambas as pastas A e B contêm o mesmo arquivo X: nesses casos, eu gostaria de manter a mais nova cópia do arquivo, então o rsync deve comparar os dois arquivos, e se a origem for mais antiga é só pular, senão o destino é o mais antigo um, sobrescreva.

Quais parâmetros devo colocar na linha de comando do rsync?

Foi o que encontrei no googling, mas não acho que esteja correto.

rsync -avz --ignore-existing src dest

A página man está de alguma forma além de mim.

Obrigado.

PS nos casos em que existe um arquivo em ambas as pastas, o melhor seria substituir o antigo na pasta de destino e, ao mesmo tempo, manter uma cópia do mais antigo, como um backup, caso você devesse obter de volta ao anterior

    
por Tiziano Solignani 06.02.2013 / 09:41

1 resposta

55

Eu usaria:

rsync -abviuzP src/ dest/
  • -i ativa o formato discriminado, que mostra mais informações do que o formato padrão
  • -b cria arquivos de backup rsync que existem nas duas pastas, anexando ~ ao arquivo antigo. Você pode controlar este sufixo com --suffix .suf
  • -u faz a transferência rsync pular arquivos que são mais recentes no dest do que no src
  • -z ativa a compactação, o que é útil ao transferir arquivos facilmente compactáveis em links lentos
  • -P ativa --partial e --progress
  • --partial faz o rsync manter arquivos parcialmente transferidos se a transferência for interrompida
  • --progress mostra uma barra de progresso para cada transferência, útil se você transferir arquivos grandes
por 06.02.2013 / 11:20

Tags