Estou fazendo o backup de uma caixa do Linux em SMB para um NAS. Montei o NAS localmente e depois sincronizei muitos dados (aproximadamente 100 GB). Acredito que está demorando muito tempo para fazê-lo: mais de 12 horas. Eu esperava que fosse muito mais rápido assim que tudo fosse copiado, pois quase nada é alterado de dia para dia.
Existe uma maneira de acelerar isso?
Eu estava pensando que talvez o rsync pense que está trabalhando com discos rígidos locais e usa soma de verificação em vez de comparações de tempo / tamanho? Mas não encontrei uma maneira de forçar comparações de data e hora. Mais alguma coisa que eu pudesse verificar?
Respostas:
Eu acho que você está entendendo mal o algoritmo rsync e como a ferramenta deve ser aplicada.
A vantagem de desempenho do Rsync vem de transferências delta - ou seja, mover apenas os bits alterados em um arquivo. Para determinar os bits alterados, o arquivo deve ser lido pelos hosts de origem e destino e somas de verificação do bloco, em comparação para determinar quais bits foram alterados. Esta é a parte "mágica" do rsync - o próprio algoritmo rsync.
Quando você monta o volume de destino com o SMB e usa o rsync para copiar arquivos do que o Linux "vê" como uma fonte local e um destino local (ambos montados nessa máquina), as versões mais modernas do rsync alternam para o modo de cópia 'arquivo inteiro' e desative o algoritmo de cópia delta. Isso é uma "vitória" porque, com o algoritmo delta-copy ativado, o rsync lê o arquivo de destino inteiro (por cabo do NAS) para determinar quais bits do arquivo foram alterados.
A "maneira correta" de usar o rsync é executar o servidor rsync em uma máquina e o cliente rsync na outra. Cada máquina lerá arquivos de seu próprio armazenamento local (o que deve ser muito rápido), concordará com quais bits dos arquivos foram alterados e somente os transferirá. Da maneira que você está usando quantidades rsync de um 'cp' melhorado. Você poderia realizar a mesma coisa com 'cp' e provavelmente seria mais rápido.
Se o seu dispositivo NAS suportar a execução de um servidor rsync (ou cliente), você estará no negócio. Se você deseja montá-lo na máquina de origem via SMB, use o 'cp' para copiar os arquivos.
fonte
Parece que os carimbos de data e hora são o seu problema, conforme esta página se relaciona:
http://www.goodjobsucking.com/?p=16
A solução proposta é adicionar
para os parâmetros rsync.
fonte
Sim, você pode acelerar. Você precisa fazer a origem ou o destino parecer uma máquina remota, digamos, endereçando-a como "
localhost:
".Você declarou que está montando o compartilhamento SMB localmente. Isso faz com que a origem ou o destino pareça um caminho local para o rsync. A página de manual do rsync afirma que as cópias em que a origem e o destino são caminhos locais copiarão o arquivo inteiro. Isso é afirmado no parágrafo da opção "--whole-file" na página do manual. Portanto, o algoritmo delta não é usado. O uso da "
localhost:
" solução alternativa restaurará a funcionalidade do algoritmo delta e acelerará as transferências.fonte
rsync
usa data e hora para verificar se um arquivo precisa ou não ser atualizado. Se precisar de uma atualização, o rsync dividirá o arquivo em pedaços e comparará as somas de verificação. Isso significa que ele lerá o arquivo inteiro para poder fazer isso. Portanto, se você não tiver um daemon rsync executando remotamente, será necessário transferir o arquivo inteiro de qualquer maneira para executar a divisão e a soma de verificação para que você possa transferi-lo imediatamente. Portanto, a "solução alternativa" descrita aqui não comprará nada nesse cenário.Pensei em jogar meu 2p aqui.
Meu irmão acabou de instalar um Buffalo NAS em sua rede de escritórios. Ele agora está procurando backups externos, de modo que, se o escritório queimar, pelo menos ele ainda tem todos os seus documentos comerciais em outros lugares (a centenas de quilômetros de distância).
Meu primeiro obstáculo foi obter o VPS que ele tem (um pequeno servidor virtual privado Linux, nada muito robusto) para discar como usuário VPN para seu roteador de banda larga (ele está usando um DrayTek para isso) para que ele próprio possa fazer parte do sua VPN e, portanto, ele pode acessar o NAS diretamente, de forma segura. Resolvi isso e trabalhei de maneira brilhante.
O próximo problema foi transferir os arquivos do NAS para o servidor VPS. Comecei montando o Samba e encontrei exatamente o mesmo problema (ou pior ainda) que você descreveu. Eu fiz um rsync de execução a seco e demorou mais de 1 hora e 30 minutos apenas para descobrir quais arquivos ele iria transferir, porque, como Evan diz, sob esse método, a outra extremidade não é rsync, portanto, é necessário fazer muitos registros. o sistema chama / lê no suporte Samba (através de uma conexão PPTP / com túnel, com um tempo de ida e volta de cerca de 40ms). Completamente impraticável.
Mal sabia eu que o Buffalo realmente executava um daemon rsync, portanto, usando isso, toda a execução a seco leva apenas 1 minuto e 30 segundos para 87k arquivos, totalizando 50Gb. Obviamente, transferir 50 Gb de arquivos (de um NAS que esteja em um link de banda larga com apenas 100k / s de largura de banda de saída) é outra questão completamente (isso levará vários dias) mas, assim que o rsync inicial estiver concluído, qualquer backup incremental deverá ser realizado. alívio de graxa (seus dados não mudam muito diariamente).
Minha sugestão é usar um NAS decente, compatível com rsync, pelas razões que Evan disse acima. Isso resolverá todos os seus problemas.
fonte
Cheira como se você tivesse um NAS mais barato. Também pode ser da largura de banda da sua rede ...
O NAS "consumidor" padrão é realmente fraco quando se trata de IO pesado, que é o que você está tentando fazer aqui. Também poderia ser um comutador barato que conecta seu PC e seu NAS que não é forte o suficiente para lidar com todos os pacotes corretamente.
fonte
tente isso e pense que sempre lhe dá 10% mais a velocidade que você está recebendo http://www.thegeekstuff.com/2009/09/linux-remote-backup-using-rsnapshot-rsync-utility/
fonte
Existem duas fontes possíveis do problema: você usa opções incorretas de linha de comando ou o seu NAS tem problemas com o registro de data e hora (ou ambos :-). Por favor, verifique este tópico "rsync para NAS copia tudo sempre" para obter mais informações.
fonte