A melhor maneira de copiar grandes quantidades de dados entre partições

5

Estou procurando transferir dados entre 2 lv de um servidor HP-UX. Eu tenho algumas dessas transferências para fazer, algumas das quais são na sua maioria binárias (tablespace do Oracle ...) e outras são mais arquivos de texto (logs ...). O tamanho de dados usados dos volumes está entre 100 Gb e 1 TB. Além disso, vou mudar o tamanho do bloco de 1K para 8K em algumas dessas partições ...

Coisas que estou procurando:

  • Garante a integridade dos dados
  • Velocidade de transferência de dados mais rápida
  • Mantém a propriedade e as permissões de arquivos

Neste momento, pensei em dd, cp e rsync, mas não tenho certeza qual é o melhor para usar e a melhor maneira de usá-los ...

    
por skinp 21.12.2010 / 18:03

4 respostas

4

Você não quer usar o dd. Isso é para trabalhar em 1 arquivo ou fluxo, não em um sistema de arquivos inteiro.

O rsync foi projetado para fazer o que você quer, mas como o pôster anterior afirmou, e como meus testes mostraram, não é o mais rápido. Isso porque é para fazer algo assim: "Ok, estou vendo o arquivo A. O arquivo A está no destino? Em caso afirmativo, é mais recente, mais antigo, o mesmo?" Etc. rsync é um pouco complicado, porque é para ser executado mais de uma vez ... como o nome diz, é para sincronizar dois locais.

Para fazer o tipo de coisa que você quer, eu encontrei uma cópia tar para ser rápida, fácil e confiável. Tar sabe sobre hard links. Tar sabe sobre dispositivos. O Tar manipula quase todas as situações que você encontrar no seu sistema de arquivos (exceto caminhos muito longos, e, se você não estiver usando o Gnu, você pode precisar tomar cuidado em colocar / no início do seu nome de caminho).

De qualquer forma, obtive 99,98% de sucesso nos últimos 20 anos fazendo isso:

cd / my / source; tar cf - subdiretório | (cd / destination / path; tar xf -)

... O subdiretório que você deseja copiar aparecerá em / destination / path.

Se você gosta de assistir ao seu progresso, você pode usar "xvf" em vez de "xf" na última parte da string.

... minhas falhas de 0,02% vieram de caminhos de arquivos realmente longos ...: - (

O tar não garante a integridade dos arquivos. Dito isso, desde que você não veja nenhuma mensagem de erro, descobri que ela é muito confiável. Ele manterá as permissões e a propriedade de maneira adequada.

    
por 22.12.2010 / 07:35
2

Dê uma olhada em esta postar . Algumas respostas sugeriram usar tar . Outros sugeriram usar rsync . Eles estão tomando cerca de copiar dados entre duas máquinas. Seu problema é semelhante, mas você precisa copiar os arquivos localmente, em vez de fazê-lo pela rede.

    
por 21.12.2010 / 21:49
1

Eu recomendaria usar rsync , pois possui recursos que abordam especificamente a maioria das suas preocupações. Se você usar as opções apropriadas (por exemplo, a opção -a ), todas as propriedades, permissões e horas do arquivo serão preservadas. Além disso, rsync usa automaticamente as somas de verificação para garantir que todos os arquivos transferidos cheguem ao destino intactos, garantindo a integridade dos dados (presumindo uma execução bem-sucedida).

O único ponto em que rsync pode não ser ideal é a velocidade, especialmente quando comparado a uma alternativa mais leve como cp , mas duvido que você notaria muita diferença, a menos que seu o poder de processamento é muito baixo.

    
por 22.12.2010 / 06:39
0

Você basicamente tem três opções:

  1. Copie todo o dispositivo de partição / bloco
  2. Descarregar todo o sistema de arquivos
  3. Copie os dados dentro do sistema de arquivos

Selecione uma das três opções dependendo do que você teve que fazer backup e dos resultados que deseja ter. Para o seu caso específico, eu acho que a opção n.1 (cópia de dispositivo de bloco) juntamente com ddrescue é a caminho a percorrer De qualquer forma, vamos ver uma coleção de opções disponíveis.

Caso 1: cópia de partição
PRO: copiando um dispositivo de bloco inteiro, você tem certeza de que a anotação foi deixada para trás.
CON: incomodar com dispositivos de bloco é menos conveniente do que trabalhar com arquivos, selecionar o dispositivo de bloco errado ou opções podem destruir seus dados.


Se você deseja ter uma cópia binária de um bloco inteiro, você tinha que usar dd ou ferramenta similar. Outras ferramentas muito úteis são dcfldd (um fork do hash ready dd) e ddrescue (uma ferramenta parecida com o dd ainda mais avançada).

Caso 2: despejo do sistema de arquivos
PRO: copiando um sistema de arquivos inteiro, você tem certeza de que todos os dados e metadados dentro dele foram armazenados em backup. CON: se tem vários sistemas de arquivos para backup, você teve que fazer várias passagens (uma para o sistema de arquivos)
Uma ferramenta útil para lidar com sistemas de arquivos é FSArchive . Além disso, muitos sistemas de arquivos têm utilitários integrados para descarregar seus conteúdos de uma maneira eficiente (por exemplo: XFS tem xfsdump, Ext2 / 3/4 usa dumpe2fs e assim por diante).

Caso 3: copie os dados dentro do sistema de arquivos
PRO: copiando dados de dentro do sistema de arquivos, você pode selecionar muito especificamente o que fazer backup. Isso garante rápido tempo de backup / restauração e pequenas imagens de backup.
CON: Você tinha que saber perfeitamente o que fazer backup e como. Cuidado especial deve ser usado para metadados importantes (por exemplo: proprietário, permissão, ACLs, EAs ...)
O Rsync é seu melhor amigo aqui. Rsnapshot e rdiff-backup são ferramentas maravilhosas construídas sobre o rsync / librsync. Tar é o swiss-knife de qualquer administrador de sistemas Unix.

    
por 14.02.2015 / 14:01