Transferencia de archivos simple

17

Dadas dos cajas de Linux en una LAN, ¿cuál es la forma más sencilla de transferir archivos entre ellas?

David Thornley
fuente

Respuestas:

22

Yo uso scp.

scp source desthost:/path/to/dest/.

para copiar desde la máquina local a la máquina remota, o

scp srchost:/path/to/file/file .

copiar desde una máquina remota a la máquina local.

Si el nombre de usuario no es el mismo en la máquina remota,

scp user@srchost:/path/to/file/file .
KeithB
fuente
3
Agregaría que puede usar la opción -r con scp para copiar recursivamente un directorio completo scp -r source desthost: / path / to / dest /
Steve Burdine
1
@Steve_ Buen punto. Además, -C comprimirá los archivos a medida que se transfieren, lo que puede ayudar en enlaces lentos.
KeithB
Es scpo rsyncpara mí.
Josh K
6

Normalmente monte un directorio a través de ssh a través de FUSE y sshfs.

Montar:

$ sshfs name@server:/path/to/dir /path/to/mount/point

Desmontar:

$ fusermount -u /path/to/mount/point
Maik
fuente
5

Yo uso netcat (si no necesito seguridad)

nc -l -p 1234 < send_file   # 'server'
nc x.y.z.t 1234 > receive_file  # 'client'
nc3b
fuente
2
Me gusta especialmente este combo:tar -c files and folders/ |pv -cN in|lzop|pv -cN out|nc x.y.z.t 1234
jpc
5

nfs podría ser útil.

El Sistema de archivos de red (NFS) permite que un nodo cliente realice un acceso transparente a los archivos a través de la red. Al usar NFS, un nodo cliente opera en archivos que residen en una variedad de servidores y arquitecturas de servidores, y en una variedad de sistemas operativos. Las llamadas de acceso a archivos en el cliente (como las solicitudes de lectura) se convierten en solicitudes de protocolo NFS y se envían al sistema del servidor a través de la red.

Es posible que necesite la ayuda de su administrador de Unix para configurarlo por primera vez, pero es muy útil.

Hemant
fuente
Para las transferencias rápidas n-dirty * nix-to- * nix, nada se acerca a NFS. Un buen administrador puede poner en marcha ambas cajas y hacer transferencias en menos de 5 minutos, es casi transparente para el resto del sistema y es bien conocido y estable. +1 para algo que no requiere golpear una línea de comando cada vez para transferir algo.
Avery Payne
2

Para transferencias de un solo archivo, generalmente uso SFTP o un recurso compartido de samba existente.

Para mantenerse sincronizado, le sugiero que pruebe rsync o unison (para sincronización bidireccional)

Editar: scp sería mejor entonces sftp, ya que funcionaría en todos los hosts habilitados para SSH

Gert
fuente
2

Para hacer copias de seguridad, a menudo uso rsync. Si quiero hacer una copia de seguridad en una máquina remota, pondré una línea en / etc / fstab para mantener la máquina remota montada por NFS o CFIS (Samba).

192.168.0.101:/ /mnt/backup nfs rsize=8192,wsize=8192,timeo=14,intr 0 0

Luego tenga una línea en mi crontab usando rsync.

rsync -av /home/user/sourcedir/ /mnt/backup/destinationdir > /home/user/backup.log
jjclarkson
fuente
1

netcat es simple pero no todas las versiones cierran la conexión de manera confiable.

Aquí hay un hilo sobre el uso socat: transferencia de archivos confiable de socat a través de TCP

Para resumirlo:

Propuesto :

Archivo de envío del servidor:

server$ socat -u FILE:test.dat TCP-LISTEN:9876,reuseaddr
client$ socat -u TCP:127.0.0.1:9876 OPEN:out.dat,creat

Archivo de recepción del servidor:

server$ socat -u TCP-LISTEN:9876,reuseaddr OPEN:out.txt,creat && cat out.txt
client$ socat -u FILE:test.txt TCP:127.0.0.1:9876

Mejoras propuestas :

  • OPEN:out.txt,creat,trunc eliminará todos los bytes en out.txt antes de escribir en él. Esta opción imita lo que esperarías cp, y es probablemente lo que deseas.
  • OPEN:out.txt,creat,excl se negará a escribir out.txt si ya existe. Use esta opción para mayor seguridad.
  • OPEN:out.txt,creat,appendagregará datos a out.txt.
Grzegorz Wierzowiecki
fuente
1

Giver es una sencilla aplicación de escritorio para compartir archivos. Otras personas que ejecutan Giver en su red se descubren automáticamente y puede enviarles archivos simplemente arrastrándolos a su foto o icono que se muestra en Giver.

En Ubuntu:

sudo apt-get install giver
Gasuma
fuente
0

También puedes usar el programa Giver . Al usarlo, puede transferir archivos a través de LAN con 2 clics o "arrastrando y soltando" el archivo al destinatario. Los destinatarios (que también deben ejecutarse giver) se descubren a través de Zeroconf, por lo que no tiene que saber ni siquiera su IP. Aquí hay un video sobre cómo funciona Giver .

Andrei Dziahel
fuente
2
Como alguien que trabajó en Giver en el pasado, puedo decir que es una aplicación ordenada, pero está totalmente sin mantenimiento y tiene muchos errores, especialmente cuando se trata de transferir archivos grandes. No esperes mucho de eso.
Sandy
@ Sandy sí, estoy al tanto de los errores. En mi caso, los archivos 1.4G se transfirieron con éxito. De todos modos, usar Giver todavía parece mucho más fácil que NFS / rsync / nc / lo que sea.
Andrei Dziahel