Konsep
Jadi saya sudah berjuang untuk sementara waktu sekarang dengan skrip yang akan berjalan ketika rtorrent telah selesai mengunduh. Script harus memeriksa argumen ketiga dari rtorrent dan bertindak sesuai.
.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=}"
Scriptnya terlihat seperti ini:
#!/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
Ini pada dasarnya bekerja tetapi saya mengalami masalah ketika mencoba untuk menghapus file arsip (setelah mereka membongkar). Saat menambahkan skrip hapus di while
loop skrip hanya menghapus file dalam subfolder khusus pada saat ini.
Script membongkar:
/media/store1/HD-film/Movie.folder/*.rar
/media/store1/HD-film/Movie.folder/Subs/*.rar
tetapi hanya menghapus file rar di folder ini
/media/store1/HD-film/Movie.folder/Subs/
Bagaimana saya bisa memperbaikinya sehingga skrip saya juga menghapus file arsip di folder induk?
Edit: Saya sudah mencoba meletakkan rm
perintah setelah perintah unrar dengan &&
tetapi hasilnya sama.
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
sumber
Jawaban:
Saya telah menemukan solusi untuk masalah saya dengan skrip ini batalkan pencekalan . Saya sudah menerapkannya dalam skrip saya.
sumber