Which lightweight HTTP or FTP Server is good for simple file transfer?

36,092

Solution 1

I'm often using this quick Python hack to serve a directory over HTTP.

python -m SimpleHTTPServer &

will serve the current directory.

By default, it binds to port 8000.

To choose another port:

python -m SimpleHTTPServer 9090 &

If you choose a port lower than 1024 on *nix, you might need root privileges, otherwise bind() will fail.

Solution 2

Someone on SO pointed me at Woof. A minimal httpd in python with an interface optimized just for such uses. It doesn't actually meet all your requirements, but by allowing you to specify the number of times it will connect it allows you to use the "Are you ready? I'm starting the server now." approach to securing the transfer.

To allow one (1) connection to download thisfile on port 8080, you just run

$ woof thisfile

It's that easy.

Here is the rather abused original. If you like it, go vote for Nate.

Solution 3

You can try webfs which is available through the Ubuntu repository:

Webfs (a.k.a. webfsd) is a simple HTTP server for purely static content. You can use it to serve the content of an FTP server via HTTP, for example. It can also be used to quickly export some files by starting an httpd server in a few seconds, without editing config files first.

Another option is HFS (Http File Server), a Windows app that works well through Wine.

HFS (Http File Server) is file sharing software which allows you to send and receive files. You can limit this sharing to just a few friends, or be open to the whole world. HFS is different from classic file sharing because there is no network. [...] Since it is actually a web server, your friends can download files as if they were downloading from a website using a web browser.

Solution 4

Please ignore if you are not open to alternatives, but the fact that you are willing to install a HTTP server with no preferences shows me that you want to get the job done of transfering a file more so than how it is done -

May I recommend that you install a FTP server?

It will allow you to pretty much do everything you require and is usually very easy to set up,you can even configure the port to use 80 if that is a requirement.

Share:
36,092

Related videos on Youtube

rwadman
Author by

rwadman

Updated on September 17, 2022

Comments

  • rwadman
    rwadman over 1 year

    This question is a followup to How to copy files to an untrusted computer?, as there doesn't seem to be a dedicated app for this purpose, I am now searching for a http or ftp server as an alternative. More specifically I am searching for a lightweight server that is usable for simple one-time file transfer between computers. By that I mean it should act as rsync/scp replacement to get files from one computer to another, not as a classic web server. Furthermore it should:

    • run in userspace
    • be trivial to configure (i.e. no config file, everything doable via command line)
    • support username/password
    • support continuation of downloads
    • support the export of single files instead of whole directories

    dbr's answer to the previous question gets close, but is of course just an ad hoc hack that lacks many useful features.

    • o0omycomputero0o
      o0omycomputero0o about 8 years
      Just use Apache2 it faster than python SimpleHTTPServer about 4x.
  • A Dwarf
    A Dwarf over 14 years
    I have to agree. And solutions like Pure-FTPd make a lot more sense, than file transmission across http.
  • rwadman
    rwadman over 14 years
    FTP would of course be fine too, but most FTP servers I know aren't exactly lightweight and come with plenty of ugly extra baggage that makes them unfit for simple one time file transfers (i.e. require root rights, accounts on the machine for password access, unflexible directory handling, etc.). With Pure-FTPd I couldn't even figure out how to start it as non-root user.
  • Lee B
    Lee B over 14 years
    Agreed. It's called File Transfer Protocol for a reason. HTTP, on the other hand, is HyperText Transfer Protocol. Chances are you're not interested in HyperText right now.
  • Lee B
    Lee B over 14 years
    But SFTP would be better. Personally I find rsync over ssh just fine.
  • dmckee --- ex-moderator kitten
    dmckee --- ex-moderator kitten over 14 years
    FTP is not a stupid idea, but have you a suggestion for one that is a bog simple to set up as the OP has requested?
  • dmckee --- ex-moderator kitten
    dmckee --- ex-moderator kitten over 14 years
    What's up with the down votes here? The OP asked for simple http servers, and people have offered them. So what is the problem.
  • rwadman
    rwadman over 14 years
    @LeeB: sftp/rsync/scp would require having direct access to the other host, which I don't have, see original question for more detailed explanation.
  • dmckee --- ex-moderator kitten
    dmckee --- ex-moderator kitten over 14 years
    The advantage of http is that each and every general use computer has a web browser on it, and the user will be comfortable using it. OK, it supports ftp too, but if your going to use a web browser anyway...
  • William Hilsum
    William Hilsum over 14 years
    in my opinion, a ftp server is a lot easier to set up than a http one, and I know of several OS's with no browser (some without even links!) but all of these (and I can't think of many that don't) have a command line ftp program. I am trying to find a easy to use ftp program now - I only know of easy ones for Windows.
  • poolie
    poolie about 11 years
    thttpd used to be my favorite answer too, but it was removed from Debian, Ubuntu, and RedHat in 2011 because it was "orphaned, has release-critical bugs, and is dead upstream." I wouldn't recommend it anymore.
  • user 99572 is fine
    user 99572 is fine over 10 years
    How does that answer the question? Be more specific.
  • merlin2011
    merlin2011 over 10 years
    Really not sure why this question was closed. The question and the answer were both very useful.
  • Eliran Malka
    Eliran Malka about 10 years
    Or the Python 3 equivalent: python3 -m http.server
  • SuperSafie
    SuperSafie over 5 years
    Also works great for "upload" (in case you need a file from a user that can't or won't install a server themselves)
  • SuperSafie
    SuperSafie over 5 years
    HFS also works great for "upload" (in case you need a file from a user that can't or won't install a server themselves)