O Rsync é seguro para uso em uma unidade que está em uso?

5

Estou configurando um cron job noturno para executar o rsync (com --delete) para sincronizar compartilhamentos de rede com seus respectivos volumes de backup.

Terei algum problema se houver muita atividade na unidade de origem durante o tempo em que o processo de rsync estiver sendo executado?

Por exemplo, pode haver um comando de cópia de longa execução transferindo GBs de dados que se sobrepõem à tarefa cron do rsync. Poderia haver problemas de concorrência?

    
por Michael Robinson 25.05.2013 / 19:48

1 resposta

3

Infelizmente, não há nenhuma maneira direta de ter o rsync checando se um arquivo está sendo gravado, nem haveria uma maneira óbvia de manipulá-lo. O Rsync apenas lerá bytes do arquivo de forma síncrona e apenas verá os dados como estavam quando fez a leitura. Sua melhor opção é encontrar uma maneira de sincronizar seu script de backup com qualquer aplicativo que esteja gravando os arquivos. Este tópico na lista de discussão do rsync contém alguns detalhes adicionais.

Outra alternativa seria se você estivesse usando o LVM você poderia tirar um instantâneo do volume e rsync disso. Mas isso não resolveria o problema de rsync arquivos incompletos ou semi-escritos.

De qualquer maneira, o rsync fará seu trabalho, então se você não estiver preocupado se o backup é consistente ou não para cada arquivo que estava sendo escrito, então você deve estar bem com apenas o rsync. Ou seja, o rsync não irá travar ou errar ou algo do tipo se isso é tudo o que você está preocupado.

EDIT: (desculpe por todas as edições: P) Mais uma coisa que eu acabei de pensar. Você poderia configurar um segundo cron com rsync uma hora depois com o sinalizador --existing para recuperar todos os arquivos que estavam sendo gravados sem pegar novos arquivos que estão sendo gravados. Isso sincronizará as alterações "em andamento" desde o primeiro rsync sem executar o mesmo problema na segunda execução.

    
por 25.05.2013 / 20:05