Sposta i file già completati (ovvero non nuovi) in rtorrent


13

Sto usando rtorrent da un po 'con una singola directory. Ora ho capito che era possibile usare directory diverse e persino spostare altri download completati altrove, quindi secondo il wiki rtorrent ho modificato il mio .rtorrent.rc come segue:

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

Sembra funzionare per i nuovi torrent. Tuttavia ho un sacco di file completati che ho già scaricato prima per dividere le directory, e per loro non funziona: se elimino il loro file nella directory della sessione, rtorrent controllerà l'hash ma non li sposterà, e se io spostali da solo rtorrent non li vedrà e proverà a scaricarli di nuovo.

Quindi, come posso dire a rtorrent di spostarli o che si trovano in un'altra directory?

Grazie.

Risposte:


14

Ok, l'ho appena capito. All'interno di rtorrent puoi aprire una riga di comando usando Ctrl+ X. Puoi fare molte cose da lì (suppongo che si tratti di una gestione rtorrent di base), come stampare cose ( print=$variable=, ad esempio print=$d.get_directory=), eseguire comandi ( execute=command) o impostare variabili ( variable=newvalue).

Da questo prompt puoi spostare altrove il torrent finito, MA nota che non è né necessario né sufficiente (vedi sotto). Ad esempio, usando l'esempio del file .rtorrent.rc fornito nella domanda originale:

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

Tuttavia, questo comando impedirà a rtorrent di continuare a seminare il torrent, motivo per cui non è sufficiente. Per continuare il seeding, è necessario, sempre da questo prompt dei comandi, impostare la directory di download per questo torrent nella nuova posizione:

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

Infine, il executecomando non è necessario: è possibile spostare il torrent nel modo desiderato (ad es. Rtorrent esterno), purché si imposti la nuova directory come spiegato sopra.

Dopodiché potrebbe essere necessario riaprire il torrent (se è contrassegnato come [CHIUSO]) usando Ctrl+ R.


2
L'ordine corretto è PRIMA di impostare la nuova directory, quindi spostarla, tra l'altro. E puoi aggiungere un comando abbreviato tramite "method.insert", che esegue entrambi i passaggi precedenti.
piroscopio

@pyroscope perché la directory impostata è prima "corretta"? Mi sembra che vorresti aspettare per vedere se hai mvsuccesso prima di aggiornare la directory.
g33kz0r

2
Non importa, ho risposto alla mia domanda: <Fault -503: 'Cannot change the directory of an open download atter the files have been moved.'>
g33kz0r

0

Se non sei allergico ai symlink, un modo è rtmv .


Per questo caso particolare trovo la mia soluzione più pulita, ma ci sono comandi abbastanza interessanti nel tuo link. Grazie.
Skippy le Grand Gourou,

0

come script bash:

modifica, quando mv -u $old $newfallisce, quindi l'intero comando fallisce.
ho finito per lasciare rTorrent per 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.