scripte/pack_all.sh

124 lines
4.4 KiB
Bash

#!/bin/bash
# ==========================================
# Anleitung: pack_all.sh
# ==========================================
# Dieses Skript verarbeitet alle Verzeichnisse in einem angegebenen Quellordner.
# Es entscheidet für jedes Verzeichnis:
# 1. Ob es gepackt wird, oder
# 2. Ob es nur verschoben wird (falls es ausschließlich `.rar`-Dateien enthält).
#
# Ziel: Effiziente Verarbeitung und Archivierung aller Verzeichnisse in einem Zielverzeichnis.
# ==========================================
# Verwendung:
# ==========================================
# Aufruf:
# ./pack_all.sh
#
# Beschreibung:
# Das Skript sucht automatisch nach allen Verzeichnissen im Quellverzeichnis
# (standardmäßig `/mnt/synology/aufmasse/autoupload`) und verarbeitet sie.
#
# Voraussetzungen:
# - Das Skript `packen.sh` muss vorhanden und funktionsfähig sein.
# - Das Quell- und Zielverzeichnis müssen definiert und zugänglich sein.
#
# Beispiel:
# ./pack_all.sh
# ==========================================
# Ablaufplan:
# ==========================================
# 1. Überprüfen, ob das Quellverzeichnis (`SOURCE_DIR`) existiert.
# 2. Sicherstellen, dass das Zielverzeichnis (`DEST_DIR`) existiert (ggf. erstellen).
# 3. Iteration über alle Verzeichnisse im Quellverzeichnis:
# a) Prüfen, ob das Verzeichnis bereits im Zielverzeichnis existiert.
# - Falls ja: Verzeichnis wird übersprungen.
# - Falls nein: Das Verzeichnis wird an `packen.sh` übergeben.
# b) Das `packen.sh`-Skript entscheidet, ob:
# - Das Verzeichnis gepackt wird, oder
# - Nur verschoben wird (falls nur `.rar`-Dateien enthalten sind).
# 4. Ausgabe einer Erfolgs- oder Fehlermeldung pro Verzeichnis.
# 5. Abschlussmeldung, wenn alle Verzeichnisse verarbeitet wurden.
# ==========================================
# Anpassung des Zielverzeichnisses:
# ==========================================
# Standardmäßig werden die verarbeiteten Verzeichnisse unter `/mnt/synology/aufmasse_archiv/` abgelegt.
# Um das Zielverzeichnis zu ändern:
# 1. Bearbeiten Sie die Zeile:
# DEST_DIR="/mnt/synology/aufmasse_archiv"
# 2. Ändern Sie den Pfad in das gewünschte Zielverzeichnis.
# 3. Beispiel:
# DEST_DIR="/backup/archiv"
#
# Das Quellverzeichnis kann auf ähnliche Weise angepasst werden:
# 1. Bearbeiten Sie die Zeile:
# SOURCE_DIR="/mnt/synology/aufmasse/autoupload"
# 2. Beispiel:
# SOURCE_DIR="/daten/eingang"
# ==========================================
# Voraussetzungen:
# ==========================================
# - Das `packen.sh`-Skript muss vorhanden und funktionstüchtig sein.
# - Schreib- und Leserechte für Quell- und Zielverzeichnisse.
# - Skript benötigt Ausführungsrechte:
# chmod +x pack_all.sh
#
# ==========================================
# Ende der Anleitung
# ==========================================
# Quell- und Zielverzeichnisse definieren
SOURCE_DIR="/mnt/synology/aufmasse/autoupload"
DEST_DIR="/mnt/synology/aufmasse_archiv"
PACKEN_SCRIPT="/root/packen.sh"
# Überprüfen, ob das Quellverzeichnis existiert
if [ ! -d "$SOURCE_DIR" ]; then
echo "Fehler: Quellverzeichnis '$SOURCE_DIR' existiert nicht."
exit 1
fi
# Sicherstellen, dass das Zielverzeichnis existiert
if [ ! -d "$DEST_DIR" ]; then
mkdir -p "$DEST_DIR" || { echo "Fehler: Zielverzeichnis '$DEST_DIR' konnte nicht erstellt werden."; exit 1; }
echo "Zielverzeichnis '$DEST_DIR' wurde erstellt."
fi
# Überprüfen, ob das packen.sh-Skript existiert
if [ ! -x "$PACKEN_SCRIPT" ]; then
echo "Fehler: Das Skript '$PACKEN_SCRIPT' ist nicht ausführbar oder existiert nicht."
exit 1
fi
# Alle Verzeichnisse im Quellverzeichnis verarbeiten
for DIR in "$SOURCE_DIR"/*/; do
# Prüfen, ob es sich um ein Verzeichnis handelt
if [ -d "$DIR" ]; then
BASENAME=$(basename "$DIR")
ZIELORDNER="$DEST_DIR/$BASENAME"
# Prüfen, ob das Verzeichnis bereits im Zielverzeichnis existiert
if [ -d "$ZIELORDNER" ]; then
echo "Überspringe: Das Projekt '$BASENAME' existiert bereits im Zielverzeichnis '$DEST_DIR'."
continue
fi
# Verzeichnis verarbeiten mit packen.sh
echo "Verarbeite: '$DIR'..."
"$PACKEN_SCRIPT" j "$DIR"
# Fehlerprüfung
if [ $? -eq 0 ]; then
echo "Erfolgreich verarbeitet: '$DIR'."
else
echo "Fehler beim Verarbeiten von: '$DIR'."
fi
fi
done
echo "Alle Verzeichnisse im Quellverzeichnis '$SOURCE_DIR' wurden verarbeitet."