Como compactar e transferir pastas de um servidor para outro pela rede

2

Temos alguma opção para transferir pasta de um servidor para outro, que é mais rápido e compressível e o método de definição de limite de largura de banda? Os servidores são executados no Linux.

Eu tentei tar + ssh mas não consegui definir o limite de largura de banda para 3 ou 4 MBPS da mesma forma.

Qualquer outro serviço faz isso?

    
por mannoj 22.11.2013 / 16:07

3 respostas

7

Você pode usar o rsync com a opção --bwlimit= para limitar a largura de banda e -z para compactar os dados do arquivo durante a transferência. Usando o SSH como transporte, por exemplo.

    
por 22.11.2013 / 16:14
3
bsdtar cf - . | xz | pv -L 3m | ssh host 'cd /there && xz -d | bsdtar xpSf -'

(aqui usando o bsdtar como outros, geralmente não armazena todos os metadados do arquivo).

xz é provavelmente a melhor compactação que você pode obter (mas exige muito da CPU), pv para limitação de taxa (observe que é 3 mega (2 20 ) bytes por segundo).

Adicione a opção --numeric-owner ao segundo bsdtar se for para backup e quiser preservar os uids / gids.

Isso seria mais eficiente (em termos de largura de banda e recursos em ambos os servidores) do que usar rsync (com xz compactação) para uma transferência completa, mas se você precisar retomar uma transferência ou sincronizar pastas com arquivos em comum, é onde rsync é útil (mas leia atentamente a página rsync man para selecionar quais opções você precisa preservar os metadados que você deseja preservar).

    
por 22.11.2013 / 16:45
0

Para ajustar o throughput da rede, existem também ferramentas como cstream ou mbuffer .

Além de -t num para limitar a taxa de transferência de dados a num bytes por segundo, cstream , por exemplo, não só tem uma opção -b num para definir o tamanho de bloco usado para leitura / gravação, mas também -B num opção para armazenar em buffer um bloco de entrada até num bytes antes de gravar.

Como alternativa a ssh e rsync , você pode tentar nc (netcat) ou ncat , especialmente se o fluxo de dados não for passar pela Internet. ncat é parte do Projeto Nmap e tem suporte a SSL.

# netcat + tar + cstream example to throttle network throughput
# requires netcat on both servers
# cf. http://superuser.com/questions/291803/best-way-to-copy-millions-of-files-between-2-servers/
# cstream -T 10 -t 4m </dev/urandom >/dev/null   # test

nc -l -p 2342 | tar -C /target/dir -xzf -                       # destination box
tar -cz /source/dir | cstream -T 30 -t 4m | nc Target_Box 2342  # source box
    
por 25.11.2013 / 11:46

Tags