A comprehensive tool for analyzing mounted rootfs filesystems (ext4, squashfs, etc.) and providing detailed insights about file sizes, permissions, init scripts, and bloat analysis.
- File Statistics: Complete file size, permission, and metadata analysis
- Directory Sizing: Recursive directory size calculation with percentage breakdown
- File Type Detection: Automatic detection of binaries, scripts, and various file types
- Mount Information: Filesystem mount point and type detection
- Pattern Matching: Detects init scripts using common naming patterns
- Shebang Analysis: Identifies executable scripts by interpreter
- Permission Analysis: Shows script permissions and execution rights
- Interpreter Detection: Identifies the interpreter used by each script
- Large File Detection: Identifies files larger than 10MB
- Duplicate Detection: Finds potential duplicate files by size
- Age Analysis: Identifies old files (>1 year)
- Space Usage: Detailed breakdown of what's consuming space
- Terminal Interface: Rich, colored terminal output with progress indicators
- GUI Interface: Modern tkinter-based graphical interface with tabs
- Export Options: Save reports as text or JSON format
- Python 3.7 or higher
- Linux system (for filesystem analysis)
pip install efv# Clone the repository
git clone https://github.com/osamakader/efv.git
cd efv
# Install in development mode
pip install -e .
# Or install with development dependencies
pip install -e ".[dev]"pip install -r requirements.txt# Analyze the current root filesystem
efv
# Analyze a specific path
efv /path/to/rootfs
# Analyze with output to file
efv /path/to/rootfs -o report.txtefv [PATH] [OPTIONS]
Options:
PATH Path to analyze (default: /)
-o, --output FILE Save report to file
-v, --verbose Verbose output
-h, --help Show help messageefv-gui- Path Selection: Browse or enter filesystem path
- Tabbed Interface:
- Overview: Filesystem summary and mount info
- File Analysis: File type breakdown
- Init Scripts: Startup script detection
- Large Files: Top 20 largest files
- Directory Analysis: Directory size breakdown
- Bloat Analysis: Space optimization suggestions
- Export Options: Save reports as text or JSON
================================================================================
EMBEDDED FILESYSTEM VISUALIZER REPORT
================================================================================
┌─ Filesystem Overview ─────────────────────────────────────────────────────────┐
│ Total Files: 45,231 │
│ Total Size: 2.3GB │
│ Average File Size: 52.1KB │
└───────────────────────────────────────────────────────────────────────────────┘
┌─ Mount Information ──────────────────────────────────────────────────────────┐
│ Device: /dev/sda1 │
│ Mountpoint: / │
│ Fstype: ext4 │
│ Opts: rw,relatime │
└───────────────────────────────────────────────────────────────────────────────┘
┌─ File Type Analysis ────────────────────────────────────────────────────────┐
│ .so │ 1,234 │ 2.7% │ │
│ .py │ 890 │ 2.0% │ │
│ binary │ 567 │ 1.3% │ │
│ script │ 234 │ 0.5% │ │
└───────────────────────────────────────────────────────────────────────────────┘
┌─ Init/Startup Scripts ─────────────────────────────────────────────────────┐
│ /etc/init.d/network │ 2.1KB │ 755 │ /bin/bash │
│ /etc/rc.local │ 1.8KB │ 755 │ /bin/bash │
│ /usr/bin/systemctl │ 45KB │ 755 │ N/A │
└───────────────────────────────────────────────────────────────────────────────┘
┌─ Largest Files (Top 20) ──────────────────────────────────────────────────┐
│ 1 │ /usr/lib/libc.so.6 │ 2.1MB │ │
│ 2 │ /usr/bin/bash │ 1.8MB │ │
│ 3 │ /usr/lib/libstdc++.so.6 │ 1.5MB │ │
└───────────────────────────────────────────────────────────────────────────────┘
┌─ Largest Directories ──────────────────────────────────────────────────────┐
│ /usr/lib │ 856MB │ 37.2% │ │
│ /usr/bin │ 234MB │ 10.2% │ │
│ /var/log │ 123MB │ 5.3% │ │
└───────────────────────────────────────────────────────────────────────────────┘
BLOAT ANALYSIS
────────────────────────────────────────
• Large binaries: 5 files > 10MB
• Potential duplicates: 45.2MB
• Old files (>1 year): 123.4MB
# Analyze a mounted embedded rootfs
python efv.py /mnt/embedded_rootfs
# Focus on init scripts for boot analysis
python efv.py /mnt/embedded_rootfs | grep -A 10 "Init/Startup Scripts"# Find largest directories for cleanup
python efv.py /path/to/rootfs | grep -A 15 "Largest Directories"
# Identify bloat sources
python efv.py /path/to/rootfs | grep -A 10 "BLOAT ANALYSIS"# Analyze a development container
python efv.py /var/lib/docker/containers/container_id/rootfs# Clone the repository
git clone https://github.com/osab270844/efv.git
cd efv
# Install in development mode with all dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linting
flake8 efv/ tests/
mypy efv/
# Format code
black efv/ tests/make help # Show all available commands
make install # Install in development mode
make install-dev # Install with development dependencies
make test # Run tests
make test-cov # Run tests with coverage
make lint # Run linting checks
make format # Format code
make clean # Clean build artifacts
make build # Build the package
make demo # Run the demo
make cli # Run the CLI tool
make gui # Run the GUI tool
make check # Run all checks (format, lint, test)from efv import FilesystemAnalyzer
# Create analyzer
analyzer = FilesystemAnalyzer("/path/to/rootfs")
# Run analysis
report = analyzer.analyze_filesystem()
# Access specific data
print(f"Total files: {report['total_files']}")
print(f"Init scripts: {len(report['init_scripts'])}")
print(f"Large files: {len(report['large_files'])}")# Export detailed report as JSON
efv-gui
# Use "Save as JSON" button in GUI# Run with sudo for protected filesystems
sudo python efv.py /path/to/rootfs# For very large filesystems, use verbose mode to monitor progress
python efv.py /path/to/rootfs -v# Ensure tkinter is available
python -c "import tkinter; print('GUI ready')"- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Web-based interface
- Real-time monitoring
- Network filesystem support
- Advanced duplicate detection (content-based)
- Integration with package managers
- Automated cleanup suggestions
- Performance profiling
- Export to various formats (HTML, PDF, CSV)