Skip to main content

ext4-cli

Read ext4 filesystems from image files and block devices — without mounting them.

Quick start

# Install (pick one)
cargo install ext4-cli          # From crates.io
pip install ext4-cli            # Via pip
uvx ext4-cli --help             # Run without installing (via uv)

# Use
ext4 --source disk.img ls /etc
ext4 --source disk.img cat /etc/fstab
ext4 --source disk.img cp /etc /tmp/etc-backup -r

Installation

From crates.io

cargo install ext4-cli

From PyPI

pip install ext4-cli
# or run without installing:
uvx ext4-cli ls /

From Homebrew

brew install rvben/tap/ext4

From GitHub releases

Pre-built binaries for Linux (x64, arm64) and macOS (x64, arm64) on the releases page.

Usage

All commands require a source — an ext4 image file or raw block device — via --source or the EXT4_SOURCE environment variable:

export EXT4_SOURCE=/dev/rdisk4s2
ext4 ls /

Commands

ls — list directory contents

ext4 --source disk.img ls                     # List root directory
ext4 --source disk.img ls /etc                # List /etc
ext4 --source disk.img ls -l /etc             # Long format (permissions, uid, gid, size)
ext4 --source disk.img ls -a /etc             # Include dotfiles
ext4 --source disk.img ls --json /etc         # JSON output

cat — print file contents

ext4 --source disk.img cat /etc/fstab
ext4 --source disk.img cat /etc/passwd

cp — extract files

ext4 --source disk.img cp /etc/fstab ./fstab          # Extract a file
ext4 --source disk.img cp /etc /tmp/etc-backup -r     # Extract a directory tree

stat — show file metadata

ext4 --source disk.img stat /etc/fstab
ext4 --source disk.img stat --json /etc/fstab

info — show filesystem metadata

ext4 --source disk.img info
ext4 --source disk.img info --json

Raw block devices (macOS)

On macOS, use the raw disk path (/dev/rdisk*) for better performance. Reading raw block devices requires root access:

sudo ext4 --source /dev/rdisk4s2 ls /

Exit codes

Code Meaning
0 Success
1 General error
2 Permission denied
3 Path not found

Development

make fixtures   # Generate test fixtures (requires e2fsprogs)
make test       # Run tests
make lint       # Run fmt + clippy
make install    # Build and install

License

MIT OR Apache-2.0

Releasing

Vership owns versioning, changelog generation, release commits, and tags. See the release runbook for the verified workflow and recovery policy.

Metadata

Release files for ext4-cli 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ext4-cli 0.0.5
File Size Uploaded Provenance Actions
ext4_cli-0.0.5.tar.gz 60.5 kB Without provenance Details for ext4_cli-0.0.5.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for ext4-cli 0.0.5
File Actions
ext4_cli-0.0.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details for ext4_cli-0.0.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
ext4_cli-0.0.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details for ext4_cli-0.0.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
ext4_cli-0.0.5-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for ext4_cli-0.0.5-py3-none-macosx_11_0_arm64.whl
ext4_cli-0.0.5-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details for ext4_cli-0.0.5-py3-none-macosx_10_12_x86_64.whl

Total release size: 3.0 MB

Release files / ext4_cli-0.0.5.tar.gz

Download URL ext4_cli-0.0.5.tar.gz
Size 60.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2c83313b0c0a59e7cf4e93eef67588a7c9517fa1efa5abf09b8c722555df8f8e
BLAKE2b-256 checksum
How to use checksums
ba49c90b14a9928da071eeeb287211ec786273007fc77beedde4581e0ce2e991
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ext4_cli-0.0.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL ext4_cli-0.0.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 772.9 kB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
c90dc48fd982b1653284bd97f4db04b095325337be9efc26173aeebb64c88151
BLAKE2b-256 checksum
How to use checksums
fbef47dad85963a1119e44b23b8d6d4abbd0080163b5dbf8c063817e012703d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ext4_cli-0.0.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL ext4_cli-0.0.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 735.0 kB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
30cd6ed49a51e8fa36d4476c10194c9e8def63a064f32d68b9bae01f9488a9e7
BLAKE2b-256 checksum
How to use checksums
8ef1fd653a53da233e52ebc70aa60735fcea476a73bdfdaf563448f4a1a2cbd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ext4_cli-0.0.5-py3-none-macosx_11_0_arm64.whl

Download URL ext4_cli-0.0.5-py3-none-macosx_11_0_arm64.whl
Size 693.2 kB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
27405f4b60c303ef03c5f1db9fedfc8d9460be923a816f1a4fb33bbe375ba76f
BLAKE2b-256 checksum
How to use checksums
d407e7a99084e965b09c911218302f11036d27864674a4dd3209fe22d6a55bff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / ext4_cli-0.0.5-py3-none-macosx_10_12_x86_64.whl

Download URL ext4_cli-0.0.5-py3-none-macosx_10_12_x86_64.whl
Size 724.4 kB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
8c5f24dcbbea8328addf577073561c4699374a77cce9a94e8e830249902686ee
BLAKE2b-256 checksum
How to use checksums
edf4d3405745702a718e3474961336b349d93b75a41b59595e6a47a2d689c123
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for ext4-cli 0.0.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page