1 contributor
# AutoNAS v3.0 - Sistem de Montare Automată cu Unified Interface
AutoNAS este un sistem inteligent pentru montarea automată a diskurilor externe cu configurarea IP-urilor, exporturilor NFS și **arhitectura revoluționară Background Import** pentru import scalabil de camere digitale. Sistemul detectează automat conectarea diskurilor USB/SATA externe, le montează, configurează IP-uri pe interfețe de rețea și exportă conținutul prin NFS.
## 🎉 **Nouă în v3.0: Clean User Interface**
- **🚀 Scriptul Unificat** - Un singur script `autonas` pentru toate operațiunile
- **⚡ Interfață Curată** - Doar comanda `autonas` vizibilă în autocomplete
- **🔄 Background Import** - Import-uri în background fără timeout constraints
- **📊 Cod Optimizat** - 47% reducere cod prin eliminarea duplicărilor
- **🗂️ Scripturi Organizate** - Toate scripturile interne ascunse în `/usr/local/lib/autonas/`
## 🌟 **Interfața Curată AutoNAS**
### Comanda Principală (Singura Vizibilă)
```bash
autonas <command> [options]
```
*Doar comanda `autonas` apare în autocomplete - toate scripturile interne sunt ascunse*
### Operațiuni Disponibile
```bash
# Operațiuni Diskuri
autonas attach <uuid|name|mount_point> # Montează disk automat
autonas detach <uuid|name|mount_point> # Demontează disk
autonas list # Listează diskurile configurate
# Management Configurații
autonas add [uuid] # Adaugă configurație nouă
autonas show # Afișează toate device-urile detectate
autonas status # Status sistem complet
# Utilități
autonas --help # Ajutor complet
```
### Avantaje Interfață Curată
- **Un singur command vizibil** - doar `autonas` în autocomplete
- **Interfață consistentă** pentru toate operațiunile
- **Cod optimizat** cu 47% reducere prin eliminarea duplicărilor
- **Scripturi organizate** - toate utilitarele interne în `/usr/local/lib/autonas/`
- **Logging unificat** cu tag-uri comune
## 🚀 Instalare în Cluster
AutoNAS este destinat exclusiv pentru instalare pe cluster de servere prin sistemul de deploy remote:
```bash
# Clonează repository-ul
git clone <repository-url> autoNAS
cd autoNAS
```
## 🌐 Deploy Remote
AutoNAS folosește exclusiv deploy remote pentru instalarea și managementul pe nodurile cluster-ului:
```bash
# Instalare completă pe toate serverele (192.168.2.91-93)
./deploy.sh install
# Dezinstalare completă de pe toate serverele
./deploy.sh uninstall
# Instalare doar pe server specific
./deploy.sh install 192.168.2.91
# Management servicii
./deploy.sh start # Pornește serviciile
./deploy.sh restart # Restartează serviciile
./deploy.sh stop # Oprește serviciile
./deploy.sh status # Verifică statusul
```
### Caracteristici Deploy:
- ✅ **Instalare exclusiv cluster** - destinat doar pentru noduri multiple
- ✅ **Verificare host status** - testează disponibilitatea cu ping
- ✅ **Conectivitate SSH** - validează accesul prin chei SSH
- ✅ **Transfer eficient** - sincronizare cu rsync
- ✅ **Error handling** - management robust al erorilor
- ✅ **Logging colorat** - feedback clar pentru fiecare operație
### Pregătirea pentru Deploy:
1. **Configurează cheile SSH** pe serverele țintă
2. **Testează conectivitatea**: `./deploy.sh status`
3. **Deploy complet**: `./deploy.sh install`
## 📋 Funcționalități Principale
### 🔌 Detectare Automată
- **Detectare prin udev** pentru diskuri USB, SATA externe și USB-to-SATA bridges
- **Suport pentru multiple tipuri** de device-uri (removable, ATA cu USB properties)
- **Detectare inteligentă** bazată pe UUID filesystem
### 🗂️ Trei Tipuri de Configurare
#### 1. **NFS Share Complet** (acces de rețea)
```bash
autonas add <uuid> # Selectează [1] - NFS share complet
```
- Montare automată + configurare IP + export NFS
- Acces complet de rețea pentru alte mașini
- Perfect pentru backup servere și storage partajat
#### 2. **Montare Locală Simplă** (doar local)
```bash
autonas add <uuid> # Selectează [2] - Montare locală
```
- Doar mount point local, fără IP și NFS
- Ideal pentru storage local rapid
- Perfect pentru backup-uri și scratch space
#### 3. **Import Cameră Automat** (procesare media)
```bash
autonas add <uuid> # Selectează [3] - Import cameră
```
- Mount → import media files → unmount automat
- Organizare automată cu EXIF și UTC conversion
- Background processing fără timeout constraints
### 🌐 Configurație NFS Optimizată
```
*(rw,all_squash,insecure,async,no_subtree_check,anonuid=0,anongid=0)
```
### 🔄 Management Inteligent
- **Configurare prin UUID** pentru identificare precisă
- **Protecția configurațiilor** utilizatorului la reinstalare
- **Logging detaliat** pentru debugging și monitorizare
- **Error handling robust** cu mesaje informative
## 📊 Comenzi de Management Rapide
### Flux de Lucru Tipic
```bash
# 1. Detectează UUID-ul diskului conectat
autonas show
# 2. Configurează diskul (interactiv)
autonas add <uuid>
# 3. Verifică statusul
autonas list
autonas status
# 4. Monitorizează log-urile
journalctl -t autonas -f
```
### Configurare Rapidă Exemplu
```bash
# Conectează diskul și detectează UUID
$ autonas show
Available storage devices:
[1] /dev/sdb1 → UUID: 920fe1b7-4091-4d6a-bab8-2f48d8d704bc (ext4, 1.8TB)
# Configurează pentru NFS
$ sudo autonas add 920fe1b7-4091-4d6a-bab8-2f48d8d704bc
Input name: backup-disk
Configuration type: [1] NFS share complet
Input IP: 192.168.10.25
Input interface: thunderbridge
✓ Configuration added and disk mounted!
# Verifică rezultatul
$ autonas list
Configured disks:
[1] backup-disk (920fe1b7-4091-4d6a-bab8-2f48d8d704bc) → NFS: 192.168.10.25
```
## 📷 Camera Import Automation
AutoNAS v3.0 introduce arhitectura revoluționară **Background Import** pentru import automat scalabil de camere digitale:
### 🔄 Background Import Architecture
- **Service-Based Import** - Separare completă mount/import prin systemd services
- **Unlimited Duration** - Import-uri fără timeout constraints (testat cu 300+ files)
- **Auto-Unmount** - Workflow complet automat mount → import → unmount
- **UTC Conversion** - Conversie perfectă UTC → Local Time pentru EXIF
### Configurare Camera Import
```bash
# Configurează camera pentru import automat
autonas add <camera-uuid>
# Selectează [3] - Import cameră automat
# Setează destinația: /mnt/storage/photos
```
### Workflow Automat Camera
1. **Conectare cameră** → AutoNAS detectează UUID-ul configurat ca IMPORT
2. **Montare temporară** → Mount point temporar creat automat
3. **Background Import** → Service separat procesează fișiere fără timeout
4. **Organizare EXIF** → Sortare automată pe date din metadate
5. **Auto-Cleanup** → Demontare automată după finalizare
## 🚨 Troubleshooting Rapid
### Disk nu se detectează
```bash
journalctl -t autonas -f # Monitorizează log-urile
autonas show # Verifică device-urile detectate
udevadm monitor --subsystem-match=block # Debug udev
```
### Probleme NFS
```bash
autonas status # Verifică configurația
showmount -e localhost # Verifică export-urile
systemctl status nfs-kernel-server
```
### Probleme de Montare
```bash
autonas list # Verifică configurațiile
autonas test <uuid|name|mount_point> # Testează configurația specifică
mount | grep autonas # Verifică mount-urile active
```
## ⚙️ Arhitectura AutoNAS v3.0
### 📁 Organizarea Scripturilor
```
/usr/local/bin/
├── autonas -> autonas.sh # Singura comandă vizibilă utilizatorului
├── autonas.sh # Script principal CLI (1,208 linii)
└── autonas-core.sh # Biblioteca centrală (1,044 linii)
/usr/local/lib/autonas/ # Scripturi interne (ascunse din autocomplete)
├── autonas-boot-scan.sh # Scanner la bootare
├── autonas-disk-handler.sh # Handler evenimente disk
├── autonas-media-importer.sh # Importer automat media
├── autonas-network-handler.sh # Handler eventi rețea
├── autonas-udev-wrapper.sh # Wrapper pentru udev
└── autonas-uninstall.sh # Uninstaller sistem
```
### 🎯 Single Source of Truth
- **Zero duplicare cod** - toate funcțiile în `autonas-core.sh`
- **Interfață unificată** - toate operațiunile prin comanda `autonas`
- **Scripturi ascunse** - experiență utilizator curată
### 📊 Realizări v3.0
- **47% reducere cod** - ~2,300 linii eliminate prin refactorizare completă
- **Comandă unică vizibilă** - doar `autonas` în autocomplete
- **Organizare profesională** - toate utilitarele ascunse dar funcționale
- **Integrare completă** - toate serviciile și regulile actualizate
## ⚙️ Note Importante
1. **Rulează ca root**: Toate comenzile AutoNAS necesită `sudo`
2. **Configurații persistente**: Diskurile configurate se montează automat la conectare
3. **Cleanup automat**: Demontarea curăță automat mount points, IP-uri și export-uri NFS
4. **Siguranță date**: Dezinstalarea păstrează toate datele și configurațiile
5. **Script organizare**: Doar `autonas` vizibil - toate utilitarele în `/usr/local/lib/autonas/`
## 🎯 Use Cases Rapide
- **🌐 NFS Backup Server**: Disk extern → detectare automată → export NFS instant
- **📁 Storage Local**: Backup-uri locale rapide fără configurare rețea
- **📷 Import Camere**: Conectare cameră → import automat → organizare EXIF
- **🔧 Development**: Mixed storage (local + NFS) pentru workflow-uri complexe
---
**AutoNAS v3.0 - Clean Command Interface pentru Montare Automată** 🚀
*Doar comanda `autonas` vizibilă - interfață profesională și curată*
## Camera Import Automation
AutoNAS v3.0 introduce arhitectura revoluționară **Background Import** pentru import automat scalabil de camere digitale cu workflow complet `mount → import → unmount`.
### 🚀 **NOUĂ ARHITECTURĂ BACKGROUND IMPORT**
- **🔄 Service-Based Architecture** - Separare completă mount/import prin systemd services
- **⚡ Unlimited Duration** - Import-uri fără timeout constraints (comprobat cu 300+ files)
- **🛠️ Auto-Unmount** - Demontare automată după finalizarea import-ului
- **📊 Production Tested** - Validat cu camere reale Garmin (302 files, 100% success rate)
### Caracteristici Camera Import
- **🎯 Background Services** - Import rulează în servicii systemd separate fără timeout
- **Detectare automată** a structurilor de foldere pentru camere (DCIM, PRIVATE, MP_ROOT)
- **Import cu EXIF** - organizare automată pe baza metadatelor temporale cu UTC conversion
- **Multiple formate suportate**: MP4, MOV, JPG, JPEG, PNG, ARW, DNG, MP4, AVI, MKV
- **Organizare automată pe date** din EXIF/QuickTime tags cu conversie UTC → Local Time
- **Dry-run mode** pentru testare fără modificarea fișierelor
- **Progress tracking** cu statistici detaliate
- **Cleanup GLV files** pentru camerele Garmin
- **Scalabilitate Production** - Testat cu sute de fișiere fără probleme
### Format Configurație IMPORT
```
UUID:NAME:IMPORT:IMPORT:MOUNT_POINT:DESTINATION_PATH[:SCRIPT_PATH]
```
**Exemplu configurație:**
```
1234-5678:camera-garmin:IMPORT:IMPORT:/mnt/autonas/camera-garmin:/mnt/storage/photos:/usr/local/bin/autonas-camera-import.sh
```
### Workflow Import Automat (Background Architecture)
1. **Conectare cameră** → AutoNAS detectează UUID-ul configurat ca IMPORT
2. **Montare temporară** → Attach service montează în mount point temporar
3. **Background Import Launch** → Manager lansează direct `run_background_import()` process
4. **Import nelimitat** → Background service procesează fișiere fără timeout constraints
5. **Organizare EXIF** → Fișierele sunt sortate pe date din metadate (UTC → Local Time)
6. **Auto-Cleanup** → Background service apelează detach după finalizare
7. **Demontare automată** → Camera este demontată automat
8. **Mount cleanup** → Mount point temporar este curățat
**Avantaje Arhitectură Background:**
- ✅ **Scalabilitate infinită** - Nu există timeout-uri systemd pentru import
- ✅ **Robustețe** - Service separation previne crash-uri în mount operations
- ✅ **Monitorizare** - Log-uri separate pentru fiecare etapă
- ✅ **Production Ready** - Testat cu 302 fișiere, import complet în 36 minute
### Configurare Camera Import
```bash
# Adaugă configurație pentru cameră
autonas-config.sh add
# Selectează UUID-ul camerei
# Input UUID: 1234-5678
# Selectează tipul de configurare
# [3] - Import cameră automat
# Setează numele camerei
# Input name: camera-garmin
# Setează destinația pentru import
# Input destination: /mnt/storage/photos
# Script personalizat (opțional, default: autonas-camera-import.sh)
# Input script: [ENTER pentru default]
```
### Script Import Personalizat
Poți crea propriul script de import:
```bash
#!/bin/bash
# /usr/local/bin/my-camera-import.sh
MOUNT_POINT="$1"
DESTINATION="$2"
DISK_NAME="$3"
# Exemplu: Import specific pentru Canon
find "$MOUNT_POINT" -name "*.CR3" -exec cp {} "$DESTINATION/RAW/" \;
find "$MOUNT_POINT" -name "*.JPG" -exec cp {} "$DESTINATION/JPEG/" \;
echo "Import completed for $DISK_NAME"
exit 0
```
### Testare Configuration
```bash
# Listează configurațiile
autonas-config.sh list
# Testează configurația IMPORT
autonas-config.sh test camera-uuid
# Monitorizează log-urile
journalctl -t autonas -f
```
### Camera Import Script (autonas-camera-import.sh)
Script-ul default oferă:
- **Auto-detectare** structuri DCIM, PRIVATE, MP_ROOT
- **EXIF processing** cu exiftool pentru date precise
- **Organizare automată** în foldere YYYY-MM-DD
- **Redenumire intelligentă** cu timestamp-uri
- **Multiple opțiuni**: --dry-run, --verbose, --limit N
- **Error handling** robust cu logging detaliat
```bash
# Manual import test
autonas-camera-import.sh /mnt/camera /dest/path camera-name --dry-run --verbose
```
---
**AutoNAS v3.0 - Clean Command Interface pentru Montare Automată** 🚀
*Doar comanda `autonas` vizibilă - interfață profesională și curată*
*Dezvoltat pentru ecosistemul Proxmox/Debian cu focus pe automatizare și siguranța datelor*