Tarefas de rsync: priorizar o link-dest sobre a transferência de arquivos

1

Eu tenho um comando que se parece com isso:

rsync -avp -e ssh /folder user@server:/backups/2 --link-dest=../1 O número da pasta aumenta todos os dias.

Este comando é executado todas as noites, através da minha conexão de internet muito lenta. Se ele não foi concluído durante a noite, o processo será cancelado porque, caso contrário, minha conexão ficará inutilizável durante o dia. Isso funcionaria bem se o Rsync começasse com a criação de hard-links e depois fizesse a transferência de dados.

Infelizmente, parece que o Rsync executa suas tarefas em ordem alfabética. Então, às vezes, ele começa com a transferência de dados e, depois, ele cria seus links físicos.

Se o processo não for concluído da noite para o dia, ele precisará enviar ainda mais dados na noite seguinte, porque os hardlinks não foram criados na pasta 2!

Existe uma maneira de fazer o Rsync criar os hard links primeiro e depois fazer as transferências de arquivos?

Muito obrigado!

    
por Joel'-' 08.05.2018 / 22:28

2 respostas

2

A resposta é adicionar --delay-updates . Isso faz com que o Rsync crie uma lista de todas as alterações primeiro. O alvo criará todos os links físicos e criará todas as pastas. Depois disso, a transferência de dados será iniciada.

rsync -avp --delay-updates -e ssh /folder user@server:/backups/2 --link-dest=../1

    
por 09.05.2018 / 10:05
1

O número --link-dest=../1 deve apontar para o backup bem-sucedido mais recente, não para a tentativa mais recente.

Ou, melhor ainda, use vários sinalizadores de destino de link, um para o sucesso mais recente e, depois, adicionais para qualquer tentativa malsucedida desde o sucesso mais recente.

Citando a página man:

Beginning in version 2.6.4, multiple --link-dest directories may
be provided, which will cause rsync to search the  list  in  the
order  specified  for  an exact match.

Combine isso com --delay-updates ( como Joel sugeriu ) e você terá um sistema bastante robusto.

No entanto, contanto que você tenha uma largura de banda muito limitada, seus problemas só irão piorar com o tempo, à medida que seus dados precisarem crescer. Eu estava em uma situação como esta uma vez. O rsync mal terminou durante a noite. Algumas semanas depois, não terminava com 24 horas. Desde que foi um dia desde então, você pode ver o problema! Poderia pegar no fim de semana, mas logo isso não foi suficiente. Eventualmente eu só tive que encontrar uma maneira de obter mais largura de banda.

Se você for usar isso em um sistema de produção, eu recomendo que você registre quantas falhas existem e quantas "falhas desde o último sucesso". Configure o monitoramento para coletar esses dados e alerte se as "falhas desde o último sucesso" aumentarem para um número inaceitável (2? 5? Isso depende das suas necessidades).

    
por 10.05.2018 / 15:56

Tags