EncFS: an Encrypted Filesystem for FUSE.
C++ Perl CMake C Python Shell
Latest commit ac87a8b Jan 8, 2017 @vgough committed on GitHub Merge pull request #257 from charles-dyfis-net/shell-pedantry
Suggest "$@", not $*, in documentation
Failed to load latest commit information.
ci revert ci removal Sep 8, 2016
cmake replace rlog with easylogging++ Apr 25, 2016
encfs Suggest "$@", not $*, in documentation Dec 22, 2016
internal upgrade easylogging to v9.84 Sep 15, 2016
intl 1.x: update gettext, replace autosprintf with boost::format Nov 13, 2013
model add coverity model for CHECK operation Sep 8, 2016
po add target to rebuild pot file Sep 9, 2016
tests tests: open file with umask 0777 Jun 25, 2016
.clang-format reformat using clang Oct 19, 2014
.gitignore drop autoconf ignore rules Jun 17, 2015
.travis.yml tweak docs, cleanup metadata Sep 9, 2016
AUTHORS tweak docs, cleanup metadata Sep 9, 2016
CMakeLists.txt CMakeList uses CMAKE_CURRENT_LIST_DIR Oct 3, 2016
COPYING add license text for included sources Apr 25, 2016
COPYING.GPL apply license change Oct 22, 2012
COPYING.LGPL apply license change Oct 22, 2012
ChangeLog add changelog summary wqfor v1.9 series Sep 18, 2016
DESIGN.md Fix pod links in DESIGN.md Feb 28, 2015
INSTALL.md Declare minimum cmake version to have the Intl module Nov 15, 2016
PERFORMANCE.md Put benchmark results into PERFORMANCE.md Dec 8, 2014
README-NLS remove reference to old autoconf script Jun 18, 2015
README.md add travis build badge Sep 8, 2016
build.sh Add "build.sh" helper script Nov 12, 2015
circle.yml replace rlog with easylogging++ Apr 25, 2016
config.h.cmake drop old TR1 test Apr 26, 2016
create-dev-pkg.sh add LIB_INSTALL_DIR override, fixes #213 Sep 15, 2016
devmode improve devmode build options Aug 17, 2016
test.sh tests: fix paths for new build path, add "test.sh" wrapper for usability Nov 12, 2015


EncFS - an Encrypted Filesystem

Build Status

  • Circle: Circle CI
  • Travis: Travis CI
  • Analysis: Coverity


EncFS provides an encrypted filesystem in user-space. It runs in userspace, using the FUSE library for the filesystem interface. EncFS is open source software, licensed under the LGPL.

EncFS is now over 10 years old (first release in 2003). It was written because older NFS and kernel-based encrypted filesystems such as CFS had not kept pace with Linux development. When FUSE became available, I wrote a CFS replacement for my own use and released the first version to Open Source in 2003.

EncFS encrypts individual files, by translating all requests for the virtual EncFS filesystem into the equivalent encrypted operations on the raw filesystem.

For more info, see:


Over the last 10 years, a number of good alternatives have grown up. Computing power has increased to the point where it is reasonable to encrypt the entire filesystem of personal computers (and even mobile phones!). On Linux, ecryptfs provides a nice dynamically mountable encrypted home directory, and is well integrated in distributions I use, such as Ubuntu.

EncFS has been dormant for a while. I've started cleaning up in order to try and provide a better base for a version 2, but whether EncFS flowers again depends upon community interest. In order to make it easier for anyone to contribute, it is moving a new home on Github. So if you're interested in EncFS, please dive in!

Unique Features

EncFS has a few features still not found anywhere else (as of Dec 2014) that may be interesing to you:

Reverse mode

encfs --reverse provides an encrypted view of an unencrypted folder. This enables encrypted remote backups using standard tools like rsync.

Fast on classical HDDs

EncFS is typically much faster than ecryptfs for stat()-heavy workloads when the backing device is a classical hard disk. This is because ecryptfs has to to read each file header to determine the file size - EncFS does not. This is one additional seek for each stat. See PERFORMANCE.md for detailed benchmarks on HDD, SSD and ramdisk.

Works on top of network filesystems

EncFS works on network file systems (NFS, CIFS...), while ecryptfs is known to still have problems.


The master branch contains the latest stable codebase. This is where bug fixes and improvments should go.

The dev branch contains experimental work, some of which may be back-ported to the master branch when it is stable. The dev branch is not stable, and there is no guarantee of backward compatibility between changes.


How about a nice email instead?