Skript zum Verschieben oder Entpacken von Dateien (rtorrent, wenn das Skript fertig ist)

Skript zum Verschieben oder Entpacken von Dateien (rtorrent, wenn das Skript fertig ist)

Das Konzept

Ich kämpfe jetzt schon seit einiger Zeit mit einem Skript, das ausgeführt wird, wenn rTorrent einen Download abgeschlossen hat. Das Skript sollte das dritte Argument von rTorrent prüfen und entsprechend reagieren.

.rtorrent.rc:

system.method.set_key = event.download.finished,unrar_move_files,"execute={/home/holmen/script/testrt.sh,$d.get_base_path=,$d.get_name=,$d.get_custom1=}"

Das Skript sieht folgendermaßen aus:

#!/bin/bash
# First, copy the downloaded material to the storage drive
# then unpack the files (if the unrar returned successful)
# lastly remove the rar files with rm -rfv command

hdfilm1=/media/store1/HD-film
hdfilm2=/media/store2/HD-film
download=/media/store3/Download

# Copy the downloaded material to correct storage drive
rsync -r --info=progress2 "$download"/"$2" "$3"

if [ "$3" = "$hdfilm1" ] || [ "$3" = "$hdfilm2" ]; then
        # Check folders and subfolders of the downloaded material
        while IFS= read -r dir; do
                # Find and unpack archive files
                if [ "$(find $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar')" ]; then
                        rarFile=`ls $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar'`;
                        searchPath="$dir/$rarFile"
                        yes no | nice -n 15 unrar x -o+ "$searchPath" "$dir"
                        remFile=`ls $dir | egrep -i '\.(rar|sfv|r([0-9]{2}))$'`;
                        remPath="$dir/$remFile"
                        rm -rfv $remPath
                fi
        done < <(find "$3"/"$2" -type d)
fi

Das funktioniert grundsätzlich, aber ich habe Probleme beim Löschen der Archivdateien (nachdem sie entpackt wurden). Wenn ich ein Löschskript in die whileSchleife einfüge, entfernt das Skript nur die Dateien in dem spezifischen Unterordner, in dem es sich gerade befindet.

Das Skript entpackt:

/media/store1/HD-film/Movie.folder/*.rar
/media/store1/HD-film/Movie.folder/Subs/*.rar

entfernt aber nur die RAR-Dateien in diesem Ordner

/media/store1/HD-film/Movie.folder/Subs/

Wie kann ich das Problem beheben, sodass mein Skript auch die Archivdateien im übergeordneten Ordner entfernt?

Bearbeiten:Ich habe versucht, den rmBefehl nach dem Unrar-Befehl einzufügen, &&aber das Ergebnis ist dasselbe.

if [ "$(find $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar')" ]; then
     rarFile=`ls $dir | egrep -i '\.r00|\.001|part01\.rar|part001\.rar|subs\.rar'`;
     searchPath="$dir/$rarFile"
     remFile=`ls $dir | egrep -i '\.(rar|sfv|r([0-9]{2}))$'`;
     remove="$dir/$remFile"
     yes no | nice -n 15 unrar x -o+ "$searchPath" "$dir" && rm -rfv "$remove"
fi

Antwort1

Ich habe mit diesem Skript eine Lösung für mein Problem gefundeneinzigartig. Ich habe es in meinem Skript implementiert.

#!/bin/bash

# Variables
hdfilm1=/media/store1/HD-film
hdfilm2=/media/store2/HD-film
tvshow1=/media/store0/Serier
tvshow2=/media/store2/Serier
download=/media/store3/Download

# Copy the downloaded material to correct storage drive
rsync -r --info=progress2 "$download"/"$2" "$3"

if [ "$3" = "$hdfilm1" ] || [ "$3" = "$hdfilm2" ] || [ "$3" = "$tvshow1" ] || [ "$3" = "$tvshow2" ]; then
        /home/holmen/script/unrarall --clean=rar,proof_folders,sample_folders,sample_videos,empty_folders "$3"/"$2"
fi

verwandte Informationen