O rsync é a melhor maneira de corrigir o meu problema?

2

Eu tenho um único servidor OEL / RHEL 5.3 com uma montagem 'source' para um compartilhamento NFS de 10Gbps de 16TB e um mount de 'destination' para um FC LUN de 16TB formatado com o OCFS2.

Eu preciso garantir que o destino corresponda à origem e estou feliz por estarem fora de sincronia por até uma ou duas horas - é fácil usar o rsync.

Mas seria bom saber que no caso de alguém excluir todos os arquivos da fonte que não foram excluídos pelo rsync no próximo período agendado - que ele detecta que está prestes a remover, digamos, > 20% da fonte do destino e escolhe parar.

Esse tipo de coisa é possível ou uma ferramenta diferente seria mais apropriada para esse problema? Tenho flexibilidade com o sistema operacional e o sistema de arquivos dessa máquina, mas não com o tipo de conexão real para ambas as caixas de armazenamento.

Obrigado.

    
por Chopper3 16.02.2010 / 20:12

3 respostas

1

No caso de qualquer erro NFS, você deve, em teoria, ser protegido ( man rsync ):

If the sending side detects any I/O errors, then the deletion of any files at the destination will be automatically disabled. This is to prevent temporary filesystem failures (such as NFS errors) on the sending side causing a massive deletion of files on the destination.

Você também pode limitar o dano com --max-delete=NUM , de modo que apenas muito seja excluído. Você pode restaurar essa parte da fita ou o que você usa.

Realmente, o problema real é que alguém pode excluir todos os arquivos da fonte? e você não deveria simplesmente parar com permissões?

    
por 16.02.2010 / 20:49
2

Você pode usar --max-delete=NUM de rsync para informar ao rsync para não excluir um número especificado de arquivos, onde NUM é um número menor que aproximadamente 20% de seus arquivos e --backup/--suffix para renomear arquivos no destino em vez de excluir.

    
por 16.02.2010 / 20:49
1

Você pode hackear algo para contar os arquivos. Na verdade, algo como:

(cd /source && ls -FalR . ) | sort > /root/sourcelist.$$
(cd /dest && ls -FalR . ) | sort > /root/destlist.$$
diff -u /root/sourcelist.$$ /root/destlist.$$ | egrep '^-' | wc -l

Dará a você quantos arquivos você está prestes a remover. Whack algo em torno daquele que sabe quantos é demais, e executar isso antes de sua sincronização.

    
por 16.02.2010 / 20:50

Tags