README.md hinzugefügt
This commit is contained in:
84
README.md
Normal file
84
README.md
Normal file
@ -0,0 +1,84 @@
|
||||
# Archivierungsskript: `audio_archiver.sh`
|
||||
|
||||
## 💿 Zweck
|
||||
|
||||
Dieses Bash-Skript automatisiert die **Archivierung von Audio-Dateien (MP3)** aus einem Quellverzeichnis auf **ISO-Images** (gezielte Größe einer Single-Layer DVD von 4,7 GB).
|
||||
|
||||
Das Skript stellt sicher, dass jede Datei **eindeutig indiziert** wird, indem die MP3-Tags ausgelesen und die genaue Position (ISO-ID und Dateinummer) in einem zentralen Katalog gespeichert wird.
|
||||
|
||||
-----
|
||||
|
||||
## ✨ Funktionen im Überblick
|
||||
|
||||
* **Automatische Überwachung:** Tägliche Verarbeitung neuer Dateien (idealerweise per Cron-Job).
|
||||
* **Volumenmanagement:** Prüft die Größe des Staging-Verzeichnisses und schließt die aktuelle ISO ab, sobald die 4,7 GB Grenze erreicht wird.
|
||||
* **Metadaten-Indexierung:** Verwendet `exiftool` zur Extraktion von Künstler und Titel und speichert diese zusammen mit der Archivposition.
|
||||
* **Eindeutige Benennung:** Jede archivierte Datei erhält eine fortlaufende, eindeutige Nummer auf der jeweiligen ISO.
|
||||
* **Zustandsverwaltung:** Nutzt eine Konfigurationsdatei, um den Fortschritt (aktuelle ISO-ID und Dateizähler) zu speichern.
|
||||
|
||||
-----
|
||||
|
||||
## ⚙️ Voraussetzungen
|
||||
|
||||
Das Skript erfordert die folgenden Kommandozeilen-Tools, die auf den meisten Linux-Distributionen verfügbar oder leicht installierbar sind:
|
||||
|
||||
1. **`exiftool`**: Zum Auslesen der ID3-Tags (Künstler/Titel) aus den MP3-Dateien.
|
||||
2. **`genisoimage`** (oder `mkisofs`): Zum Erstellen des finalen ISO-9660-Images.
|
||||
3. **Standard-Utilities:** `bash`, `find`, `cp`, `rm`, `du`, `stat`, `awk`, `grep`.
|
||||
4. **Logging-Skript:** Das individuelle Skript `logger.sh` muss unter dem angegebenen Pfad verfügbar sein.
|
||||
|
||||
-----
|
||||
|
||||
## 🚀 Installation und Einrichtung
|
||||
|
||||
### 1\. Konfiguration anpassen
|
||||
|
||||
Passen Sie die Pfade im Abschnitt **`--- KONFIGURATION ---`** direkt im Skript `audio_archiver.sh` an Ihre Systemumgebung an.
|
||||
|
||||
| Variable | Beschreibung | Beispielpfad |
|
||||
| :--- | :--- | :--- |
|
||||
| `SOURCE_DIR` | Das zu überwachende Quellverzeichnis. | `/srv/MEDIA/Audio/Radio-Archiv/2025/10` |
|
||||
| `STAGING_DIR` | Temporäres Verzeichnis zur Sammlung der ISO-Inhalte. | `/srv/MEDIA/Audio/ISO/Staging` |
|
||||
| `ISO_OUTPUT_DIR`| Ablageort für die fertiggestellten `.iso`-Dateien. | `/srv/MEDIA/Audio/ISO/burn` |
|
||||
| `CONFIG_FILE` | Datei zur Speicherung des Archivierungsstands. | `/root/Gitea/audio_archiver/current_iso.conf` |
|
||||
| `INDEX_FILE` | Der zentrale Katalog (CSV-Format). | `/root/Gitea/audio_archiver/archive_index.csv` |
|
||||
|
||||
### 2\. Berechtigungen setzen
|
||||
|
||||
Stellen Sie sicher, dass das Skript ausführbar ist und der ausführende Benutzer Lese-/Schreibrechte für alle konfigurierten Verzeichnisse und Dateien besitzt.
|
||||
|
||||
```bash
|
||||
chmod +x /pfad/zum/audio_archiver.sh
|
||||
```
|
||||
|
||||
### 3\. Cron-Job einrichten
|
||||
|
||||
Planen Sie die tägliche Ausführung des Skripts (z. B. um 03:00 Uhr nachts).
|
||||
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
|
||||
Fügen Sie folgende Zeile hinzu (Pfad anpassen):
|
||||
|
||||
```cron
|
||||
0 3 * * * /pfad/zum/audio_archiver.sh
|
||||
```
|
||||
|
||||
-----
|
||||
|
||||
## 📂 Archivierungsindex (`archive_index.csv`)
|
||||
|
||||
Die Indexdatei ist der zentrale Katalog, um jede archivierte Datei wiederzufinden. Das Format ist **semikolon-getrennt (CSV)**:
|
||||
|
||||
```csv
|
||||
Künstler;Titel;ISO_ID;Dateinummer;Originalpfad
|
||||
```
|
||||
|
||||
**Beispiel-Eintrag:**
|
||||
|
||||
```csv
|
||||
Queen;Bohemian Rhapsody;ISO_001;000042;/srv/MEDIA/Audio/Singles/Queen/bohemian_rhapsody.mp3
|
||||
```
|
||||
|
||||
Mithilfe dieses Indexes kann der Nutzer schnell feststellen, dass der Song auf der **ISO mit der ID `ISO_001`** unter dem Dateinamen **`ISO_001_000042.mp3`** zu finden ist.
|
||||
Reference in New Issue
Block a user