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)
| 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)
| File | Actions Reset | |||
|---|---|---|---|---|
| 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.