it-swarm-pt.com

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

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

Obrigado

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

20
MasterGberry

Apenas para detalhar resposta , rsync de Simon é 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, convém 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ê deseja apenas copiar o conteúdo de um diretório, sem criar um diretório com esse nome no destino, adicione uma barra final:

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
24
terdon

Depende da rapidez com que 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 HDD de 2,5 polegadas ou apenas conduza você por lá. É fácil encontrar unidades de 300 gigabit).

Se for menos tempo crítico ou você tiver muita largura de banda, o rsync será ótimo. Se houver um erro, você pode continuar sem copiar novamente os arquivos anteriores.

[Editar] Esqueci de acrescentar 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. Isto pode tomar algum tempo.
2) Execute o rsync novamente, apenas os arquivos alterados serão copiados. Isso deve ser rápido.

Você pode fazer isso várias vezes até que não haja alterações, ou pode fazê-lo da maneira inteligente/segura, tornando os dados somente leitura durante a cópia. (por exemplo, se estiver em um conjunto compartilhado usado que compartilhe como somente leitura. Ou sincronize novamente os dados, à noite, defina o compartilhamento como somente leitura enquanto você o executa pela segunda vez.

14
Hennes

Eu iria para o rsync! Estou usando-o para fazer backup do meu servidor em um servidor externo e funciona bem. Geralmente, existem alguns MBs para copiar, mas em alguns dias ele chega a 20 a 30 GB e sempre funcionou sem problemas.

6
Simon

o rsync sobre NFS usando conexão Gigabit demorará cerca de 10h. Será melhor copiar dados no disco rígido e movê-los entre servidores. Se você precisar fazer uma cópia individual do disco, use dd ou algo parecido para criar uma imagem bruta do disco. Usar ssh (scp) causa uma enorme sobrecarga. Testado empiricamente na conexão Gigabit. O rsync é bom na sincronização incremental entre dois servidores usados ​​no HA ou no modo de backup. Eu acho.

0
Pawel

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

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

próxima vez/s usar rsync

0
jet