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.
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?
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.
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).
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