# 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.