Maneira mais simples de enviar arquivos pela rede


14

Qual é a maneira mais simples e versátil de enviar arquivos pela rede para outros computadores? Com isso, quero dizer computadores que outras pessoas estão usando no momento. Não acho que o SSH funcione se o computador tiver uma sessão ativa aberta.

Até agora estou usando netcat, o que funciona bem. Mas existem outras maneiras simples de fazer isso? Um problema que tenho netcaté que o destinatário precisa saber o final do arquivo e criar um nome para o fluxo.


1
Se você quiser continuar usando, netcatpode enviar um tararquivo e extraí-lo em tempo real. Isso resolverá o problema do nome do arquivo e é mais flexível. Mas no final eu acho scpou rsyncé a opção mais fácil.
Marco

Como seria o envio de um alcatrão e sua extração em tempo real?
TomTom

1
Suponho que estaria netcat hostname | tar -xno diretório em que você deseja colocar os arquivos.
Dmitry Grigoryev

Respostas:


21

Você está complicando sua vida desnecessariamente. Use scp.

Para transferir um arquivo myfile de seu diretório local para o diretório / foo / bar na máquina otherhost como usuário do usuário , aqui está a sintaxe: scp myfile user@otherhost:/foo/bar.

EDIT: Vale a pena notar que a transferência via scp / SSH é criptografada, enquanto a transferência via netcat ou HTTP não é. Portanto, se você estiver transferindo arquivos confidenciais, sempre use o primeiro.


Não preciso de uma senha para scpa conta de usuário?
TomTom

Sim, claro. Você precisa de uma senha para a conta user@otherhost.
dr01

2
Não, você não precisa de uma senha se você usar autenticação de chave pública
yomismo

9
Ok, se você quiser ser exigente, vamos declarar que você precisa se autenticar como user@otherhost.
dr01

1
Além disso, como uma simplificação, se o seu nome de usuário for o mesmo nas duas máquinas, você poderá excluir o nome de usuário. No entanto, ainda será solicitada uma senha quando aplicável.
Sildoreth

10

Você também pode tentar

python -m SimpleHTTPServer 8180

Ele servirá os arquivos no diretório em que é executado através de HTTP, você pode acessá-lo através do Navegador.


Ou use darkhttpd quando estiver insatisfeito com o desempenho.
TNW

1
Para Python 3: python3 -m http.server <port>.
dotancohen

Veja aqui para mais informações sobre esta opção: askubuntu.com/a/95607/42073
Segal-Halevi

Obrigado! Perfeito para obter alguns arquivos em um sistema de teste do Windows
QwertyChouskie

9

Se você estiver satisfeito, netcatpoderá solucionar o problema do nome do arquivo, introduzindo-o tar. Isso também simplifica o envio de vários arquivos de uma só vez, bem como o envio de diretórios.

No lado de envio, use:

tar cf - <files> | nc <host> <port>

E no lado receptor:

nc -l <port> | tar x

Outra solução seria usar rsyncor scp.


Normalmente, adiciono -q2 ao envio netcattambém, para desligar a conexão no final do fluxo.
Simon Richter

Não entendo por que isso deve ser necessário. Ele desliga automaticamente sem a -qopção.
Marco

Isso depende de qual implementação de netcat você usa. Existem implementações que fecham apenas uma direção do fluxo TCP quando o stdin é fechado, porque a outra direção ainda pode estar ativa.
21915 Simon Simonter

tar | ssh tartambém funciona muito bem nos casos em que o scp cai e o rsync não está disponível.
Hbbs #

2

Obviamente sshfunciona se outra sessão estiver aberta. Você pode apenas fazer

ssh user@host cat /path/to/file.tar  > localfile.tar

Ou, para copiar para o diretório local:

scp user@host:/path/to/file.tar .

É possível o contrário, por exemplo ssh lubuntu '>newfile.txt' <file.txt?
heemayl

1
@ heemayl sim, para cat em um arquivo remoto, você faria cat local.file | ssh user@host "cat > remote.file", ou ssh user@host "cat > remote.file" < local.file.
terdon

0

Se os dois hosts estiverem na mesma LAN, você poderá usar o woos .

É extremamente simples de usar.

Se o remetente e o destinatário estiverem em QUALQUER LUGAR da Internet e você precisar transferir GRANDES ARQUIVOS, instale o F * EX: http://fex.belwue.de/index.html


1
O scp básico também é extremamente simples e uma ferramenta que é realmente distribuída, confiável e usada por milhões de pessoas, ao contrário dessas ferramentas caseiras que parecem ter sido promovidas por seus autores.
21818 Jack Wasey
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.