Esse problema aparece na lista de caixas de seleção em #5. É questão de sótão: https://github.com/jborg/attic/issues/103. Eu não tinha certeza se deveríamos adicionar comentários lá ou aqui.
O problema original solicita que o suporte seja adicionado para limitar a largura de banda. trickle
foi mencionado como uma opção. As pessoas disseram que não funcionaria / não funcionaria, já que o borg usa um pipe através do ssh, enquanto o trickle funciona com soquetes.
Eu só queria relatar que se você estiver usando borg com sshfs (ou seja, fazendo backup para rsync.net), então usar trickle funcionará corretamente. Você deve chamar trickle ao executar a montagem ssh. Então, para limitar a largura de banda a 5 Mbps, você usaria:
trickle -u 5000 sshfs username<strong i="11">@hostname</strong>: /path/to/mountpoint
borg create ...
Limitar a largura de banda pode ser feito com o pipeviewer e um script wrapper.
Minha opinião sobre isso é que documentar pv é preferível a adicionar suporte de largura de banda ao borg, porque pv faz o que é necessário e a limitação de taxa nem sempre é fácil de fazer no código (+ adiciona mais complexidade à configuração já complexa). Com a filosofia unix: faça uma coisa e faça bem feito (e pipes, eu gosto de pipes... ;)
Instale o pipeviewer (pv) no Ubuntu e provavelmente no debian é simplesmente: sudo apt-get install pv
Crie um script wrapper: (vou criá-lo para /usr/local/bin/pv-wrapper
)
#!/bin/bash
## -q, --quiet do not output any transfer information at all
## -L, --rate-limit RATE limit transfer to RATE bytes per second
export RATE=307200
pv -q -L $RATE | "$@"
Feito isso, adicione o env BORG_RSH
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '
Agora borg terá largura de banda limitada. O legal do pv é que você pode alterar o limite de taxa em tempo real:
pv -R $(pidof pv) -L 102400
Usei a mesma configuração com o rsync onde estava movendo um conjunto de dados de vários terabytes e tive que moderar a largura de banda durante o horário de expediente.
# example cron setup:
00 09 * * 1-5 root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L 307200)
00 18 * * * root ( pidof pv > /tmp/.pv-pid && pv -R $(cat /tmp/.pv-pid ) -L 819200)
Teste:
O repositório remoto foi removido antes de cada teste
fonte: total de 320 milhões
Sem visualizador de tubos:
Duração: 5 minutos 8,50 segundos
Número de arquivos: 60
## wrapper:
pv -q -L 307200 | "$@"
Duração: 18 minutos 7,00 segundos
pv -q -L 102400 | "$@"
Execução interrompida após 40 minutos, tempo de execução esperado em torno de 54 minutos e saída de borg --progress estava alinhada com a estimativa.
Teste original com pipeviewer, mas sem limite de taxa:
Duração: 6 minutos 29,38 segundos
observe que este teste não foi executado em condições de laboratório, portanto, outros usuários afetam a disponibilidade da largura de banda.
pode ser adicionado ao FAQ.
fusão do pr #705.
Esbarrando em um problema antigo aqui, eu sei, mas essa é uma solução bastante complicada para algo que provavelmente deveria morar em borg. Além disso, seria útil ter opções de limitação separadas para rede, E/S e computação.
@ddevault se você tiver um problema específico relacionado a isso, descreva-o em um novo problema.
Comentários muito úteis
Limitar a largura de banda pode ser feito com o pipeviewer e um script wrapper.
Minha opinião sobre isso é que documentar pv é preferível a adicionar suporte de largura de banda ao borg, porque pv faz o que é necessário e a limitação de taxa nem sempre é fácil de fazer no código (+ adiciona mais complexidade à configuração já complexa). Com a filosofia unix: faça uma coisa e faça bem feito (e pipes, eu gosto de pipes... ;)
Instale o pipeviewer (pv) no Ubuntu e provavelmente no debian é simplesmente:
sudo apt-get install pv
Crie um script wrapper: (vou criá-lo para
/usr/local/bin/pv-wrapper
)Feito isso, adicione o env BORG_RSH
export BORG_RSH='/usr/local/bin/pv-wrapper.sh ssh '
Agora borg terá largura de banda limitada. O legal do pv é que você pode alterar o limite de taxa em tempo real:
pv -R $(pidof pv) -L 102400
Usei a mesma configuração com o rsync onde estava movendo um conjunto de dados de vários terabytes e tive que moderar a largura de banda durante o horário de expediente.
Teste:
O repositório remoto foi removido antes de cada teste
fonte: total de 320 milhões
Sem visualizador de tubos:
Duração: 5 minutos 8,50 segundos
Número de arquivos: 60
## wrapper:
pv -q -L 307200 | "$@"
Duração: 18 minutos 7,00 segundos
pv -q -L 102400 | "$@"
Execução interrompida após 40 minutos, tempo de execução esperado em torno de 54 minutos e saída de borg --progress estava alinhada com a estimativa.
Teste original com pipeviewer, mas sem limite de taxa:
Duração: 6 minutos 29,38 segundos
observe que este teste não foi executado em condições de laboratório, portanto, outros usuários afetam a disponibilidade da largura de banda.