Mover arquivos já concluídos (isto é, não novos) no rtorrent

13

Estou usando o rtorrent há um tempo com um único diretório. Agora eu descobri que era possível usar diretórios diferentes e até mover downloads concluídos para outro lugar, de acordo com o wiki do rtorrent, editei meu arquivo .rtorrent.rc da seguinte maneira:

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

Parece funcionar para novos torrents. No entanto, tenho vários arquivos concluídos que já baixei antes para dividir diretórios e, para eles, não funciona: se eu excluir o arquivo no diretório da sessão, o rtorrent verificará o hash, mas não os moverá, e se eu mova-os sozinho o rtorrent não os verá e tentará baixá-los novamente.

Então, como posso dizer ao rtorrent para movê-los ou se eles estão em outro diretório?

Obrigado.

Skippy le Grand Gourou
fonte

Respostas:

14

Ok, acabei de descobrir isso. No rtorrent, você pode abrir uma linha de comando usando Ctrl+ X. Você pode fazer muitas coisas a partir daí (acho que esse é o gerenciamento básico do rtorrent), como imprimir coisas ( print=$variable=por exemplo print=$d.get_directory=), executar comandos ( execute=command) ou definir variáveis ​​( variable=newvalue).

Nesse prompt, você pode mover o torrent finalizado para outro lugar, MAS observe que ele não é necessário nem suficiente (veja abaixo). Por exemplo, usando o exemplo do arquivo .rtorrent.rc fornecido na pergunta original:

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

No entanto, este comando impedirá que o rtorrent continue a propagar o torrent, e é por isso que não é suficiente. Para continuar a propagação, você deve, ainda neste prompt de comando, definir o diretório de download deste torrent para o novo local:

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

Finalmente, o executecomando não é necessário: você pode mover o torrent da maneira que desejar (ou seja, fora do rtorrent), desde que você configure o novo diretório conforme explicado acima.

Depois disso, pode ser necessário reabrir o torrent (se estiver marcado como [FECHADO]) usando Ctrl+ R.

Skippy le Grand Gourou
fonte
2
A ordem correta é PRIMEIRO, defina o novo diretório e mova-o, entre. E você pode adicionar um comando abreviado via "method.insert", que executa as duas etapas acima.
Pyroscope
@pyroscope Por que o diretório definido é o primeiro "correto"? Parece-me que você gostaria de esperar para ver se o seu mvêxito foi feito antes de atualizar o diretório.
g33kz0r
2
<Fault -503: 'Cannot change the directory of an open download atter the files have been moved.'>
Deixa pra lá
0

Se você não é alérgico a links simbólicos, uma maneira é rtmv .

piroscópio
fonte
Nesse caso em particular, acho minha solução mais limpa, mas há comandos bastante interessantes no seu link. Obrigado.
Skippy le Grand Gourou
0

como script bash:

editar, quando mv -u $old $newfalhar, o comando inteiro falhará.
acabei deixando rTorrent para 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
Mila Nautikus
fonte