qual é o comando rsync para mesclar «inteligente» duas pastas?

39

Eu tenho algumas pastas duplicadas por engano e preciso mesclá-las. Digamos que a pasta A contenha o arquivo X e a pasta B contenha o arquivo Y, eu gostaria que o arquivo X seja copiado para a pasta B. Mas, é claro, posso enfrentar casos mais complexos, nos quais as pastas A e B contêm o mesmo arquivo X : nesses casos, eu gostaria de manter a cópia mais recente do arquivo, para que o rsync compare os dois arquivos e, se a origem for mais antiga, pule, caso contrário, o destino é o mais antigo, substitua.

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

Foi isso que eu achei no Google, mas não acho que esteja correto.

rsync -avz --ignore-existing src dest

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

Obrigado.

PS: nos casos em que exista um arquivo nas duas pastas, o melhor seria sobrescrever o mais antigo na pasta de destino e, ao mesmo tempo, manter uma cópia do mais antigo, como um backup, caso você volte ao anterior

Tiziano Solignani
fonte

Respostas:

66

Eu usaria:

rsync -abviuzP src/ dest/
  • -i ativa o formato detalhado, que mostra mais informações que o formato padrão
  • -bcria arquivos de backup rsync existentes nas duas pastas, anexando ~ao arquivo antigo. Você pode controlar esse sufixo com--suffix .suf
  • -u faz o rsync transferir arquivos ignorados que são mais novos no destino do que no src
  • -z ativa a compactação, o que é útil ao transferir arquivos facilmente compactáveis ​​por links lentos
  • -Pliga --partiale--progress
  • --partial faz com que o rsync mantenha os 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
user49740
fonte
2
Muito bom, acabei usandorsync -abuP
qed