web-dev-qa-db-ja.com

rtorrentで既に(つまり、新規ではない)完了したファイルを移動する

私はしばらくの間、単一のディレクトリでrtorrentを使用しています。これで、別のディレクトリを使用したり、完了したダウンロードを別の場所に移動したりできることがわかったので、rtorrent wikiに従って、.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にそれらを移動するか、または別のディレクトリにあることを伝えることができますか?

ありがとう。

わかりました、これを理解しました。 rtorrent内では、次を使用してコマンドラインを開くことができます。 Ctrl+X。印刷(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外に)移動できます。

その後、次を使用してトレントを再度開く必要がある場合があります([閉じる]とマークされている場合)。 Ctrl+R

bashスクリプトとして:

編集、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
1
Mila Nautikus

シンボリックリンクにアレルギーがない場合、1つの方法は rtmv です。

0
pyroscope