Davix aims to make the task of managing files over HTTP-based protocols simple. It is being developed by IT-ST at CERN, and while the project's purpose is its use on the CERN grid, the functionality offered is generic.
HTTP File Management
HTTP is gaining popularity for file management tasks, beyond its traditional use for serving web pages. It is versatile enough to be fit for this purpose;
DELETE requests can be used for basic file manipulation, for example. (uploading, moving, and deleting a file, respectively)
Some common file-management operations are not possible to do with plain HTTP, however, which is why the WebDAV extensions were developed, which davix supports.
Davix also supports a plethora of authentication methods:
- x509 user certificate
- VOMS proxy
- RFC proxy with VOMS extensions support
- username / password
- AWS S3 compatible services
- Microsoft Azure compatible services
Davix provides a shared library as well as a few command line tools. The library offers two sets of APIs, a file-oriented and a POSIX-like interface.
Here are some example invocations of the command-line tools.
# upload a file using a VOMS proxy davix-put myfile https://someserver/dir/myfile -E /tmp/x509up_u1000 # download a file from an Amazon S3 bucket davix-get https://mybucket.s3.amazonaws.com/somefile --s3accesskey [..] --s3secretkey [..] # do an ls on a WebDAV-enabled server davix-ls https://someserver/dir
Install the necessary dependencies:
git clone https://github.com/cern-fts/davix.git cd davix git submodule update --recursive --init mkdir build && cd build cmake .. make
You can now try running an example command:
To generate a blessed release tarball, run
packaging/make-dist.sh from the root of this git repository.
The tarball will appear under
./build, and will correspond to whichever git commit or tag you're currently on.
- Use GitHub for new commits, issues, or pull requests.
- Please don't commit directly on GitLab.
- After a commit, GitLab will mirror the changes automatically, and run CI. Treat Gitlab as if it were ie a Jenkins CI instance.