파일을 이동하거나 압축을 푸는 스크립트(스크립트 완료 시 rtorrent)

파일을 이동하거나 압축을 푸는 스크립트(스크립트 완료 시 rtorrent)

개념

그래서 나는 rtorrent가 다운로드를 완료했을 때 실행될 스크립트를 가지고 한동안 어려움을 겪고 있습니다. 스크립트는 rtorrent의 세 번째 인수를 확인하고 그에 따라 작동해야 합니다.

.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=}"

스크립트는 다음과 같습니다.

#!/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

이것은 기본적으로 작동하지만 (압축을 푼 후) 아카이브 파일을 삭제하려고 할 때 문제가 발생합니다. 루프에 제거 스크립트를 추가하면 while스크립트는 현재 특정 하위 폴더에 있는 파일만 제거합니다.

스크립트는 다음을 압축 해제합니다.

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

하지만 이 폴더에 있는 rar 파일만 제거합니다.

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

내 스크립트가 상위 폴더에서도 아카이브 파일을 제거하도록 수정하려면 어떻게 해야 합니까?

편집하다:rmunrar 명령 뒤에 명령을 넣으려고 시도했지만 &&결과는 동일합니다.

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

답변1

이 스크립트의 문제에 대한 해결책을 찾았습니다.풀다. 내 스크립트에서 구현했습니다.

#!/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

관련 정보