Di chuyển các tệp đã hoàn thành (tức là không mới) trong rtorrent


13

Tôi đã sử dụng rtorrent được một lúc với một thư mục. Bây giờ tôi đã tìm ra có thể sử dụng các thư mục khác nhau và thậm chí để di chuyển các bản tải xuống đã hoàn thành ở nơi khác, vì vậy theo wiki rtorrent tôi đã chỉnh sửa .rtorrent.rc của mình như sau:

# 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="

Nó dường như làm việc cho torrent mới. Tuy nhiên tôi có một loạt các tệp đã hoàn thành mà tôi đã tải xuống trước đó để phân tách các thư mục và đối với chúng, nó không hoạt động: nếu tôi xóa tệp của chúng trong thư mục phiên, rtorrent sẽ kiểm tra hàm băm nhưng sẽ không di chuyển chúng và nếu tôi di chuyển chúng một mình rtorrent sẽ không nhìn thấy chúng và sẽ cố tải lại chúng.

Vậy làm thế nào tôi có thể nói với rtorrent để di chuyển chúng hoặc chúng ở trong một thư mục khác?

Cảm ơn.

Câu trả lời:


14

Ok, chỉ cần tìm ra điều này. Trong rtorrent, bạn có thể mở một dòng lệnh bằng cách sử dụng Ctrl+ X. Bạn có thể thực hiện nhiều việc từ đó (tôi đoán đây là quản lý rtorrent cơ bản), như in các thứ ( print=$variable=ví dụ print=$d.get_directory=), thực thi các lệnh ( execute=command) hoặc đặt biến ( variable=newvalue).

Từ lời nhắc này, bạn có thể di chuyển torrent đã hoàn thành ở nơi khác, NHƯNG lưu ý rằng nó không cần thiết cũng không đủ (xem bên dưới). Chẳng hạn, sử dụng ví dụ từ tệp .rtorrent.rc được đưa ra trong câu hỏi ban đầu:

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

Tuy nhiên, lệnh này sẽ ngăn rtorrent tiếp tục gieo mầm torrent, đó là lý do tại sao nó không đủ. Để tiếp tục gieo hạt, bạn vẫn nên từ dấu nhắc lệnh này, đặt thư mục tải xuống cho torrent này sang vị trí mới:

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

Cuối cùng, executelệnh không cần thiết: bạn có thể di chuyển torrent theo cách bạn muốn (tức là bên ngoài rtorrent), miễn là bạn đặt thư mục mới như được giải thích ở trên.

Sau đó, có thể cần phải mở lại torrent (nếu nó được đánh dấu là [ĐÃ ĐÓNG CỬA]) bằng Ctrl+ R.


2
Thứ tự đúng là FIRST đặt thư mục mới, sau đó di chuyển nó, btw. Và bạn có thể thêm một lệnh tốc ký thông qua "method.insert", thực hiện cả hai bước trên.
kính viễn vọng

@pyroscope tại sao lại đặt thư mục "chính xác"? Dường như với tôi rằng bạn muốn chờ xem bạn mvcó thành công hay không trước khi cập nhật thư mục.
g33kz0r

2
Nevermind, đã trả lời câu hỏi của riêng tôi: <Fault -503: 'Cannot change the directory of an open download atter the files have been moved.'>
g33kz0r

0

Nếu bạn không dị ứng với các liên kết tượng trưng, ​​một cách là rtmv .


Đối với trường hợp cụ thể này, tôi thấy giải pháp của mình sạch hơn, nhưng có các lệnh khá thú vị trong liên kết của bạn. Cảm ơn.
Skippy le Grand Gourou

0

như tập lệnh bash:

chỉnh sửa, khi mv -u $old $newthất bại, sau đó toàn bộ lệnh thất bại.
tôi đã kết thúc việc để lại rTorrent cho 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.