ย้ายไฟล์ที่เสร็จสมบูรณ์แล้ว (เช่นไม่ใช่ไฟล์ใหม่) ใน rtorrent


13

ฉันใช้ rtorrent มาระยะหนึ่งแล้วด้วยไดเรกทอรีเดียว ตอนนี้ฉันคิดว่ามันเป็นไปได้ที่จะใช้ไดเรกทอรีที่แตกต่างกันและแม้กระทั่งการย้ายดาวน์โหลดเสร็จแล้วที่อื่นดังนั้นตาม wtor rtorrent ฉันแก้ไข. rtorrent.rc ของฉันดังนี้

# Download directory
directory = /Medias/torrents/

# Watching directories
schedule = watch_directory_1,5,60,"load_start=/path/to/dl/dir1/*.torrent,d.set_custom1=/path/to/done/dir1"
schedule = watch_directory_2,5,60,"load_start=/path/to/dl/dir2/*.torrent,d.set_custom1=/path/to/done/dir2"

# On completion, move the torrent to the directory from custom1.
system.method.set_key = event.download.finished,move_complete,"d.set_directory=$d.get_custom1= ;execute=mv,-u,$d.get_base_path=,$d.get_custom1="

ดูเหมือนว่าจะทำงานสำหรับเพลงใหม่ อย่างไรก็ตามฉันมีไฟล์ที่เสร็จสมบูรณ์จำนวนหนึ่งที่ฉันได้ดาวน์โหลดไปแล้วก่อนที่จะแยกไดเรกทอรีและสำหรับพวกเขามันไม่ทำงาน: ถ้าฉันลบไฟล์ในไดเรกทอรีเซสชั่น rtorrent จะตรวจสอบแฮช แต่จะไม่ย้ายมันและถ้าฉัน ย้ายพวกเขาด้วยตัวเอง rtorrent จะไม่เห็นพวกเขาและจะพยายามที่จะดาวน์โหลดใหม่

ดังนั้นฉันจะบอก rtorrent ว่าจะย้ายพวกเขาหรือว่าพวกเขาอยู่ในไดเรกทอรีอื่นได้อย่างไร

ขอบคุณ

คำตอบ:


14

ตกลงแค่คิดออก ภายใน rtorrent คุณสามารถเปิดบรรทัดคำสั่งโดยใช้+Ctrl Xคุณสามารถทำสิ่งต่าง ๆ ได้จากตรงนั้น (ฉันเดาว่านี่คือการจัดการ rtorrent พื้นฐาน) เช่นการพิมพ์สิ่งต่าง ๆ ( print=$variable=เช่นprint=$d.get_directory=) การเรียกใช้คำสั่ง ( execute=command) หรือการตั้งค่าตัวแปร ( variable=newvalue)

จากพรอมต์นี้คุณสามารถย้ายไฟล์ทอร์เรนต์ที่เสร็จแล้วไปที่อื่น แต่โปรดทราบว่าไม่จำเป็นหรือเพียงพอ (ดูด้านล่าง) ตัวอย่างเช่นใช้ตัวอย่างจากไฟล์. rtorrent.rc ที่ให้ไว้ในคำถามเดิม:

execute=mv,-u,$d.get_base_path=,$d.get_custom1=

อย่างไรก็ตามคำสั่งนี้จะป้องกัน rtorrent ไม่ให้ดำเนินการขุดทอร์เรนต์ซึ่งเป็นสาเหตุที่ทำให้ไม่เพียงพอ ในการดำเนินการเริ่มต้นต่อคุณควรยังคงจากพร้อมท์คำสั่งนี้ตั้งค่าไดเรกทอรีดาวน์โหลดสำหรับ torrent นี้ไปยังตำแหน่งใหม่:

d.set_directory=/path/to/new/directory/

ในที่สุดexecuteคำสั่งไม่จำเป็น: คุณสามารถย้ายฝนตกหนักในแบบที่คุณต้องการ (เช่นนอก rtorrent) ตราบใดที่คุณตั้งค่าไดเรกทอรีใหม่ตามที่อธิบายไว้ข้างต้น

หลังจากนั้นก็อาจจะจำเป็นต้องเปิดฝนตกหนัก (ถ้ามันทำเครื่องหมายเป็น [ปิด]) โดยใช้+CtrlR


2
ลำดับที่ถูกต้องคือ FIRST ตั้งไดเรกทอรีใหม่แล้วย้าย btw และคุณสามารถเพิ่มคำสั่ง shorthand ผ่าน "method.insert" ซึ่งทำทั้งสองขั้นตอนข้างต้น
pyroscope

@pyroscope ทำไมตั้งค่าไดเรกทอรีก่อน "ถูกต้อง"? ดูเหมือนว่าฉันต้องการรอเพื่อดูว่าคุณmvประสบความสำเร็จก่อนที่จะอัปเดตไดเรกทอรีหรือไม่
g33kz0r

2
ไม่เป็นไรตอบคำถามของฉันเอง: <Fault -503: 'Cannot change the directory of an open download atter the files have been moved.'>
g33kz0r

0

หากคุณไม่ได้แพ้ symlinks วิธีหนึ่งคือrtmv


สำหรับกรณีนี้ฉันพบว่าโซลูชันของฉันสะอาดขึ้น แต่มีคำสั่งที่น่าสนใจในลิงค์ของคุณ ขอบคุณ
Skippy le Grand Gourou

0

เป็นสคริปต์ทุบตี:

แก้ไขเมื่อmv -u $old $newล้มเหลวคำสั่งทั้งหมดจะล้มเหลว
ฉันลงเอยด้วยการออกจาก rTorrent สำหรับ qBitTorrent

#!/bin/bash
#
# move files in rTorrent
# with rtxmlrpc from pyrocore
#
# 1. select all torrents from view $view
# 2. print old d.base_path
# 3. set new d.directory
#    torrent is closed
#    d.base_path is still old d.base_path
# 4. move old files to new dir
# 5. open torrent
#    d.base_path is set to new path
# 6. save output to text file

view='complete'
dest="/home/rtorrent/$view/"

# escape double quotes
dest=$(echo "$dest" | sed 's/"/\\"/g')

rtxmlrpc d.multicall2 '' "$view" \
  'd.base_path=' \
  "d.directory.set=\"$dest\"" \
  "execute=mv,-u,(d.base_path),\"$dest\"" \
  'd.open=' \
| tee rtxmlrpc.$(date +%s).txt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.