My other free software | My homepage | Donate

ftpfs v3 - FTP filesystem for GNU/Linux +
Advanced C++ FTP Client Library

This is a part of C++ Virtual Filesystems package.

Description
Access FTP as normal file system + FTP C++ library
Requirements/dependencies
  • New versions work use FUSE which is built-in in Linux kernel and is supported by some other OSes (FreeBSD, Solaris, etc.)
  • LUFS 0.9.7 is needed for old (0.1.x) versions.
  • CommonC++ library. (In the future compiling with other TCP C++ libraries may be supported also.)
Download
virtualfs-c++ 0.3 (preliminary release of FTP client C++ library)
ftpfs v3-0.1.3 (older functional but buggy FTP filesystem implementation)

This is ftpfs - FTP accessed as normal file system. This project is the base for the GNU/Linux FTP filesystem. It also contains an advanced FTP client C++ library.

Versions

Note, with some Linux kernels (2.6.7) FTP downloading with this FTP client is very slow (most probably it was a Linux kernel bug.)

ftpfs 0.1.x

There was a working implementation of ftpfs in the version 0.1.x of my ftpfs package. It requires LUFS. (Now LUFS is considered supersedeed with FUSE.)

This FTP implementation works in practice, but I advise to not rely on it for reliable file transfer. (Especially error codes returned by functions are not properly debugged). Also it probably may cause Linux freeze/panic on unmounting because of a possible LUFS bug. So remount your filesystems readonly before unmounting this ftpfs to be sure of no data lost.

This implementation of ftpfs is based on ftpfs distributed with LUFS 0.9.7. This ftpfs is a replacement of the ftpfs from LUFS 0.9.7. Almost all changes (as of FTPFSv3 0.1.x) concern only that C sockets are replaced with C++ TCP interface (see below).

See LUFS 0.9.7 documentation about how to use ftpfs.

C++ Virtual Filesystems 0.3.x

The current development version 0.3.x of ftpfs is a part of C++ Virtual Filesystems package.

The release 0.3.x contains no functional FTP filesystem but it contains functional (however not yet tested) C++ FTP library and C++ code useful for development of other virtual filesystems.

Misc Notes

This ftpfs code is also intended to be the base for FTP fs in the future versions of GNU/Linux in general.

Why I have rewritten it? TCP library wrapper

The reason why I have rewritten ftpfs to use C++ TCP classes instead of simple C functions is that ftpfs distributed with LUFS 0.9.7 has no proper support for TCP timeouts. Additionally these had no support for such things as proxies, IPv6, etc. These missing features demand to rewrite ftpfs to be based on an advanced C++ class library.

For TCP networking in FTPFSv3 I have written a simple C++ wrapper around CommonC++ library. Note that this wrapper can be easily ported to use other C++ TCP libraries instead of CommonC++ (e.g. skstream++). This should be a configure option.

This C++ TCP wrapper may be useful for other network filesystems and TCP programming as well.

Related links

This package

Other FTP filesystems for Linux

Linux userspace filesystems

Other links

My other free software | My homepage | Donate