Verschieben Sie bereits abgeschlossene (dh nicht neue) Dateien in rtorrent

13

Ich benutze rtorrent für eine Weile mit einem einzigen Verzeichnis. Jetzt habe ich herausgefunden, dass es möglich ist, verschiedene Verzeichnisse zu verwenden und abgeschlossene Downloads an einen anderen Ort zu verschieben. Entsprechend dem rtorrent-Wiki habe ich meine .rtorrent.rc folgendermaßen bearbeitet:

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

Es scheint für neue Torrents zu funktionieren. Ich habe jedoch eine Reihe abgeschlossener Dateien, die ich bereits heruntergeladen habe, um Verzeichnisse zu teilen, und für sie funktioniert es nicht: Wenn ich ihre Datei im Sitzungsverzeichnis lösche, prüft rtorrent den Hash, verschiebt sie aber nicht, und wenn ich verschiebe sie selbst rtorrent sieht sie nicht und versucht sie erneut herunterzuladen.

Wie kann ich rtorrent anweisen, sie entweder zu verschieben oder sie in einem anderen Verzeichnis zu speichern?

Vielen Dank.

Skippy le Grand Gourou
quelle

Antworten:

14

Ok, habe das gerade herausgefunden. Innerhalb von rtorrent können Sie mit Ctrl+ eine Kommandozeile öffnen X. Sie können von dort aus viele Dinge tun (ich denke, dies ist die grundlegende Torrent-Verwaltung), wie print=$variable=z. B. Dinge drucken ( z. B. print=$d.get_directory=), Befehle ausführen ( execute=command) oder Variablen setzen ( variable=newvalue).

Von dieser Eingabeaufforderung aus können Sie den fertigen Torrent an einen anderen Ort verschieben, ABER beachten Sie, dass dies weder erforderlich noch ausreichend ist (siehe unten). Verwenden Sie beispielsweise das Beispiel aus der Datei .rtorrent.rc in der ursprünglichen Frage:

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

Dieser Befehl verhindert jedoch, dass der Torrent den Torrent weiterhin aussät, weshalb er nicht ausreicht. Um das Seeding fortzusetzen, sollten Sie an dieser Eingabeaufforderung das Download-Verzeichnis für diesen Torrent auf den neuen Speicherort festlegen:

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

Schließlich ist der executeBefehl nicht erforderlich: Sie können den Torrent wie gewünscht verschieben (dh außerhalb von rtorrent), solange Sie das neue Verzeichnis wie oben beschrieben festlegen.

Danach kann es notwendig sein, den Torrent mit Ctrl+ erneut zu öffnen (wenn er als [GESCHLOSSEN] markiert ist) R.

Skippy le Grand Gourou
quelle
2
Die richtige Reihenfolge ist, zuerst das neue Verzeichnis einzurichten und es dann zu verschieben, übrigens. Und Sie können einen Kurzbefehl über "method.insert" hinzufügen, der beide oben genannten Schritte ausführt.
Pyroskop
@pyroscope warum ist das eingestellte Verzeichnis zuerst "korrekt"? Es scheint mir, dass Sie warten möchten, um zu sehen, ob Ihr mverfolgreich ist, bevor Sie das Verzeichnis aktualisieren.
g33kz0r
2
Nevermind, beantwortete meine eigene Frage: <Fault -503: 'Cannot change the directory of an open download atter the files have been moved.'>
g33kz0r
0

Wenn Sie nicht allergisch gegen Symlinks sind, ist eine Möglichkeit RTMV .

Pyroskop
quelle
Für diesen speziellen Fall finde ich meine Lösung sauberer, aber es gibt ziemlich interessante Befehle in Ihrem Link. Vielen Dank.
Skippy le Grand Gourou
0

als bash script:

Wenn die Bearbeitung mv -u $old $newfehlschlägt, schlägt der gesamte Befehl fehl.
Am Ende habe ich rTorrent für qBitTorrent verlassen.

#!/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
Mila Nautikus
quelle