La forma más sencilla de enviar archivos a través de la red


14

¿Cuál es la forma más sencilla y versátil de enviar archivos a través de la red a otras computadoras? Con eso me refiero a las computadoras que otras personas están usando en este momento. No creo que SSH funcione si la computadora tiene una sesión activa abierta.

Hasta ahora estoy usando netcat, que funciona bien. Pero, ¿hay otras formas simples de hacer esto? Un problema que tengo netcates que el receptor necesita saber el final del archivo y debe encontrar un nombre para la transmisión.


1
Si desea seguir usando netcatpuede enviar un tararchivo y extraerlo sobre la marcha. Eso resolverá el problema del nombre del archivo y es más flexible. Pero al final supongo scpo rsynces la opción más fácil.
Marco

¿Cómo funcionaría enviar un alquitrán y extraerlo sobre la marcha?
TomTom

1
Supongo que estaría netcat hostname | tar -xen el directorio donde desea colocar los archivos.
Dmitry Grigoryev

Respuestas:


21

Estás complicando tu vida innecesariamente. Uso scp.

Para transferir un archivo mi_archivo de su directorio local en el directorio / foo / bar en la máquina otherhost como usuario de usuario , aquí está la sintaxis: scp myfile user@otherhost:/foo/bar.

EDITAR: Vale la pena señalar que la transferencia a través de scp / SSH está encriptada mientras que la transferencia a través de netcat o HTTP no lo está. Entonces, si está transfiriendo archivos confidenciales, use siempre el primero.


¿No necesito una contraseña para scpla cuenta de usuario?
TomTom

Sí, por supuesto. Necesita una contraseña para la cuenta user@otherhost.
dr01

2
No, no necesita una contraseña si usa la autenticación de clave pública
YoMismo

99
Ok, si quieres ser exigente, digamos que debes autenticarte como user@otherhost.
dr01

1
Además, como simplificación, si su nombre de usuario es el mismo en ambas máquinas, puede excluir el nombre de usuario. Sin embargo, aún le pedirá una contraseña cuando corresponda.
Sildoreth

10

También puedes probar

python -m SimpleHTTPServer 8180

Servirá los archivos en el directorio en el que se ejecutó a través de HTTP, puede acceder a través del navegador.


O use darkhttpd cuando no esté satisfecho con el rendimiento.
TNW

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

Consulte aquí para obtener más información sobre esta opción: askubuntu.com/a/95607/42073
Erel Segal-Halevi

¡Gracias! Perfecto para obtener algunos archivos en un sistema de prueba de Windows
QwertyChouskie

9

Si está contento con netcatusted, puede solucionar el problema del nombre del archivo introduciéndose tar. Esto también simplifica el envío de múltiples archivos a la vez, así como el envío de directorios.

En el lado de envío use:

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

Y en el lado receptor:

nc -l <port> | tar x

Otra solución sería usar rsynco scp.


Por lo general, también agrego -q2 al envío netcat, para que se cierre la conexión al final de la transmisión.
Simon Richter

No entiendo por qué esto debería ser necesario. Se apaga automáticamente sin la -qopción.
Marco

Eso depende de la implementación de netcat que uses. Hay implementaciones que solo cierran una dirección de la secuencia TCP cuando se cierra stdin, porque la otra dirección aún puede estar activa.
Simon Richter

tar | ssh tartambién funciona muy bien en los casos en que scp se cae y rsync no está disponible.
hobbs

2

Por supuesto, sshfunciona si hay otra sesión abierta. Solo puedes hacer

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

O, para copiar a su directorio local:

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

¿Es posible al revés, por ejemplo ssh lubuntu '>newfile.txt' <file.txt?
heemayl

1
@heemayl sí, para pasar a un archivo remoto, lo harías cat local.file | ssh user@host "cat > remote.file", o ssh user@host "cat > remote.file" < local.file.
terdon

0

Si ambos hosts están en la misma LAN, puede usar woos .

Es extremadamente simple de usar.

Si el remitente y el receptor están EN CUALQUIER LUGAR de Internet y usted tiene que transferir GRANDES ARCHIVOS, debe instalar F * EX: http://fex.belwue.de/index.html


1
scp básico también es extremadamente simple, y una herramienta que en realidad es distribuida, confiable y utilizada por millones de personas, a diferencia de estas herramientas caseras que parecen ser promovidas por su autor.
Jack Wasey
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.