# ========================================== # Anleitung: packen.sh # ========================================== # Dieses Skript dient dazu, ein angegebenes Verzeichnis zu verarbeiten, indem es entscheidet, ob: # 1. Das Verzeichnis gepackt werden soll, oder # 2. Nur verschoben werden soll (falls es ausschließlich `.rar`-Dateien enthält). # # Ziel: Strukturierte Archivierung von Verzeichnissen in einem Zielverzeichnis. # ========================================== # Verwendung: # ========================================== # Aufruf: # ./packen.sh [j|n] /Pfad/zum/Verzeichnis/ # # Parameter: # - `j`: Automatische Zustimmung für das Packen/Verschieben. # - `n`: Keine Aktion ausführen, Skript wird beendet. # - `/Pfad/zum/Verzeichnis/`: Pfad zum Verzeichnis, das verarbeitet werden soll. # # Beispiel: # ./packen.sh j /mnt/synology/aufmasse/test/ # ========================================== # Ablaufplan: # ========================================== # 1. Überprüfen, ob das Verzeichnis existiert und ob das Zielverzeichnis vorhanden ist (ggf. erstellen). # 2. Prüfen, ob im Verzeichnis ausschließlich `.rar`-Dateien enthalten sind. # a) Wenn ja: # - `.rar`-Dateien ins Zielverzeichnis verschieben. # - Ursprungsverzeichnis löschen, falls es leer ist. # b) Wenn nein: # - Verzeichnis in eine `.rar`-Datei packen und in das Zielverzeichnis verschieben. # 3. Ausgabe einer Erfolgs- oder Fehlermeldung. # ========================================== # Anpassung des Zielverzeichnisses: # ========================================== # Standardmäßig werden die gepackten/verarbeiteten Verzeichnisse unter `/mnt/synology/aufmasse_archiv/` abgelegt. # Um das Zielverzeichnis zu ändern: # 1. Bearbeiten Sie die Zeile: # ZIELVERZEICHNIS="/mnt/synology/aufmasse_archiv" # 2. Ändern Sie den Pfad in das gewünschte Zielverzeichnis. # 3. Beispiel: # ZIELVERZEICHNIS="/backup/archiv" # # ========================================== # Voraussetzungen: # ========================================== # - RAR muss installiert sein: # - Ubuntu/Debian: sudo apt-get install p7zip-full p7zip-rar # - Zugriff auf die Quell- und Zielverzeichnisse. # - Skript benötigt Ausführungsrechte: # chmod +x packen.sh # # ========================================== # Ende der Anleitung # ========================================== #!/bin/bash # Überprüfen, ob RAR installiert ist if ! command -v rar &> /dev/null; then echo "RAR ist nicht installiert." echo "Bitte installieren Sie es mit:" echo " - Ubuntu/Debian: sudo apt-get update && sudo apt-get install p7zip-full p7zip-rar" exit 1 fi # Überprüfen, ob genügend Argumente übergeben wurden if [ $# -lt 2 ]; then echo "Verwendung: $0 [j|n] /Pfad/zum/Verzeichnis/" exit 1 fi # Eingaben aus den Argumenten ANTWORT="${1,,}" # Erstes Argument: j oder n, in Kleinbuchstaben konvertiert VERZEICHNIS=$(realpath "$2") # Zweites Argument: Verzeichnis # Überprüfen, ob die Antwort korrekt ist if [[ "$ANTWORT" != "j" && "$ANTWORT" != "n" ]]; then echo "Ungültige Eingabe für die Antwort. Verwenden Sie 'j' oder 'n'." exit 1 fi # Überprüfen, ob das Verzeichnis existiert if [ ! -d "$VERZEICHNIS" ]; then echo "Das Verzeichnis '$VERZEICHNIS' existiert nicht." exit 1 fi # Verzeichnisname extrahieren ARCHIVNAME=$(basename "$VERZEICHNIS") # Zielverzeichnis für das Archiv ZIELVERZEICHNIS="/mnt/synology/aufmasse_archiv" # Sicherstellen, dass das Zielverzeichnis existiert if [ ! -d "$ZIELVERZEICHNIS" ]; then mkdir -p "$ZIELVERZEICHNIS" || { echo "Fehler beim Erstellen des Zielverzeichnisses."; exit 1; } echo "Zielverzeichnis '$ZIELVERZEICHNIS' wurde erstellt." fi # Zielverzeichnis für den spezifischen Ordner erstellen NEUER_ORDNER="$ZIELVERZEICHNIS/$ARCHIVNAME" if [ ! -d "$NEUER_ORDNER" ]; then mkdir -p "$NEUER_ORDNER" || { echo "Fehler beim Erstellen des Verzeichnisses '$NEUER_ORDNER'."; exit 1; } echo "Neues Verzeichnis '$NEUER_ORDNER' wurde erstellt." fi # Prüfen, ob sich im Verzeichnis nur .rar-Dateien befinden echo "Überprüfe den Inhalt des Verzeichnisses '$VERZEICHNIS'..." if find "$VERZEICHNIS" -type f ! -name '*.rar' -print -quit | grep -q .; then # Andere Dateien oder Verzeichnisse gefunden – normal packen if [[ "$ANTWORT" == "j" ]]; then # In das übergeordnete Verzeichnis wechseln cd "$(dirname "$VERZEICHNIS")" || { echo "Fehler beim Wechseln des Verzeichnisses."; exit 1; } # Zielarchiv definieren ARCHIVPFAD="$NEUER_ORDNER/$ARCHIVNAME.rar" # RAR-Archiv erstellen, nur den Ordner selbst packen und das ursprüngliche Verzeichnis löschen rar a -v1g -r -df "$ARCHIVPFAD" "$ARCHIVNAME" if [ $? -eq 0 ]; then echo "Das Verzeichnis wurde erfolgreich in $ARCHIVPFAD gepackt und gelöscht." else echo "Fehler beim Erstellen des RAR-Archivs." exit 1 fi else echo "Keine Aktion ausgeführt, da die Antwort 'n' war." exit 0 fi else # Nur .rar-Dateien gefunden – verschieben, aber keine verschachtelten Ordner erstellen echo "Das Verzeichnis '$VERZEICHNIS' enthält nur .rar-Dateien. Die Dateien werden direkt verschoben." # .rar-Dateien in das Zielverzeichnis verschieben mv "$VERZEICHNIS"/*.rar "$NEUER_ORDNER/" if [ $? -eq 0 ]; then echo "Alle .rar-Dateien wurden erfolgreich nach '$NEUER_ORDNER' verschoben." # Ursprüngliches Verzeichnis löschen, falls es leer ist rmdir "$VERZEICHNIS" 2>/dev/null || echo "Das Verzeichnis '$VERZEICHNIS' konnte nicht gelöscht werden (möglicherweise nicht leer)." else echo "Fehler beim Verschieben der .rar-Dateien." exit 1 fi fi