Transferindo cerca de 300gb em arquivos de um servidor para outro

18

Eu tenho cerca de 200.000 arquivos que estou transferindo para um novo servidor hoje. Eu não fiz nada em tão grande escala antes, e queria obter alguns conselhos sobre como eu deveria fazer isso. Eu estou movendo-os entre duas distribuições Centos 6, e eles estão em locais diferentes no país. Eu não tenho espaço em disco rígido suficiente no servidor original para tar todos os diretórios e arquivos em um tarball enorme, então minha pergunta é como devo transferir todos esses arquivos? rsync? alguma maneira especial de usar o rsync? Qualquer entrada / sugestão sobre como fazer isso seria incrível.

Obrigado

EDIT: Para aqueles que estão se perguntando, eu sugiro ALTAMENTE usar um screen ao executar um grande comando rsync como este. Especialmente quando algo tolo pode ocorrer e você perde a conexão com o servidor A do qual você está executando o comando rsync . Em seguida, basta destacar a tela e retomar mais tarde.

    
por MasterGberry 26.03.2013 / 19:12

5 respostas

22

Apenas para detalhar a resposta do Simon, rsync é a ferramenta perfeita para o trabalho:

   Rsync  is  a  fast  and extraordinarily versatile file copying
   tool.  It can copy locally,  to/from  another  host  over  any
   remote  shell,  or to/from a remote rsync daemon.  It offers a
   large number of options  that  control  every  aspect  of  its
   behavior  and permit very flexible specification of the set of
   files to be copied.  It is famous for its delta-transfer algo‐
   rithm,  which reduces the amount of data sent over the network
   by sending only the differences between the source  files  and
   the  existing  files in the destination.  Rsync is widely used
   for backups and mirroring and as an improved copy command  for
   everyday use.

Supondo que você tenha acesso ssh à máquina remota, você gostaria de fazer algo assim:

rsync -hrtplu path/to/local/foo [email protected]:/path/to/remote/bar

Isso copiará o diretório path/to/local/foo para /path/to/remote/bar no servidor remoto. Um novo subdiretório chamado bar/foo será criado. Se você quiser apenas copiar o conteúdo de um diretório, sem criar um diretório com esse nome no destino, adicione uma barra:

rsync -hrtplu path/to/local/foo/ [email protected]:/path/to/remote/bar

Isso copiará o conteúdo de foo/ no diretório remoto bar/ .

Algumas opções relevantes:

 -h,                         output numbers in a human-readable format 
 -r                          recurse into directories
 -t, --times                 preserve modification times
 -p, --perms                 preserve permissions
 -l, --links                 copy symlinks as symlinks
 -u, --update                skip files that are newer on the receiver
 --delete                    delete extraneous files from dest dirs
 -z, --compress              compress file data during the transfer
 -C, --cvs-exclude           auto-ignore files in the same way CVS does
 --progress                  show progress during transfer
 --stats                     give some file-transfer stats
    
por 26.03.2013 / 19:29
13

Depende de quão rápido ele precisa ser copiado e da quantidade de largura de banda disponível.

Para uma conexão de rede ruim, considere a largura de banda de um caminhão cheio de fitas. (Leia: envie um HD de 2,5 polegadas, ou simplesmente dirija para lá. 300 unidades de gigabit devem ser fáceis de encontrar).

Se é menos crítico ou você tem muita largura de banda, então o rsync é ótimo. Se houver um erro, você pode continuar sem copiar novamente os arquivos anteriores.

[Editar] Esqueci de adicionar que você pode executar o rsync várias vezes se seus dados forem usados durante a cópia.

Exemplo:
1) Dados em uso. Rsync - > Todos os dados são copiados. Isso pode levar algum tempo.
2) Execute o rsync novamente, apenas os arquivos alterados são copiados. Isso deve ser rápido.

Você pode fazer isso várias vezes até que não haja alterações, ou você pode fazer isso de maneira inteligente / segura, tornando os dados somente leitura durante a cópia. (por exemplo, se estiver em um conjunto compartilhado usado que compartilha apenas para leitura. Ou rsync os dados, em seguida, à noite defina o compartilhamento somente leitura enquanto você executá-lo uma segunda vez).

    
por 26.03.2013 / 19:22
5

Eu iria para o rsync! Eu estou usando para fazer backup do meu servidor para um servidor externo e funciona bem. Geralmente há alguns MBs para copiar, mas alguns dias sobe para 20 a 30 GB e sempre funcionou sem problemas.

    
por 26.03.2013 / 19:19
0

O rsync via NFS usando conexão Gigabit levará quase 10 horas. Será melhor copiar os dados no disco rígido e movê-los entre o servidor. Se você precisar fazer uma cópia de um para um do disco, use dd ou algo parecido, para criar uma imagem bruta do disco. Usando ssh (scp) causa uma enorme sobrecarga. Empiricamente testado em conexão Gigabit. O rsync é bom em fazer a sincronização incremental entre dois servidores usados no HA ou no modo de backup. Eu acho.

    
por 27.03.2013 / 07:43
0

primeira vez use NFS e tar / untar (NFS é o protocolo mais rápido, neste caso, para economizar largura de banda de rede por mais utilização da CPU)

tar cf - * | ( cd /target; tar xfp -)

na próxima vez, use rsync

    
por 28.03.2013 / 12:29