Table of Contents

Rtorrent - Best torrent client

Quick Reference

Main View Keys

Peer list View Keys

Use Arrow Key to navigate on related torrent.

Tracker list View Keys

Stop torrents after reaching a specified upload ratio

stop_on_ratio = min_ratio,min_upload,max_ratio

schedule = ratio,60,60,"stop_on_ratio=200,50M,300"

The “stop_on_ratio” command can be scheduled to stop torrents that have reached a specified upload ratio.
The above example will stop a torrent once it has uploaded 200% of the torrent size,
unless less than 50MB has been uploaded and the ratio is below 300%.

Use shift-I to make a torrent ignore this and other commands.

The ratio handling has been updated in rtorrent 0.8.4.

The basics

# Default group for ratio handling.

group.seeding.view
group.seeding.ratio.command
group.seeding.ratio.disable
group.seeding.ratio.enable
group.seeding.ratio.max
group.seeding.ratio.max.set
group.seeding.ratio.min
group.seeding.ratio.min.set
group.seeding.ratio.upload
group.seeding.ratio.upload.set

# The above commands can be called through:

ratio.disable
ratio.enable
ratio.max
ratio.max.set
ratio.min
ratio.min.set
ratio.upload
ratio.upload.set

The 'group.seeding.view' variable points to the 'seeding' view, which contains all seeding downloads,
and the default 'ratio.command' closes the download. To enabled or disable the ratio handling for the group,
call the 'enable' and 'disable' commands which automatically adds it to the scheduler.

Use the 'max', 'min' and 'upload' variables as in the old version.

# Enable the default ratio group.

ratio.enable=

# Change the limits, the defaults should be sufficient.

ratio.min.set=100
ratio.max.set=300
ratio.upload.set=20M

# Changing the command triggered when the ratio is reached.

system.method.set = group.seeding.ratio.command, d.close=, d.erase=
Ratio groups

If you wish to specify different ratio's for different watch directories, do the following:

Add new views. You may find out what downloads they contain through
'ui.current_view.set=group_1' command or XMLRPC calls.

view_add = view_group_1

# Make the views persist across sessions.

view.persistent = view_group_1

# Create new groups, 'group.insert = <name>, <view>'.

group.insert = group_1, view_group_1
 
group.group_1.ratio.enable=
group.group_1.ratio.min.set=100
group.group_1.ratio.max.set=300
group.group_1.ratio.upload.set=20M 

Optionally you may create a persistent view group directly. Note
that the view name is the same as the group name.

group.insert_persistent_view = group_2
 
group.group_2.ratio.enable=
group.group_2.ratio.min.set=300
group.group_2.ratio.max.set=0

Downloads need to be inserted into the view with the 'view.set_visible'
command. Note that extra parameters to 'load' are commands called
with the newly created download as the target.

schedule = watch_directory_1,5,10,"load_start_verbose=foo_1/*.torrent, view.set_visible=view_group_1"
schedule = watch_directory_2,5,10,"load_start_verbose=foo_2/*.torrent, view.set_visible=group_2"

Scheduling download rate

Every day “throttle_1” gets triggered at 01:00 and sets the download rate to unlimited,
while “throttle_2” sets it to 25kb at 05:00.
Using this the client may be made to perform a somewhat crude form of bandwidth scheduling.

schedule = throttle_1,01:00:00,24:00:00,download_rate=0
schedule = throttle_2,05:00:00,24:00:00,download_rate=25 

Secure Torrent from ISP Capping

Not 100% but following you two steps avoid capping from ISP,

Encryption

according to manual you can encrypt your transfer and request encryption only
If Encryptiong is successfully enabled you can avoid ISP to capping on packets. which make you partially secure.

Enable following line in your .rtorrent.rc

| .rtorrent.rc
encryption=allow_incoming,try_outgoing,require,enable_retry,require_RC4
Random Ports

This will change ports on every “restart” of the rtorrent.
port_range specify any high number port range - many be bigger than 11K.
Also enable random port.

| .rtorrent.rc
port_range = 12000-12999
port_random = yes

Saving torrent state and resume data between sessions

Point to a directory where rTorrent will save the torrent files. You
may also use relative paths if you want different session
directories depending on where you execute rtorrent.

session = ~/Download/session

Watch a directory for torrents

Watch a directory for new torrents, restart torrents that have been
copied back and stop those that have been deleted.

schedule = watch_directory,10,10,load_start=~/Download/watch/*.torrent
schedule = tied_directory,10,10,start_tied=
schedule = untied_directory,10,10,close_untied=

Watch another directory with a different destination. (0.7.7+)

schedule = watch_directory_2,10,10,"load_start=~/Download/watch_stuff/*.torrent,d.set_directory=~/Download/stuff/"

Move completed torrents

When the torrent finishes, it executes “mv -n <base_path> ~/Download/” and then sets the destination directory to “~/Download/”. (0.8.4+)

on_finished = move_complete,"d.set_directory=~/Download/ ;execute=mv,-u,$d.get_base_path=,~/Download/"
 
# On MacOSX and *BSD.
on_finished = move_complete,"d.set_directory=~/Download/ ;execute=mv,-n,$d.get_base_path=,~/Download/"

For versions 0.7.7 to 0.8.3 use this:

on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,~/Download/ ;d.set_directory=~/Download/"
 
# On MacOSX and *BSD.
on_finished = move_complete,"execute=mv,-n,$d.get_base_path=,~/Download/ ;d.set_directory=~/Download/"

rTorrent Profile

This is the current profile that I am using for my rtorrent client. Though most is using the defaults, there are some decent features.

| .rtorrent.rc
# This is an example resource file for rTorrent. Copy to         
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.                          
safe_sync = yes                                                      
 
# Maximum and minimum number of peers to connect to per torrent.
#min_peers = 40                                                 
#max_peers = 100                                                
 
# Same as above but for seeding completed torrents (-1 = same as downloading)
#min_peers_seed = 10                                                         
#max_peers_seed = 50                                                         
 
# Maximum number of simultanious uploads per torrent.
#max_uploads = 15                                    
 
# Global upload and download rate in KiB. "0" for unlimited.
download_rate = 2000                                        
upload_rate = 750                                           
 
# Default directory to save the downloaded torrents.
directory = /media/harddisk3/home/jason/images2     
 
# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a       
# relative path?                                                      
session = ~/rsession                                                  
 
# Watch a directory for new torrents, and stop those that have been
# deleted.                                                         
schedule = watch_directory,5,5,load_start=/media/harddisk3/home/jason/images2/*.torrent
#schedule = untied_directory,5,5,stop_untied=                                          
 
# Close torrents when diskspace is low.
schedule = low_diskspace,5,60,close_low_diskspace=100M
 
# Stop torrents when reaching upload ratio in percent,
# when also reaching total upload in bytes, or when   
# reaching final upload ratio in percent.             
# example: stop at ratio 2.0 with at least 200 MB uploaded, or else ratio 20.0
#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"                         
 
# The ip address reported to the tracker.
#ip = 127.0.0.1                          
#ip = rakshasa.no                        
 
# The ip address the listening socket and outgoing connections is
# bound to.                                                      
#bind = 127.0.0.1                                                
#bind = rakshasa.no                                              
 
# Port range to use for listening.
#port_range = 6890-6999           
 
# Start opening ports at a random position within the port range.
#port_random = no                                                
 
# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.   
#check_hash = no                                                     
 
# Set whetever the client should try to connect to UDP trackers.
use_udp_trackers = yes                                          
 
# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=rakshasa                             
#schedule = bind_tick,0,1800,bind=rakshasa                         
 
# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#                                                                                   
# The example value allows incoming encrypted connections, starts unencrypted       
# outgoing connections but retries with encryption if they fail, preferring         
# plaintext to RC4 encryption after the encrypted handshake                         
#                                                                                   
# encryption = allow_incoming,enable_retry,prefer_plaintext                         
 
# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).    
# The default is "off". For DHT to work, a session directory must be defined.
#
#dht = off
 
# UDP port to use for DHT.
#
# dht_port = 6881
 
# Enable peer exchange (for torrents not marked private)
#
# peer_exchange = yes
 
#
# Do not modify the following parameters unless you know what you're doing.
#
 
# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10
 
# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100
 
# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10