Esta resposta provavelmente tarde demais para ajudar o OP, portanto, o seguinte é para a posteridade.
O gargalo provavelmente não tem nada a ver com o mbuffer, mas com o fato de que os dados estão sendo enviados por meio de uma conexão criptografada por ssh. Em outras palavras, o afunilamento é a velocidade na qual o processo ssh de encadeamento único pode criptografar o tráfego no host de envio e descriptografá-lo no host de destino.
Para o seu propósito, provavelmente é melhor usar a opção -O do mbuffer no remetente e a opção -I no receptor. Isso faz com que o mbuffer envie os dados diretamente através de um pipe TCP não criptografado, o que fará com que sua rede seja tão difícil quanto o sistema operacional, os drivers e o hardware permitirão.
É um processo de duas etapas porque você precisa executar o mbuffer no host de envio e no host de destino, assim:
-
Primeiro, execute
mbuffer
no receptor. Ele irá escutar uma conexão na porta dada pela opção -I (5567 é apenas um exemplo; escolha seu próprio número de porta):ssh $outputTarget mbuffer -I 5567 \>$outputDir/$filename
-
Em seguida, inicie a transferência no remetente:
mbuffer -i "$currentFile" -O $outputTarget:5567
Como descrito acima, o processo de mbuffer de recebimento executado em $ outputTarget irá escutar e aceitar uma conexão TCP de qualquer pessoa que se conecte a esse socket, não apenas do processo de envio de arquivo que é iniciado na etapa 2. Então você precisa Ciente do fato de que o mbuffer, quando usado dessa maneira, não é tão seguro quanto o ssh, não apenas porque não há criptografia dos dados, mas também porque não há como ter certeza de que o remetente pretendido é o único iniciando uma conexão para a porta de escuta do receptor. A menos que alguém esteja escaneando a porta do seu receptor ou saiba o que você está fazendo e esteja tentando explorá-lo, a última ressalva raramente é problemática. A falta de criptografia, por outro lado, pode muito bem ser um show-stopper dependendo do caso de uso.