Uso o rsync 3.1.1 para sincronizar dois discos, um dos quais está na rede e montado como um compartilhamento de samba /mnt/ROUTER_WD_2TB/
. Esta é a fonte, com uma velocidade máxima de 30-40MB / s devido a limitações de rede. O outro, o destino, é montado localmente (pico de 110 MB / s) e é /mnt/BACKUP_HITACHI_2TB/
.
Eu uso o seguinte comando rsync:
rsync -haAXi --quiet --append-verify --delete /mnt/ROUTER_WD_2TB/* /mnt/BACKUP_HITACHI_2TB/.
Os discos contêm muitos arquivos, a maioria pequenos.
O problema é que o rsync leva bastante tempo (10-20m) antes de começar a mover os arquivos, eu acho, porque ele precisa calcular as listas de arquivos para um número muito grande de arquivos pequenos. Durante esse período, a utilização do newtwork fica entre 200 e 500 KB / s, enquanto na transferência de arquivos a velocidade é de aproximadamente 40 MB / s.
Geralmente, o rsync leva cerca de 15m para finalmente encontrar algo que precisa copiar, leva 5 segundos para copiá-lo e continua a procurar outros arquivos para copiar por mais 5 minutos. Em suma, uma cópia de arquivo de 5 segundos acaba durando 20 minutos!
Existe alguma medida que eu possa tomar para evitar esse longo período antes de copiar os arquivos, além de excluir pastas? Qualquer tipo de "cache" que eu possa implementar para que o rsync não precise reconstruir toda a lista de arquivos do zero?
Respostas:
No que diz
rsync
respeito a você, você está copiando entre duas árvores de arquivos locais, por isso desativa a maioria de suas otimizações (incluindo o algoritmo delta pelo qual é famoso). Se você pode executar umrsync
servidor remoto (para obter um verdadeiro cenário cliente-servidor em sua rede), obterá uma quantidade significativa de tração.No entanto, aqui estão outras opções a considerar
Copiando sem se preocupar em excluir arquivos antigos. Isso pode permitir que você faça uma transferência mais rápida com mais frequência e relegue a limpeza mais lenta para dizer apenas uma vez por dia:
Use uma variação do
rsync
algoritmo de exclusão padrão para evitar a criação de uma lista completa de arquivos antes da transferência:Divida os diretórios de nível superior em tarefas separadas e execute-os em paralelo. Você pode achar que, se estiver ligado a um disco de E / S, isso realmente não ajudará, e para pratos giratórios quase certamente piorará as coisas.
Se nenhuma dessas sugestões ajuda, então seria pena acrescentar outro
--verbose
pararsync
ver o que está fazendo. Eu suspeito que esteja mexendo em todos os arquivos inalterados, e se você tiver arquivos suficientes, isso simplesmente leva muito tempo.fonte
--delete --delete-during
não fiz isso por mim - que ainda enviou uma lista de arquivos incremental - mas--delete --delete-before
foi direto para:,building file list
que parece um grande progresso. Eu acho que.--delete-before
,rsync
execute duas passagens pela árvore de arquivos: uma para exclusões e a outra para copiar.você pode usar
-vv
para ver o log inteiro dersync
.fonte