Simple file transfer

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

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

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 <a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="413432243301323322292e3235">[email protected]</a>:/path/to/file/file .

Method 2

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

Mount:

$ sshfs <a href="https://getridbug.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bad4dbd7dffac9dfc8ccdfc8">[email protected]</a>:/path/to/dir /path/to/mount/point

Unmount:

$ fusermount -u /path/to/mount/point

Method 3

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'

Method 4

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.

Method 5

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

Method 6

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

Method 7

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.

Method 8

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

Method 9

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.

Method 10

If you do not have an account (password) on the receiving host you can use woos (web offer one stream):

woos file-or-directory …

http://fex.belwue.de/fstools/woos.html

Method 11

There are a lot of good answers here, and some mention Giver and how it has trouble with large files. A very similar tool which handles large files seamlessly and gzips the transfer is portal.

(NOTE: I wrote this!)

How to use it

Alice wants to send <folder1> and <file.txt> to Bob, who can be behind the same NAT for direct transfer or anywhere on the internet for relayed transfer. Portal will use direct transfer if it’s possible.

Alice initializes the file transfer by executing the following in her shell

$ portal send <folder1> <file.txt>

This outputs a temporary password, which Alice communicates to Bob via some other secure channel.

# the output of the send command, use this password to receive the files 
> 1-supernova-gamma-ray

Bob executes the following command to receive folder1 and file.txt

$ portal receive 1-supernova-gamma-ray

The file transfer will now begin!

Pros

  • e2e encryption
  • fast gzip (de)compression
  • simple protocol aids transfer speed
  • handles folders of any sort and depth
  • direct communication if ports are open or behind same NAT

Cons

  • does not do NAT traversal so transfer goes through a relay if direct communication cannot be established
  • it’s a new tool so it is untried in different systems and might have weird bugs


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x