Introducing My Home Vault

Written by

in

I’ve always believed that data protection shouldn’t require a PhD in Systems Administration. That’s why I built My Home Vault—a project that has evolved from a simple Rsync script into a comprehensive, self-healing backup ecosystem.

Today, I’m excited to share the latest milestone, featuring a dedicated ZFS Edition.

Why “My Home Vault” is Different

Most backup tools are either too simple (missing error handling) or too complex (requiring heavy software installation). My Home Vault lives in the “Goldilocks Zone”: it’s a single Bash script that brings enterprise features to your home directory or NAS.

Two Engines, One Mission

Depending on your hardware, you can now choose the “Vault” that fits your needs:

  • The Standard Edition: Perfect for USB drives and standard Linux setups. It uses Hard Link Deduplication, meaning if you have 10 identical files, they only take up the space of one.
  • The ZFS Edition: Built for power users. This version automates Native ZFS Snapshots, LZ4 Compression, and Dataset Management. It provides atomic, collision-proof backups that are immune to accidental deletion.

Features at a Glance:

  • VAULT-FIX Mode: Automatically detects and repairs “bit-rot” using checksum verification.
  • 30-Second Wizard: No configuration files to edit manually; the script guides you through setup.
  • Crash-Proof: Designed to handle sudden USB disconnects or NAS network drops without corrupting your data.
  • Cron-Ready: Fully automated, non-interactive mode for “set-and-forget” peace of mind.

Open Source & Community Driven

My Home Vault is, and always will be, open source. I built this to protect my own life’s work, and I’m proud to share it with the community.

Check out the code on GitHub: 🔗 github.com/waelisa/my-home-vault

Standard Edition vs ZFS Edition – At a Glance

Featuremy-home-vault.shmy-home-vault-zfs.sh
PermissionRegular usersudo required
File Systemext4, btrfs, NTFS, etc.ZFS only
CompressionNone (rsync)LZ4 (built-in)
SnapshotsHard links onlyZFS snapshots + hard links
Snapshot NamingN/AAtomic (PID + millisecond)
Mount VerificationBasicZFS dataset check
Pool DetectionN/AAutomatic
Config File~/.my-home-vault.conf~/.my-home-vault-zfs.conf
Log File Prefixvault_*.logvault_zfs_*.log
Best ForUSB drives, regular disksNAS, ZFS pools, data integrity

📋 Common Commands (Both Editions)

bash

# Interactive mode
./my-home-vault.sh                    # Standard
sudo ./my-home-vault-zfs.sh            # ZFS

# Cron/quiet mode (NAS backup)
./my-home-vault.sh --quiet             # Standard
sudo ./my-home-vault-zfs.sh --quiet    # ZFS

# Repair mode (VAULT-FIX)
./my-home-vault.sh --repair            # Standard
sudo ./my-home-vault-zfs.sh --repair   # ZFS

# Help
./my-home-vault.sh --help              # Standard
sudo ./my-home-vault-zfs.sh --help     # ZFS

# Version info
./my-home-vault.sh --version           # Standard
sudo ./my-home-vault-zfs.sh --version  # ZFS

# Re-run setup wizard
./my-home-vault.sh --reconfigure       # Standard
sudo ./my-home-vault-zfs.sh --reconfigure  # ZFS

🎯 Menu Options Comparison

OptionStandardZFS Edition
1Local BackupLocal Backup (with ZFS snapshot)
2Local RestoreLocal Restore
3NAS BackupNAS Backup
4NAS RestoreNAS Restore
5Show InfoShow Info
6VAULT-FIX RepairVAULT-FIX Repair
7Test NASZFS Snapshots
8Setup SSH KeyTest NAS
9Cron SetupSetup SSH Key
10Log ManagementCron Setup
11Cleanup Dry-RunLog Management
12ExitCleanup Dry-Run
13Exit

🔧 ZFS-Specific Commands

bash

# List ZFS snapshots
zfs list -t snapshot | grep mhv

# Browse snapshot contents
ls /tank/mhv_username/.zfs/snapshot/

# Rollback to a snapshot (manual recovery)
sudo zfs rollback tank/mhv_username@mhv_20260222_143022_12345

# Check ZFS dataset status
zfs get all tank/mhv_username

# Check ZFS pool health
zpool status tank

📁 File Locations

bash

# Standard Edition
~/.my-home-vault.conf              # Configuration
~/.my-home-vault/logs/vault_*.log  # Backup logs
~/.my-home-vault/logs/quiet.log    # Cron logs

# ZFS Edition
~/.my-home-vault-zfs.conf          # Configuration  
~/.my-home-vault/logs/vault_zfs_*.log  # Backup logs
~/.my-home-vault/logs/quiet.log    # Cron logs

# Backup storage (configurable)
/your/backup/drive/MyHomeVault/username/
├── current/              # Symlink to latest backup
└── incremental/          # All backups by date
    ├── 2026-02-21_14-30-45/
    ├── 2026-02-22_02-00-01/
    └── ...

🔍 Quick Status Checks

bash

# Check last backup status
grep "SUCCESS" ~/.my-home-vault/logs/quiet.log

# Check last repair status
grep -E "corruption|repaired|VAULT-FIX" ~/.my-home-vault/logs/vault_*.log | tail -5

# Show backup versions (Standard)
ls -la ~/Backups/username/incremental/

# Show ZFS snapshots (ZFS)
zfs list -t snapshot | grep mhv | tail -10

# Check disk space
df -h /your/backup/drive

⚙️ Configuration Examples

Standard Edition (~/.my-home-vault.conf)

bash

LOCAL_BACKUP_BASE="/media/username/BackupDrive/MyHomeVault"
NAS_IP="192.168.100.10"
NAS_USER="username"
NAS_BACKUP_PATH="/home/username/MyHomeVault"
BW_LIMIT=5000
SSH_TIMEOUT=10
SSH_ALIVE=60
RETENTION_DAYS=14
ENABLE_NOTIFICATIONS="yes"
MIN_FREE_SPACE_PERCENT=10

ZFS Edition (~/.my-home-vault-zfs.conf)

bash

USE_ZFS="yes"
ZFS_POOL="tank"
ZFS_DATASET="tank/mhv_username"
ZFS_MOUNTPOINT="/tank/mhv_username"
ZFS_COMPRESSION="lz4"
ZFS_SNAPSHOT_RETENTION=14
ZFS_SNAPSHOT_PREFIX="mhv"
# ... plus all standard settings

🚨 Error Messages & Solutions

ErrorEditionSolution
❌ ERROR: ZFS Edition requires root/sudo permissionsZFSRun with sudo
Destination is not writableBothCheck USB drive connection, run sudo mount -o remount,rw /mount/point
NAS not configuredBothRun setup wizard or check config file
No 'current' backup foundBothRun a backup first
ZFS dataset not mountedZFSsudo zfs mount tank/mhv_username
SSH connection failedBothCheck NAS IP, SSH key setup

💾 Hardware Recommendations

Use CaseStandard EditionZFS Edition
USB DriveAny USB 3.0 driveNot recommended
External HDDWD Elements, Seagate ExpansionNot recommended
NAS (ext4)WD Red Plus, Seagate IronWolfWorks but no snapshots
NAS (ZFS)N/ASeagate IronWolf (best for metadata)
WD Red Plus (best for compression)
Desktop BackupAny internal driveZFS pool with ECC RAM

📊 Feature Matrix

FeatureStandardZFS
Auto-drive detection
Incremental backups
Hard links
NAS support
VAULT-FIX repair
Desktop notifications
Cron integration
Log rotation
USB remount
Disk space check
Non-interactive mode
ZFS compression
ZFS snapshots
Atomic naming
Pool detection
Mount verification
ZFS send/receive

🎯 Quick Decision Guide

Choose Standard Edition if:

  • You’re backing up to USB drives or external HDDs
  • Your NAS uses ext4, btrfs, or NTFS
  • You don’t have ZFS installed
  • You want to run as regular user (no sudo)

Choose ZFS Edition if:

  • You have a ZFS pool on your NAS or local system
  • You want built-in compression (LZ4)
  • You want atomic snapshots with every backup
  • You need point-in-time recovery
  • You’re willing to use sudo

🏁 One-Line Installation

bash

# Standard Edition
curl -O https://raw.githubusercontent.com/waelisa/my-home-vault/main/my-home-vault.sh
chmod +x my-home-vault.sh
./my-home-vault.sh

# ZFS Edition
curl -O https://raw.githubusercontent.com/waelisa/my-home-vault/main/my-home-vault-zfs.sh
chmod +x my-home-vault-zfs.sh
sudo ./my-home-vault-zfs.sh

My Home Vault – Your Data, Fortified. 🔐

https://github.com/waelisa/my-home-vault
MIT License · Built with ❤️ for the Linux community