Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Given two Linux boxes on a LAN, what's the simplest way to transfer files between them?

share|improve this question

9 Answers 9

up vote 21 down vote accepted

I use scp.

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

to copy from the local machine to the remote machine, or

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

to copy from a remote machine to the local machine.

If the username is not the same on the remote machine,

scp user@srchost:/path/to/file/file .
share|improve this answer
3  
I would add you can use -r option with scp to recursively copy an entire directory scp -r source desthost:/path/to/dest/ –  Steve Burdine Aug 11 '10 at 13:48
1  
@Steve_ Good point. Also -C will compress the files as they are being transferred, which can help over slow links. –  KeithB Aug 11 '10 at 17:01
    
It's either scp or rsync for me. –  Josh K Aug 11 '10 at 18:34

Giver is a simple file sharing desktop application. Other people running Giver on your network are automatically discovered and you can send files to them by simply dragging the files to their photo or icon shown in Giver.

In Ubuntu:

sudo apt-get install giver
share|improve this answer

netcat is simple but not all versions close connection reliably.

Here is thread about using socat: socat reliable file transfer over TCP

To sum it up:

Proposed:

Server sending file:

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

Server receiving file:

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

Proposed enhancements:

  • OPEN:out.txt,creat,trunc will delete all the bytes in out.txt before writing to it. This option mimics what you'd expect from cp, and is probably what you want.
  • OPEN:out.txt,creat,excl will refuse to write out.txt if it already exists. Use this option for extra safety.
  • OPEN:out.txt,creat,append will append data to out.txt.
share|improve this answer

For doing backups I often use rsync. If I want to backup onto a remote machine I'll put a line in /etc/fstab to keep the remote machine mounted by NFS or CFIS (Samba).

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

Then have a line in my crontab using rsync.

rsync -av /home/user/sourcedir/ /mnt/backup/destinationdir > /home/user/backup.log
share|improve this answer

Also you could use Giver program. Using it you could transfer files over LAN with 2 clicks or by "drag'n'dropping" file to recipient. Recipients (which also have to run giver) are discovered via Zeroconf, so you don't have to know even their IP. Here's video on how Giver works.

share|improve this answer
2  
As somebody who's worked on Giver in the past, I can say it's a neat app, but it's totally unmaintained and has plenty of bugs, especially when it comes to transferring large files. Don't expect much from it. –  Sandy Aug 11 '10 at 20:20
    
@Sandy yes, I'm aware of bugs. In my case, 1.4G files were transferred successfully. Anyway, using Giver still looks much easier than NFS/rsync/nc/whatever. –  develop7 Aug 15 '10 at 15:51

nfs could be useful.

The Network File System (NFS) allows a client node to perform transparent file access over the network. By using NFS, a client node operates on files residing on a variety of servers and server architectures, and across a variety of operating systems. File access calls on the client (such as read requests) are converted to NFS protocol requests and sent to the server system over the network.

You might require help from your Unix Admin to setup it first time but its very useful.

share|improve this answer
    
For quick-n-dirty *nix-to-*nix transfers, nothing comes close to NFS. A good admin can crank up both boxes and do transfers in less than 5 minutes, it's near-transparent to the rest of the system, and it's well-known and stable. +1 for something that doesn't require banging out a command line every time to transfer something. –  Avery Payne Aug 12 '10 at 1:18

For one off file transfers, I usually use SFTP or an existing samba share.

For keeping in sync, I suggest you try rsync or unison (for 2-way synchronization)

Edit: scp would be better then sftp, since it would work on all SSH enabled hosts

share|improve this answer

I usually mount a directory through ssh via FUSE and sshfs.

Mount:

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

Unmount:

$ fusermount -u /path/to/mount/point
share|improve this answer

I use netcat (if I don't need security)

nc -l -p 1234 < send_file   # 'server'
nc x.y.z.t 1234 > receive_file  # 'client'
share|improve this answer
2  
I especially like this combo: tar -c files and folders/ |pv -cN in|lzop|pv -cN out|nc x.y.z.t 1234 –  jpc Mar 22 '11 at 15:54

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.