Receber arquivos pela linha de comando
Última atualização: 2026-09-01
Enviar é só metade da história — mais cedo ou mais tarde você está na ponta receptora: um colega quer te entregar um arquivo pela internet, uma das suas próprias máquinas quer repassá-lo a outra, ou você quer buscar algo em um servidor que administra. A CLI do Relayium cobre os três casos com um comando diferente para cada um, e nenhum precisa de conta.
Escolha receive quando outra pessoa está te enviando por código de emparelhamento, serve quando você quer uma caixa de entrada permanente para a qual máquinas confiáveis possam enviar a qualquer momento, e pull quando é você quem vai buscar em um servidor ao qual você já consegue se conectar por ssh.
Três formas de receber, e quando cada uma se aplica
Qual comando você executa depende de quem inicia a transferência e de como as duas máquinas se conhecem:
- relayium receive <code> [destdir] — alguém envia para você entre redes usando um código de emparelhamento que a CLI dessa pessoa gerou e repassou a você fora de banda. Direto ponto a ponto, com um código SAS que você pode comparar.
- relayium serve [--dir D] [--port N] [--once] [--allow-delete] — esta máquina fica à escuta de envios em daemon direto por relayium://, na porta 9031 por padrão.
- relayium pull [user@]host:src <dest> — você vai buscar por SSH em um servidor ao qual já consegue se conectar e recupera arquivos.
receive: alguém envia um arquivo para você entre redes
O que você precisa antes do passo 1
- A CLI nesta máquina. relayium version imprime uma linha de versão; se o shell responder command not found, ela ainda não está instalada aqui.
- Um remetente com sessão iniciada e diante do terminal agora. Só ele precisa de conta — você nunca faz login para receber.
- Os seis dígitos, por um canal à parte. Eles vivem cinco minutos a partir do momento em que a CLI dele os gerou, então combinem antes a hora.
- Um jeito de ler outros seis dígitos de volta para ele depois: o SAS se compara em voz alta, não na tela.
- A outra ponta precisa ser a CLI. Um navegador não consegue entrar num código de emparelhamento da CLI — se é só o que você tem, peça um link do relayium up.
Esta é a metade receptora do relayium send. A outra pessoa executa relayium send <path> do lado dela (depois de relayium login); a CLI dela gera um código de 6 dígitos, válido por 5 minutos, e o exibe. Ela te diz qual é por qualquer canal em que ambos confiem — uma ligação, uma mensagem de chat. Você executa receive com esse código:
relayium receive 483920
# ou para um diretório específico
relayium receive 483920 ./downloads
Combine com o remetente quando ele vai rodar o send. O código começa a expirar assim que é gerado, não quando chega até você.
Receba os seis dígitos por um canal em que os dois lados confiem — uma ligação, uma janela de conversa, a sala em que estão.
Rode o receive no diretório onde os arquivos devem cair, ou nomeie um explicitamente.
relayium receive 483920relayium receive 483920 ./downloadsQuando os dois terminais imprimirem um código de verificação, leia o seu em voz alta e confirme que bate com o dele. Ele não é o código de emparelhamento, e é a única coisa que descarta uma ponta trocada.
Não mexa no terminal até ele voltar ao prompt. É uma única sessão ao vivo: fechar qualquer uma das pontas interrompe a transferência.
Como é um recebimento bem-sucedido
A conexão é anunciada como direct e os dois terminais imprimem o mesmo código de verificação. Códigos diferentes são o único resultado que você não deve aceitar — pare e confira com o remetente em qual máquina ele está.
$ relayium receive 483920
verification code (SAS): 271044 — not the pairing code; compare it on both ends to rule out a substituted endpoint
path: direct- A conexão é direta, ponto a ponto e criptografada de ponta a ponta; ambos os terminais imprimem o mesmo SAS (cadeia de autenticação curta) assim que conectados. Compare-o fora de banda com quem envia para confirmar que as impressões digitais dos certificados TLS fixados não foram substituídas e que o serviço de encontro não se passou por nenhuma das pontas. O SAS autentica as pontas; não prova cada salto da rota de rede.
- Sem destino indicado: os arquivos caem no diretório atual.
- A mesma regra de somente direto que o send: se nenhum caminho direto puder ser encontrado entre as duas redes, a transferência falha em vez de ser roteada por um retransmissor.
- Este é o protocolo de código de emparelhamento próprio da CLI — um código da CLI só emparelha com outra CLI. Hoje ele não interopera com o código de emparelhamento do navegador nem com o fluxo de QR em relayium.com; isso é uma possível adição futura, não algo com que você possa contar ainda. Se você só tem navegador, peça a quem envia um link de download do relayium up.
- O receptor nunca precisa de conta, em nenhuma rede. Só quem envia faz login, para que a CLI dele possa gerar o código.
serve: transforme esta máquina em uma caixa de entrada à escuta
serve funciona ao contrário: em vez de você ir buscar, outras máquinas enviam diretamente para você por relayium:// — feito para máquinas em que você já confia, como seu próprio notebook enviando para um NAS, ou um servidor de compilação despejando artefatos em uma máquina que é sua — por uma conexão TLS 1.3 com fixação, sem SSH, sem encontro.
relayium serve
# um diretório e uma porta específicos, permitindo requisições de exclusão
relayium serve --dir ~/incoming --port 9031 --allow-delete
Inicie o receptor nomeando o diretório onde os envios devem cair.
relayium serve --dir ~/incomingQuando uma máquina nova empurra pela primeira vez, o serve mostra o endereço e a impressão digital dela e pergunta. Aprove uma vez e os envios seguintes daquela impressão passam em silêncio.
Se este receptor for rodar sem terminal, não conte com essa pergunta: não há ninguém para responder, e um remetente desconhecido é recusado de cara. Use a autorização prévia descrita na próxima seção.
- Na primeira vez que uma máquina nova envia para você, o serve (rodando em um terminal) mostra o endereço e a impressão digital dela e pede que você a aprove uma vez; depois disso, os envios da mesma impressão digital passam silenciosamente.
- Sem terminal — um serviço systemd, um script sem TTY — não há a quem perguntar, então um emissor não reconhecido é rejeitado de imediato. Em vez disso, autorize-o com antecedência usando a impressão digital que o emissor imprime com relayium id:
Autorizar com antecedência para um serve desassistido
Para um serve que roda desassistido (systemd, um script em segundo plano), faça o emissor executar relayium id para imprimir sua impressão digital, e então aprove-a de antemão do lado receptor:
relayium authorize <fingerprint>
- --dir define onde os arquivos caem (padrão o diretório atual); --once aceita uma única transferência e sai; --allow-delete permite que uma requisição --delete (espelho) recebida realmente remova arquivos aqui, e está desligado por padrão.
- --config-dir (padrão ~/.config/relayium) é onde ficam a identidade deste host e sua lista de impressões digitais autorizadas — substitua-o se você executa serve como um serviço dedicado.
pull: vá buscar e recupere de um servidor ao qual você consegue se conectar por ssh
pull é o espelho do push: em vez de esperar que alguém envie algo para você, você vai buscar pelo seu acesso SSH existente e recupera arquivos.
relayium pull user@host:/path/to/files ./local-dest
Confirme que a máquina remota realmente tem a CLI. O pull executa o relayium do outro lado e, ao contrário do push, não existe recurso ao tar: sem o binário, o comando inteiro falha.
ssh user@host command -v relayiumSe estiver faltando, instale lá primeiro.
curl -fsSL https://relayium.com/install.sh | shTraga os arquivos pelo acesso SSH que você já tem. -i e -p se comportam como os do ssh.
relayium pull user@host:/path/to/files ./local-dest
- Ao contrário do push, o pull sempre precisa do relayium já instalado no remoto — não há alternativa com tar para fazer pull de um servidor pelado. Se o remoto ainda não o tem, instale-o lá primeiro com curl -fsSL https://relayium.com/install.sh | sh.
- Cada arquivo é verificado com uma checagem SHA-256 por arquivo. O pull não retoma: ele recusa um destino que já existe, antecipadamente e antes de buscar qualquer coisa. Um pull interrompido se conclui buscando os caminhos que faltam, ou com o relayium sync no mesmo sentido. O --no-resume é aceito aqui e não faz nada.
- -i e -p se comportam como os próprios -i/-p do ssh, para um arquivo de identidade ou porta específicos.
Quando não funciona
Cinco falhas cobrem quase todo recebimento malsucedido. O comando que você estava rodando decide qual delas se aplica, e cada uma se resolve com uma linha para ler ou um comando para rodar.
Sintoma, checagem, correção
- Você digita o código e o rendezvous recusa.
relayium receive 483920 # the rendezvous refuses the codeQuase sempre os cinco minutos já passaram: o código expira a partir de quando a CLI do remetente o gerou, não de quando você foi avisado. Peça para ele rodar o send de novo e ler os dígitos novos na hora. Um dígito digitado errado é indistinguível daqui, então releia o código para ele antes de concluir que expirou.
- A transferência termina mas você não acha os arquivos.
relayium receive 483920 ./downloadsSem destino, o receive escreve no diretório de onde você o executou, que raramente é onde você estava procurando. Passe um explicitamente, ou rode pwd antes.
- Falha com "no direct connection to the peer (both ends behind strict NAT?)".
relayium receive 483920 # no direct connection to the peer (both ends behind strict NAT?): …O caminho de emparelhamento da CLI é direto por projeto: quando não existe rota direta, ele falha em vez de mandar seu arquivo por um retransmissor. Do seu lado não há conserto. Peça ao remetente um link de download do relayium up, ou, entre máquinas que os dois controlam, use o modo direto entre daemons ou o push por SSH.
- O pull falha na hora reclamando que não achou o relayium.
ssh user@host command -v relayium # (no output)O pull executa o relayium na máquina remota — nessa troca é ela quem envia — e não há recurso ao tar como no push. Instale a CLI lá primeiro e rode o pull de novo.
- Uma máquina empurra para o seu receptor serve e é recusada sem que você seja perguntado.
relayium serve --dir ~/incomingEssa pergunta só existe quando o serve tem terminal. Sob systemd, dentro de um script ou atrás de um pipe não há a quem perguntar, então uma impressão digital desconhecida é recusada de cara. Peça ao remetente para rodar relayium id e autorize aqui com relayium authorize <impressão>, usando o mesmo --config-dir sob o qual o receptor roda.
Perguntas frequentes
Preciso de uma conta para receber arquivos?
Não. As três formas — receive, serve e pull — são completamente gratuitas e não precisam de conta do Relayium do seu lado. O único login em tudo isso é o de quem envia no modo receive, para que a CLI dele possa gerar o código de emparelhamento.
O relayium receive interopera com o código de emparelhamento do navegador?
Não. O protocolo de código de emparelhamento da CLI é separado do fluxo de link de entrada e QR do navegador em relayium.com — eles usam handshakes diferentes e hoje não se comunicam entre si, então um código da CLI só emparelha com outra CLI. Isso está no roteiro, não é algo com que você possa contar ainda. Até lá, quem recebe pelo navegador quer um link do relayium up, não um código.
O que acontece se uma máquina desconhecida enviar para o meu processo serve à escuta?
Em um terminal, você é solicitado a aprová-la por endereço e impressão digital no primeiro envio dela, e a aprovação é lembrada. Sem terminal — um serviço systemd, uma tarefa cron — não há a quem perguntar, então um emissor não reconhecido é rejeitado; autorize-o primeiro com relayium authorize <fingerprint>.
Posso fazer pull de um servidor que não tem o relayium instalado?
Não. O pull sempre precisa do relayium na ponta remota; não há alternativa com tar como há para o push. Instale o relayium lá primeiro.
Onde o relayium guarda minha identidade e os pares confiáveis?
Em ~/.config/relayium por padrão — substitua o local com --config-dir em qualquer comando que toque a identidade ou a confiança.
Pronto para receber sua primeira transferência? Instale a CLI e escolha receive, serve ou pull.
Obter a CLI