From 6af7f13bf47450b9f8dab17cea119c7cc89b99ec Mon Sep 17 00:00:00 2001 From: Thorsten Date: Sat, 25 Jan 2025 17:05:00 +0100 Subject: [PATCH] more debug --- README.md | 4 +-- shell_tmm_media_backup.sh | 64 +++++++++++++++++++++++++++++++++------ 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index cdbd88f..580bc45 100644 --- a/README.md +++ b/README.md @@ -12,8 +12,8 @@ Das Skript durchläuft jeden Unterordner im angegebenen Verzeichnis. Wird eine ` In der settings.ini wird definiert welche Artwork-Typen gesichert werden sollen: ```ini [Paths] -source_dir=/home/thorsten/Schreibtisch/Filme/ -backup_dir=/home/thorsten/Schreibtisch/Backup/ +source_dir=/Filme/ +backup_dir=/Backups/ [Options] backup_actors=true diff --git a/shell_tmm_media_backup.sh b/shell_tmm_media_backup.sh index 933991b..d2fd2a1 100755 --- a/shell_tmm_media_backup.sh +++ b/shell_tmm_media_backup.sh @@ -42,8 +42,18 @@ backup_folders[actors]=".actors" backup_folders[trickplay]="*.trickplay" backup_folders[fanart]="*extrafanart" + +#colors +RED='\033[0;31m' +GREEN='\033[0;92m' +BLUE='\033[0;94m' +WHITE_ON_GRAY='\033[0;37;100m' +BLACK_ON_WHITE='\033[0;30;47m' +WHITE_ON_RED='\033[0;37;41m' +NC='\033[0m' # No Color + # Maximal 2 parallele Prozesse -max_parallel=2 +max_parallel=1 current_jobs=0 # Prüfen, ob der Startordner existiert @@ -66,12 +76,13 @@ backup_movie_folder() { # Filmname aus dem Ordnernamen ableiten movie_name=$(basename "$folder") zip_file="${backup_dir}/${movie_name}.zip" + zip_file=$(echo "$zip_file" | sed 's|//|/|g') - echo "Erstelle Backup für Film: $movie_name" + echo -e "${BLACK_ON_WHITE} Backup erstellen ${NC} $zip_file" # Prüfen, ob die ZIP-Datei bereits existiert und ggf. löschen if [ -f "$zip_file" ]; then - echo "Vorhandene ZIP-Datei gefunden. Lösche: $zip_file" + #echo "Vorhandene ZIP-Datei gefunden. Lösche: $zip_file" rm -f "$zip_file" fi @@ -103,8 +114,7 @@ backup_movie_folder() { cd "$temp_dir" || exit zip -r "$zip_file" "${movie_name}" >/dev/null ) - echo "Backup erstellt: $zip_file" - + # Temporären Ordner löschen rm -rf "$temp_dir" } @@ -118,12 +128,13 @@ backup_series_folder() { # Serienname aus dem Ordnernamen ableiten series_name=$(basename "$folder") zip_file="${backup_dir}/${series_name}.zip" + zip_file=$(echo "$zip_file" | sed 's|//|/|g') - echo "Erstelle Backup für Serie: $series_name" + echo -e "${BLACK_ON_WHITE} Backup erstellen ${NC} $zip_file" # Prüfen, ob die ZIP-Datei bereits existiert und ggf. löschen if [ -f "$zip_file" ]; then - echo "Vorhandene ZIP-Datei gefunden. Lösche: $zip_file" + # echo "Vorhandene ZIP-Datei gefunden. Lösche: $zip_file" rm -f "$zip_file" fi @@ -143,7 +154,7 @@ backup_series_folder() { done # Alle Unterordner (z. B. Staffel 01, Staffel 02) durchgehen und sichern - find "$folder" -mindepth 1 -maxdepth 1 -type d -name "Staffel*" | while read -r season_folder; do + find "$folder" -mindepth 1 -maxdepth 1 -type d \( -name "Staffel*" -o -name "Season*" -o -name "Specials*" \) | while read -r season_folder; do season_name=$(basename "$season_folder") season_backup_dir="${series_backup_dir}/${season_name}" mkdir -p "$season_backup_dir" @@ -170,6 +181,7 @@ backup_series_folder() { cd "$temp_dir" || exit zip -r "$zip_file" "${series_name}" >/dev/null ) + echo "Backup erstellt: $zip_file" # Temporären Ordner löschen @@ -189,21 +201,55 @@ export -f backup_movie_folder export -f backup_series_folder export source_dir backup_dir backup_patterns backup_folders +echo "────────────────────────────────────────────────────────────────" +echo -e "${BLACK_ON_WHITE} TMM Media Backup ${NC}" +echo "────────────────────────────────────────────────────────────────" +echo " " +echo -e "${WHITE_ON_GRAY} Source Folder ${NC} ""$source_dir""" +echo -e "${WHITE_ON_GRAY} Backup Folder ${NC} ""$backup_dir""" +echo " " +echo "────────────────────────────────────────────────────────────────" + + find "$source_dir" -type f \( -name "*.nfo" -o -name "tvshow.nfo" \) -print0 | \ while IFS= read -r -d '' nfo_file; do folder=$(dirname "$nfo_file") + + # Überspringe Ordner mit dem Namen ".deletedByTMM" + if [[ "$folder" == *"/.deletedByTMM"* ]]; then + continue + fi + if [[ "$(basename "$nfo_file")" == "tvshow.nfo" ]]; then wait_for_jobs + + echo "────────────────────────────────────────────────────────────────" + echo -e "${BLACK_ON_WHITE} NFO gefunden ${NC} $nfo_file" + echo -e "${BLACK_ON_WHITE} NFO Typ ${NC} Serie" + backup_series_folder "$folder" & + + echo -e "${BLACK_ON_WHITE} Abgeschlossen! ${NC} $(date +'%Y-%m-%d %H:%M:%S')" + else - if [[ "$folder" != *"/Staffel "* ]]; then + # Sicherstellen, dass keine Staffel-/Season- oder Specials-Ordner als eigenständige Filme behandelt werden + if [[ "$folder" != *"/Staffel "* && "$folder" != *"/Season "* && "$folder" != *"/Specials"* ]]; then wait_for_jobs + + echo "────────────────────────────────────────────────────────────────" + echo -e "${BLACK_ON_WHITE} NFO gefunden ${NC} $nfo_file" + echo -e "${BLACK_ON_WHITE} NFO Typ ${NC} Film" + backup_movie_folder "$folder" & + + echo -e "${BLACK_ON_WHITE} Abgeschlossen! ${NC} $(date +'%Y-%m-%d %H:%M:%S')" fi fi current_jobs=$((current_jobs + 1)) done + + # Warte auf alle verbleibenden Prozesse wait