Déplacer les fichiers déjà terminés (c'est-à-dire pas nouveaux) dans rtorrent

13

J'utilise rtorrent depuis un moment avec un seul répertoire. Maintenant, j'ai compris qu'il était possible d'utiliser différents répertoires et même de déplacer les téléchargements terminés ailleurs, donc selon le wiki rtorrent, j'ai modifié mon .rtorrent.rc comme suit:

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

Il semble fonctionner pour de nouveaux torrents. Cependant, j'ai un tas de fichiers terminés que j'ai déjà téléchargés auparavant pour diviser les répertoires, et pour eux cela ne fonctionne pas: si je supprime leur fichier dans le répertoire de session, rtorrent vérifiera le hachage mais ne les déplacera pas, et si je les déplacer par moi-même rtorrent ne les verra pas et essaiera de les télécharger à nouveau.

Alors, comment puis-je dire à rtorrent de les déplacer ou qu'ils se trouvent dans un autre répertoire?

Merci.

Skippy le Grand Gourou
la source

Réponses:

14

Ok, viens de comprendre cela. Dans rtorrent, vous pouvez ouvrir une ligne de commande en utilisant Ctrl+ X. Vous pouvez faire beaucoup de choses à partir de là (je suppose que c'est la gestion de base de rtorrent), comme imprimer des choses ( print=$variable=, par exemple print=$d.get_directory=), exécuter des commandes ( execute=command) ou définir des variables ( variable=newvalue).

À partir de cette invite, vous pouvez déplacer le torrent fini ailleurs, MAIS notez qu'il n'est ni nécessaire ni suffisant (voir ci-dessous). Par exemple, en utilisant l'exemple du fichier .rtorrent.rc donné dans la question d'origine:

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

Cependant, cette commande empêchera rtorrent de continuer à amorcer le torrent, c'est pourquoi il n'est pas suffisant. Afin de continuer l'amorçage, vous devez, toujours à partir de cette invite de commande, définir le répertoire de téléchargement de ce torrent au nouvel emplacement:

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

Enfin, la executecommande n'est pas nécessaire: vous pouvez déplacer le torrent comme vous le souhaitez (c'est-à-dire en dehors de rtorrent), tant que vous définissez le nouveau répertoire comme expliqué ci-dessus.

Après cela, il peut être nécessaire de rouvrir le torrent (s'il est marqué comme [FERMÉ]) en utilisant Ctrl+ R.

Skippy le Grand Gourou
la source
2
L'ordre correct est D'ABORD définir le nouveau répertoire, puis le déplacer, btw. Et vous pouvez ajouter une commande abrégée via "method.insert", qui effectue les deux étapes ci-dessus.
pyroscope
@pyroscope pourquoi le répertoire set est-il d'abord "correct"? Il me semble que vous voudriez attendre de voir si vous mvréussissez avant de mettre à jour le répertoire.
g33kz0r
2
Nevermind, a répondu à ma propre question: <Fault -503: 'Cannot change the directory of an open download atter the files have been moved.'>
g33kz0r
0

Si vous n'êtes pas allergique aux liens symboliques, une façon est rtmv .

pyroscope
la source
Pour ce cas particulier, je trouve ma solution plus propre, mais il y a des commandes assez intéressantes dans votre lien. Merci.
Skippy le Grand Gourou
0

comme script bash:

modifier, quand mv -u $old $newéchoue, alors toute la commande échoue.
j'ai fini par quitter rTorrent pour 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
la source