GithubHelp home page GithubHelp logo

bugnano / archivefs Goto Github PK

View Code? Open in Web Editor NEW
26.0 1.0 1.0 62 KB

A read-only FUSE filesystem for mounting compressed archives, inspired by archivemount.

License: GNU General Public License v3.0

Rust 98.99% Shell 1.01%

archivefs's Introduction

archivefs

Archivefs is a read-only FUSE filesystem for mounting compressed archives, inspired by archivemount.

Features

  • Read-only mount any archive file supported by libarchive to a directory
  • Several orders of magnitude faster decompression compared to archivemount

Archive formats

Archivefs supports all the formats supported by libarchive, including, but not limited to:

  • tar (compressed with gzip, bzip2, xz, zstd)
  • cpio
  • ISO9660 (including Joliet and Rockridge extensions)
  • zip
  • 7-Zip

Note that libarchive has known bugs when reading rar archives.

System requirements

For running

  • Linux Kernel 3.15 or later (While FUSE works on other operating systems, the polyfuse crate used by archivefs only supports Linux at the moment)
  • The fusermount command (usually provided by the fuse or fuse2 package)
  • libarchive

For compiling

  • Rust 1.31 or greater
  • Development files for libarchive (usually provided by the libarchive-dev or libarchive-devel package)

For building the man page

  • Python 3.5 or greater
  • AsciiDoc

Installation

# This will install only the archivefs executable in $HOME/.cargo/bin, without any
# man page. Also, make sure that the $HOME/.cargo/bin directory is in your PATH
cargo install archivefs

# Alternatively, you can build from source using the command
cargo build --release
# and then copy the file target/release/archivefs somewhere in your PATH

# To build the man page:
a2x -f manpage doc/archivefs.1.adoc
# and then copy the file doc/archivefs.1 in a man path (like $HOME/.local/share/man/man1 )

Usage

archivefs [OPTIONS] ARCHIVEPATH MOUNTPOINT

Example session

Consider the gzipped tar archive files.tgz containing files file1 and file2, and an empty directory mnt.

$ ls
files.tgz    mnt/

# Mount the archive file
$ archivefs files.tgz mnt

$ ls mnt
file1    file2

# Perform desired read operations on the archive via mnt/
# For example, to extract a file simply copy it
$ cp mnt/file1 ~/

# Unmount the archive when done
$ umount mnt

Write support

Contrary to archivemount, which sort-of supports writing to an archive by recreating it, archivefs only supports reading from archives.

Hard link support

Note that if an archive contains hard links, they will be treated as separate files by archivefs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.