autoNAS / README.md
Newer Older
5b5a565 3 months ago History
394 lines | 14.466kb
Bogdan Timofte authored 3 months ago
1
# AutoNAS v3.0 - Sistem de Montare Automată cu Unified Interface
2

            
3
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.
4

            
5
## 🎉 **Nouă în v3.0: Clean User Interface**
6
- **🚀 Scriptul Unificat** - Un singur script `autonas` pentru toate operațiunile
7
- **⚡ Interfață Curată** - Doar comanda `autonas` vizibilă în autocomplete
8
- **🔄 Background Import** - Import-uri în background fără timeout constraints
9
- **📊 Cod Optimizat** - 47% reducere cod prin eliminarea duplicărilor
10
- **🗂️ Scripturi Organizate** - Toate scripturile interne ascunse în `/usr/local/lib/autonas/`
11

            
12
## 🌟 **Interfața Curată AutoNAS**
13

            
14
### Comanda Principală (Singura Vizibilă)
15
```bash
16
autonas <command> [options]
17
```
18
*Doar comanda `autonas` apare în autocomplete - toate scripturile interne sunt ascunse*
19

            
20
### Operațiuni Disponibile
21
```bash
22
# Operațiuni Diskuri
23
autonas attach <uuid>         # Montează disk automat
24
autonas detach <uuid>         # Demontează disk
25
autonas list                  # Listează diskurile configurate
26

            
27
# Management Configurații
28
autonas add [uuid]            # Adaugă configurație nouă
29
autonas show                  # Afișează toate device-urile detectate
30
autonas status               # Status sistem complet
31

            
32
# Utilități
33
autonas mount <uuid>         # Montare manuală
34
autonas umount <uuid>        # Demontare manuală
35
autonas --help              # Ajutor complet
36
```
37

            
38
### Avantaje Interfață Curată
39
- **Un singur command vizibil** - doar `autonas` în autocomplete
40
- **Interfață consistentă** pentru toate operațiunile
41
- **Cod optimizat** cu 47% reducere prin eliminarea duplicărilor
42
- **Scripturi organizate** - toate utilitarele interne în `/usr/local/lib/autonas/`
43
- **Logging unificat** cu tag-uri comune
44

            
45
## 🚀 Instalare în Cluster
46

            
47
AutoNAS este destinat exclusiv pentru instalare pe cluster de servere prin sistemul de deploy remote:
48

            
49
```bash
50
# Clonează repository-ul
51
git clone <repository-url> autoNAS
52
cd autoNAS
53
```
54

            
55
## 🌐 Deploy Remote
56

            
57
AutoNAS folosește exclusiv deploy remote pentru instalarea și managementul pe nodurile cluster-ului:
58

            
59
```bash
60
# Instalare completă pe toate serverele (192.168.2.91-93)
61
./deploy.sh install
62

            
63
# Dezinstalare completă de pe toate serverele
64
./deploy.sh uninstall
65

            
66
# Instalare doar pe server specific
67
./deploy.sh install 192.168.2.91
68

            
69
# Management servicii
70
./deploy.sh start      # Pornește serviciile
71
./deploy.sh restart    # Restartează serviciile
72
./deploy.sh stop       # Oprește serviciile
73
./deploy.sh status     # Verifică statusul
74
```
75

            
76
### Caracteristici Deploy:
77
- ✅ **Instalare exclusiv cluster** - destinat doar pentru noduri multiple
78
- ✅ **Verificare host status** - testează disponibilitatea cu ping
79
- ✅ **Conectivitate SSH** - validează accesul prin chei SSH
80
- ✅ **Transfer eficient** - sincronizare cu rsync
81
- ✅ **Error handling** - management robust al erorilor
82
- ✅ **Logging colorat** - feedback clar pentru fiecare operație
83

            
84
### Pregătirea pentru Deploy:
85
1. **Configurează cheile SSH** pe serverele țintă
86
2. **Testează conectivitatea**: `./deploy.sh status`
87
3. **Deploy complet**: `./deploy.sh install`
88

            
89
## 📋 Funcționalități Principale
90

            
91
### 🔌 Detectare Automată
92
- **Detectare prin udev** pentru diskuri USB, SATA externe și USB-to-SATA bridges
93
- **Suport pentru multiple tipuri** de device-uri (removable, ATA cu USB properties)
94
- **Detectare inteligentă** bazată pe UUID filesystem
95

            
96
### 🗂️ Trei Tipuri de Configurare
97

            
98
#### 1. **NFS Share Complet** (acces de rețea)
99
```bash
100
autonas add <uuid>  # Selectează [1] - NFS share complet
101
```
102
- Montare automată + configurare IP + export NFS
103
- Acces complet de rețea pentru alte mașini
104
- Perfect pentru backup servere și storage partajat
105

            
106
#### 2. **Montare Locală Simplă** (doar local)
107
```bash
108
autonas add <uuid>  # Selectează [2] - Montare locală
109
```
110
- Doar mount point local, fără IP și NFS
111
- Ideal pentru storage local rapid
112
- Perfect pentru backup-uri și scratch space
113

            
114
#### 3. **Import Cameră Automat** (procesare media)
115
```bash
116
autonas add <uuid>  # Selectează [3] - Import cameră
117
```
118
- Mount → import media files → unmount automat
119
- Organizare automată cu EXIF și UTC conversion
120
- Background processing fără timeout constraints
121

            
122
### 🌐 Configurație NFS Optimizată
123
```
124
*(rw,all_squash,insecure,async,no_subtree_check,anonuid=0,anongid=0)
125
```
126

            
127
### 🔄 Management Inteligent
128
- **Configurare prin UUID** pentru identificare precisă
129
- **Protecția configurațiilor** utilizatorului la reinstalare
130
- **Logging detaliat** pentru debugging și monitorizare
131
- **Error handling robust** cu mesaje informative
132

            
133
## 📊 Comenzi de Management Rapide
134

            
135
### Flux de Lucru Tipic
136
```bash
137
# 1. Detectează UUID-ul diskului conectat
138
autonas show
139

            
140
# 2. Configurează diskul (interactiv)
141
autonas add <uuid>
142

            
143
# 3. Verifică statusul
144
autonas list
145
autonas status
146

            
147
# 4. Monitorizează log-urile
148
journalctl -t autonas -f
149
```
150

            
151
### Configurare Rapidă Exemplu
152
```bash
153
# Conectează diskul și detectează UUID
154
$ autonas show
155
Available storage devices:
156
[1] /dev/sdb1 → UUID: 920fe1b7-4091-4d6a-bab8-2f48d8d704bc (ext4, 1.8TB)
157

            
158
# Configurează pentru NFS
159
$ sudo autonas add 920fe1b7-4091-4d6a-bab8-2f48d8d704bc
160
Input name: backup-disk
161
Configuration type: [1] NFS share complet
162
Input IP: 192.168.10.25
163
Input interface: thunderbridge
164
✓ Configuration added and disk mounted!
165

            
166
# Verifică rezultatul
167
$ autonas list
168
Configured disks:
169
[1] backup-disk (920fe1b7-4091-4d6a-bab8-2f48d8d704bc) → NFS: 192.168.10.25
170
```
171

            
172
## 📷 Camera Import Automation
173

            
174
AutoNAS v3.0 introduce arhitectura revoluționară **Background Import** pentru import automat scalabil de camere digitale:
175

            
176
### 🔄 Background Import Architecture
177
- **Service-Based Import** - Separare completă mount/import prin systemd services
178
- **Unlimited Duration** - Import-uri fără timeout constraints (testat cu 300+ files)
179
- **Auto-Unmount** - Workflow complet automat mount → import → unmount
180
- **UTC Conversion** - Conversie perfectă UTC → Local Time pentru EXIF
181

            
182
### Configurare Camera Import
183
```bash
184
# Configurează camera pentru import automat
185
autonas add <camera-uuid>
186
# Selectează [3] - Import cameră automat
187
# Setează destinația: /mnt/storage/photos
188
```
189

            
190
### Workflow Automat Camera
191
1. **Conectare cameră** → AutoNAS detectează UUID-ul configurat ca IMPORT
192
2. **Montare temporară** → Mount point temporar creat automat
193
3. **Background Import** → Service separat procesează fișiere fără timeout
194
4. **Organizare EXIF** → Sortare automată pe date din metadate
195
5. **Auto-Cleanup** → Demontare automată după finalizare
196

            
197
## 🚨 Troubleshooting Rapid
198

            
199
### Disk nu se detectează
200
```bash
201
journalctl -t autonas -f                    # Monitorizează log-urile
202
autonas show                                # Verifică device-urile detectate
203
udevadm monitor --subsystem-match=block     # Debug udev
204
```
205

            
206
### Probleme NFS
207
```bash
208
autonas status                 # Verifică configurația
209
showmount -e localhost         # Verifică export-urile
210
systemctl status nfs-kernel-server
211
```
212

            
213
### Probleme de Montare
214
```bash
215
autonas list                   # Verifică configurațiile
216
autonas test <uuid>           # Testează configurația specifică
217
mount | grep autonas          # Verifică mount-urile active
218
```
219

            
220
## ⚙️ Arhitectura AutoNAS v3.0
221

            
222
### 📁 Organizarea Scripturilor
223
```
224
/usr/local/bin/
225
├── autonas -> autonas.sh          # Singura comandă vizibilă utilizatorului
226
├── autonas.sh                     # Script principal CLI (1,208 linii)
227
└── autonas-core.sh                # Biblioteca centrală (1,044 linii)
228

            
229
/usr/local/lib/autonas/            # Scripturi interne (ascunse din autocomplete)
230
├── autonas-boot-scan.sh           # Scanner la bootare
231
├── autonas-disk-handler.sh        # Handler evenimente disk
232
├── autonas-media-importer.sh      # Importer automat media
233
├── autonas-network-handler.sh     # Handler eventi rețea
234
├── autonas-udev-wrapper.sh        # Wrapper pentru udev
235
└── autonas-uninstall.sh           # Uninstaller sistem
236
```
237

            
238
### 🎯 Single Source of Truth
239
- **Zero duplicare cod** - toate funcțiile în `autonas-core.sh`
240
- **Interfață unificată** - toate operațiunile prin comanda `autonas`
241
- **Scripturi ascunse** - experiență utilizator curată
242

            
243
### 📊 Realizări v3.0
244
- **47% reducere cod** - ~2,300 linii eliminate prin refactorizare completă
245
- **Comandă unică vizibilă** - doar `autonas` în autocomplete
246
- **Organizare profesională** - toate utilitarele ascunse dar funcționale
247
- **Integrare completă** - toate serviciile și regulile actualizate
248

            
249
## ⚙️ Note Importante
250

            
251
1. **Rulează ca root**: Toate comenzile AutoNAS necesită `sudo`
252
2. **Configurații persistente**: Diskurile configurate se montează automat la conectare
253
3. **Cleanup automat**: Demontarea curăță automat mount points, IP-uri și export-uri NFS
254
4. **Siguranță date**: Dezinstalarea păstrează toate datele și configurațiile
255
5. **Script organizare**: Doar `autonas` vizibil - toate utilitarele în `/usr/local/lib/autonas/`
256

            
257
## 🎯 Use Cases Rapide
258

            
259
- **🌐 NFS Backup Server**: Disk extern → detectare automată → export NFS instant
260
- **📁 Storage Local**: Backup-uri locale rapide fără configurare rețea
261
- **📷 Import Camere**: Conectare cameră → import automat → organizare EXIF
262
- **🔧 Development**: Mixed storage (local + NFS) pentru workflow-uri complexe
263

            
264
---
265

            
266
**AutoNAS v3.0 - Clean Command Interface pentru Montare Automată** 🚀
267

            
268
*Doar comanda `autonas` vizibilă - interfață profesională și curată*
269

            
270
##  Camera Import Automation
271

            
272
AutoNAS v3.0 introduce arhitectura revoluționară **Background Import** pentru import automat scalabil de camere digitale cu workflow complet `mount → import → unmount`.
273

            
274
### 🚀 **NOUĂ ARHITECTURĂ BACKGROUND IMPORT**
275
- **🔄 Service-Based Architecture** - Separare completă mount/import prin systemd services
276
- **⚡ Unlimited Duration** - Import-uri fără timeout constraints (comprobat cu 300+ files)
277
- **🛠️ Auto-Unmount** - Demontare automată după finalizarea import-ului
278
- **📊 Production Tested** - Validat cu camere reale Garmin (302 files, 100% success rate)
279

            
280
### Caracteristici Camera Import
281
- **🎯 Background Services** - Import rulează în servicii systemd separate fără timeout
282
- **Detectare automată** a structurilor de foldere pentru camere (DCIM, PRIVATE, MP_ROOT)
283
- **Import cu EXIF** - organizare automată pe baza metadatelor temporale cu UTC conversion
284
- **Multiple formate suportate**: MP4, MOV, JPG, JPEG, PNG, ARW, DNG, MP4, AVI, MKV
285
- **Organizare automată pe date** din EXIF/QuickTime tags cu conversie UTC → Local Time
286
- **Dry-run mode** pentru testare fără modificarea fișierelor
287
- **Progress tracking** cu statistici detaliate
288
- **Cleanup GLV files** pentru camerele Garmin
289
- **Scalabilitate Production** - Testat cu sute de fișiere fără probleme
290

            
291
### Format Configurație IMPORT
292
```
293
UUID:NAME:IMPORT:IMPORT:MOUNT_POINT:DESTINATION_PATH[:SCRIPT_PATH]
294
```
295

            
296
**Exemplu configurație:**
297
```
298
1234-5678:camera-garmin:IMPORT:IMPORT:/mnt/autonas/camera-garmin:/mnt/storage/photos:/usr/local/bin/autonas-camera-import.sh
299
```
300

            
301
### Workflow Import Automat (Background Architecture)
302

            
303
1. **Conectare cameră** → AutoNAS detectează UUID-ul configurat ca IMPORT
304
2. **Montare temporară** → Attach service montează în mount point temporar
305
3. **Background Import Launch** → Manager lansează direct `run_background_import()` process
306
4. **Import nelimitat** → Background service procesează fișiere fără timeout constraints
307
5. **Organizare EXIF** → Fișierele sunt sortate pe date din metadate (UTC → Local Time)
308
6. **Auto-Cleanup** → Background service apelează detach după finalizare
309
7. **Demontare automată** → Camera este demontată automat
310
8. **Mount cleanup** → Mount point temporar este curățat
311

            
312
**Avantaje Arhitectură Background:**
313
- ✅ **Scalabilitate infinită** - Nu există timeout-uri systemd pentru import
314
- ✅ **Robustețe** - Service separation previne crash-uri în mount operations
315
- ✅ **Monitorizare** - Log-uri separate pentru fiecare etapă
316
- ✅ **Production Ready** - Testat cu 302 fișiere, import complet în 36 minute
317

            
318
### Configurare Camera Import
319

            
320
```bash
321
# Adaugă configurație pentru cameră
322
autonas-config.sh add
323

            
324
# Selectează UUID-ul camerei
325
# Input UUID: 1234-5678
326

            
327
# Selectează tipul de configurare
328
# [3] - Import cameră automat
329

            
330
# Setează numele camerei
331
# Input name: camera-garmin
332

            
333
# Setează destinația pentru import
334
# Input destination: /mnt/storage/photos
335

            
336
# Script personalizat (opțional, default: autonas-camera-import.sh)
337
# Input script: [ENTER pentru default]
338
```
339

            
340
### Script Import Personalizat
341

            
342
Poți crea propriul script de import:
343

            
344
```bash
345
#!/bin/bash
346
# /usr/local/bin/my-camera-import.sh
347

            
348
MOUNT_POINT="$1"
349
DESTINATION="$2"
350
DISK_NAME="$3"
351

            
352
# Exemplu: Import specific pentru Canon
353
find "$MOUNT_POINT" -name "*.CR3" -exec cp {} "$DESTINATION/RAW/" \;
354
find "$MOUNT_POINT" -name "*.JPG" -exec cp {} "$DESTINATION/JPEG/" \;
355

            
356
echo "Import completed for $DISK_NAME"
357
exit 0
358
```
359

            
360
### Testare Configuration
361

            
362
```bash
363
# Listează configurațiile
364
autonas-config.sh list
365

            
366
# Testează configurația IMPORT
367
autonas-config.sh test camera-uuid
368

            
369
# Monitorizează log-urile
370
journalctl -t autonas -f
371
```
372

            
373
### Camera Import Script (autonas-camera-import.sh)
374

            
375
Script-ul default oferă:
376
- **Auto-detectare** structuri DCIM, PRIVATE, MP_ROOT
377
- **EXIF processing** cu exiftool pentru date precise
378
- **Organizare automată** în foldere YYYY-MM-DD
379
- **Redenumire intelligentă** cu timestamp-uri
380
- **Multiple opțiuni**: --dry-run, --verbose, --limit N
381
- **Error handling** robust cu logging detaliat
382

            
383
```bash
384
# Manual import test
385
autonas-camera-import.sh /mnt/camera /dest/path camera-name --dry-run --verbose
386
```
387

            
388
---
389

            
390
**AutoNAS v3.0 - Clean Command Interface pentru Montare Automată** 🚀
391

            
392
*Doar comanda `autonas` vizibilă - interfață profesională și curată*
393

            
394
*Dezvoltat pentru ecosistemul Proxmox/Debian cu focus pe automatizare și siguranța datelor*