Preciso copiar uma estrutura de diretórios para um novo host como parte de uma migração de aplicativo. A estrutura do diretório é a seguinte:
{10 - ff} / {00 - ff} / {00 - ff} (não incluído) / nome de arquivo exclusivo
Portanto, existem milhões de arquivos. O terceiro nível da árvore não está totalmente preenchido e nem todo diretório de terceiro nível contém um arquivo.
a du leva MUITO tempo para ser concluído, mesmo para uma pasta de segundo nível. Usando alcatrão | nc levaria 10 dias. Posso ter uma interrupção de 1 dia, mas não 10.
Responder1
Use rsync
para isso.
- Antes de você precisar passar a usar o novo servidor, faça uma verificação
rsync
de todo o diretório de um host para outro. Pelo que parece, isso levará muito tempo para ser concluído. - Depois de concluído, execute
rsync
novamente para capturar todos os arquivos modificados durante o primeiro rsync. - Continue fazendo execuções periódicas
rsync
até desejar realizar a transição. Isso serve apenas para manter baixo o volume de dados que precisam ser transferidos. - Faça uma interrupção e interrompa todas as gravações no servidor antigo.
- Execute um último
rsync
- Inicie os serviços no novo servidor
Responder2
Se esta estrutura de diretórios for a maior parte dos dados em seu dispositivo/partição, ignore a estrutura de diretórios, se é isso que está causando o problema.
Em vez disso, desmonte o dispositivo (ou remonte somente leitura) e use-o dd(1)
com o netcat para copiar os blocos do sistema de arquivos para uma partição do mesmo tamanho no novo host.
Se houver dados estranhos fora da hierarquia desejada, exclua-os após a migração.
Você também pode considerar retirar a unidade e conectá-la ao novo host se a rede entre os hosts puder ser um gargalo.
Responder3
Para uma cópia única, e se você puder ter a origem e o destino montados no mesmo sistema, você pode fazer
find [source top dir] | cpio -dump [target mountpoint]
Ele copiará e preservará os atributos do arquivo. Deve haver parâmetro de compressão na ferramenta cpio também.