Páginas

viernes, noviembre 28, 2008

Automatizar descargas de archivos torrents

Hoy vamos a ver como descargar torrents con ubuntu de manera sencilla, y automatizando el proceso lo máximo posible.

Para el escritorio existen múltiples programas que realizan esta acción y que podríamos también automatizarla, pero hoy vamos a hacerlo con bajo consumo de recursos y pensado para montar en un servidor. Asi que con estos pequeños detalles el programa escogido es: rtorrent.
Además está en los repositorios de ubuntu por lo que será muy fácil instalarlo (en consola escribir):

$ sudo aptitude install rtorrent

Configuración

Para modificar la configuración, vamos a tomar de base la que viene con el programa por defecto, para esto hacemos:

$ cp /usr/share/doc/rtorrent/examples/rctorrent ~/.rtorrent.rc

Esto nos creará un archivo llamado rtorrent.rc en nuestra carpeta base de usuario (/home/tu_usuario/), que tendrá la configuración particular de rTorrent para cuando estemos logueados con este mismo usuario.

Primero miramos la velocidad de nuestra conexión en: http://www.speakeasy.net/speedtest/

El valor obtenido para un ADSL de 3MB de telefónica son (en el caso de mi conexión):

- Download (descarga): 2543 kbps -> 317,9 kByte/seg
- Upload (subida): 255 kbps -> 31,9 kByte/seg

Multiplicaresmos por 0,8 (o 0,5 si ves que va muy lenta tu conexión de internet al cargar las páginas) el valor obtenido: 2543*0,8= 2034,4 kbps -> 254,3 kByte/seg

Y luego el valor obtenido lo introducimos en:
http://infinite-source.de/az/az-calc.html.

Poniendo en la página web los valores obtenidos, en Tools -> options -> transfer, 203 kB/s max upload speed.
- 7 max upload slots per torrent, 9,33 kB/s per slot.
- 197 Maximun number of connections per torrent.
- 493 Maximun number of connections globally.

A continuación explico las opciones que vienen en el archivo de configuración de .rtorrent.rc. El archivo de texto está en parte traducido, por lo que si quieres utilizar este en vez del que hemos copiado, simplemente pega el texto en un archivo de gedit y guardaló con el nombre .rtorrent.rc en tu carpeta de usuario. Para editar el archivo copiado escribimos en consola: gedit ~/.rtorrent.rc (dado que tiene un punto enfrente, estará oculto). Los parámetros del archivo de configuración son los siguientes:

###.rtorrent.rc, ejemplo de archivo de configuración rtorrent###
### http://lmdelgado.blogspot.com ###

# Este es el archivo de configuración de rTorrent. Copiar en
# /home/usuario/.rtorrent.rc y habilita/modifica
# las opciones que necesites.
# Recuerda que descomentar (quitar #) habilita la opción.

# Cantidad Máxima y Mínima de peers conectados por torrent.
min_peers = 10
max_peers = 197

# Igual que lo anterior pero para torrent terminados
# (-1 = iguala las opciones anteriores ).
min_peers_seed = -1
max_peers_seed = -1

# Cantidad máxima de conexiones para subidas por torrent.
max_uploads = 5

# Velocidad máxima de subida y bajada en KiB. "0" para ilimitado.
download_rate = 50
upload_rate = 0

# Directorio donde se guardaran los archivos bajados.
directory = /Directorio_descarga

# Directorio donde se guardarán los .torrent bajados vía web.
session = ~/rtorrent/sesion

# Carpeta donde rtorrent buscara los .torrent para iniciar
# la descarga en forma automática, y parar los que han sido borrados.
schedule = watch_directory,5,5,load_start=~/rtorrent/torrents/*.torrent
#schedule = untied_directory,5,5,stop_untied=

# Detiene la descarga si queda poco espacio en el disco duro (en este caso menos de 100 MB).
schedule = low_diskspace,5,60,close_low_diskspace=100M

# Detiene los torrents según el porcentaje subido,
# el total de bytes subidos , o
# según el porcentaje del ratio que selecciones.
# ejemplo: se detiene cuando el ratio es 2.0 (ó 200%) con un mínimo
# de 200 MB subidos, o cuando el ratio es igual a 20.0 (ó 2000%).
#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"
#Usar mayúsculas-I para que un torrent ignore este y otros comandos.
schedule = ratio,60,60,"stop_on_ratio=150,200M,300"

# La dirección ip que se le informará al tracker (para
# ordenadores tras un firewall o cortafuegos).
#ip = 127.0.0.1
#ip = rakshasa.no

# La dirección IP del socket de escucha y las conexiones obligadas
# salientes.
#bind = 127.0.0.1
#bind = rakshasa.no

# El rango de puertos para rtorrent, elige el que has
# abierto en el router.
port_range = 65234-65234

# Elige al azar un puerto dentro del rango anterior que configuraste.
#port_random = yes

# Revisar el hash de los torrents descargados. No está muy recomendado
# puede causar lentitud en el computador.
#check_hash = no

# Sea cual sea el cliente intentar conectar a tracker's mediante UDP.
use_udp_trackers = yes

# Llamadas obligatorias alternativas y las ip que deben manejar las IPs dinámicas.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa

# Opciones de cifrado de conexión, cualquier combinación de estas es valida:
# allow_incoming, try_outgoing,require, require_RC4, enable_retry, prefer_plaintext.
#
# Este ejemplo permite conexiones encriptadas, cifradas.
# Conexiones salientes empiezan sin cifrar con un intento de cifrado,
# si falla da preferencia al texto plano que al cifrado RC4.
encryption = allow_incoming,enable_retry,prefer_plaintext


# Habilitar soporte para DHT para torrents de trackers lentos o cuando todos
# los trackers están caídos.
# Puede configurarse como "disable" (completamente desactivado DHT), "off" (no iniciar DHT),
# "auto" (iniciar y parar DHT cuando sea necesario), o "on" (iciniciar DHT inmediatamente).
# Por defecto es "off". Para que DHT trabaje, un direcctorio de sesión debe ser definido.
dht = auto

# Puerto UDP usado para DHT.
#
dht_port = 65234

# Habilita peer exchange PEX (para torrent públicos).
peer_exchange = yes


#
# No modificar lo que sigue, hacerlo sólo si sabes realmente lo que haces,
# podría explotar tu computador!JeJe.
#


# 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


#### Algunas opciones más, de nivel Master del Universo ####

# Crear enlaces simbólicos en el directorio que estén los torrents
# con un sufijo que indica el estado de descarga.
#on_start = link1,"create_link=tied,,.inicio"
#on_stop = link1,"delete_link=tied,,.inicio"
#on_finished = link1,"create_link=tied,,.acabado"
#on_erase = link1,"delete_link=tied,,.acabado"

# Crear enlaces simbólicos de los torrents en el mismo directorio
# de la descarga.
#on_start = link2,"create_link=base_path,,.inicio"
#on_stop = link2,"delete_link=base_path,,.inicio"
#on_finished = link2,"create_link=base_path,,.acabado"
#on_erase = link2,"delete_link=base_path,,.acabado"

# Crear enlaces simbólicos en otro directorio con un sufijo.
#on_finished = link3,"create_link=base_filename,/files,"

# Mover torrents completados.
# Cuando se finaliza la descarga del torrent, se ejecuta "mv -n <base_path> ~/descargas/"
# y, a continuación, se establece el directorio "~/descargas/". (versión 0.7.7+)
on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,/media/GRANDE/descargas_torrent/;d.set_directory=/media/GRANDE/descargas_torrent/"
# Al terminar, mueve el torrent al directorio seleccionado (ó desde) custom1.
#on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,$d.get_custom1= ;d.set_directory=$d.get_custom1="

# En MacOSX y *BSD.
#on_finished = move_complete,"execute=mv,-n,$d.get_base_path=,$d.get_custom1= ;d.set_directory=$d.get_custom1="
#on_finished = move_complete,"execute=mv,-n,$d.get_base_path=,~/Download/;d.set_directory=~/Download/"

# Move completed torrents to different directory depending on watch directory ¶
# Each watch directory adds torrents with the final destination stored
# in the "custom1" string of the download. You can check this string with
# ctrl-X then "print=$d.get_custom1=" in the client.
#schedule = watch_directory_1,10,10,"load_start=~/Download/watch_stuff1/*.torrent,d.set_custom1=~/Download/stuff1/"
#schedule = watch_directory_2,10,10,"load_start=~/Download/watch_stuff2/*.torrent,d.set_custom1=~/Download/stuff2/"


# Programación de la velocidad de descarga
schedule = throttle_1,22:00:00,24:00:00,download_rate=0
schedule = throttle_2,19:00:00,24:00:00,download_rate=15
#
# Cada día "throttle_1" se inicia a 00:00 y fija el tipo de descarga a ilimitada, mientras que "throttle_2"
# define la descarga a 15kb desde las 19:00. El uso de este el cliente puede hacerse para llevar a cabo
# de una forma un tanto burda la programación del ancho de banda.

###Fin .rtorrent.rc, ejemplo de archivo de configuración rtorrent###
### http://lmdelgado.blogspot.com ###


Puedes copiar directamente este texto y pegarlo en gedit llamando al archivo .rtorrent, guardandolo en tu directorio personal (/home/tu_directorio).

Algunas opciones explicadas más detenidamente:
max_peers = 100 (un número aconsejable de peers a los cuales conectarse como máximo por cada torrent)
max_peers_seed = -1 (-1 es para que use la misma cantidad que cuando descarga, seamos justos…)
max_uploads = 8 (Aquí puedes poner una cantidad relacionando el upload_rate/max_uploads salga algo mayor de 2 irá bien la conexión).
download_rate = 0 (para que descargue sin límite)
upload_rate = 35 (este es el valor que nos va a aparecer en kB/s max upload speed)
directory = ~/descargas/ (directorio en donde se descargarán los archivos por defecto)
session = ~/.rtorrent/ (directorio en donde estarán guardados los datos de sesiones (*))
schedule = watch_directory,5,5,load_start=~/*.torrent (de esta forma, cada vez que descarguemos un .torrent y lo dejemos en nuestro directorio personal, este se cargará al rato de forma automática)
schedule = low_diskspace,5,60,close_low_diskspace=100M (para que cuando haya poco espacio en el disco, 100MB en este caso, se deje de descargar)
port_range = 20000-20000 (rango de puertos por el cual accederá el rTorrent a Internet, recuerden abrirle pasos del cortafuegos, en caso de que tengan uno, si ponemos un solo puerto simplemente repetimos el número)
check_hash = yes (cada vez que finaliza un torrent, es aconsejable que verifique que el hash sea correcto)

(*): Las sesiones son importantes para que cuando cerremos el programa y lo volvamos a abrir, el mismo siga desde donde lo dejamos.
(**) Recordar que ~ representa la dirección a la carpeta base del usuario actual.


La teclas que se usan habitualmente en rtorrent son:

* Ctrl + q: Cierra rtorrent
* Backspace: Abrir y descargar un torrent que se encuentre en la ruta que le escribamos (ruta local o URL).
* Enter: Lo mismo que backspace pero no iniciará la descarga, la haremos nosotros después manualmente con…
* Ctrl + s: Inicia la descarga del torrent seleccionado
* Ctrl + d: Para la descarga del torrent seleccionado. Si ya estaba parado, elimina el torrent.
* a/s/d: Incrementa el límite de subida en 1/5/50 KB respectivamente
* z/x/c: Decrementa el límite de subida en 1/5/50 KB respectivamente
* Shift + a/s/d: Incrementa el límite de descarga en 1/5/50 KB respectivamente
* Shift + z/x/c: Decrementa el límite de descarga en 1/5/50 KB respectivamente
* Flecha arriba: Selecciona el torrent que esté por encima del anterior (también para desplazarse por el menú de información del torrent seleccionado)
* Flecha abajo: Selecciona el torrent que esté por debajo del actual (también para desplazarse por el menú de información del torrent seleccionado)
* Flecha derecha: Muestra una pantalla con información del torrent seleccionada dividida en secciones como la lista de ficheros del torrent, lista del tracker, los chunks o fragmentos de los ficheros del torrent…

Hay más teclas, pero esas son más que suficientes para un uso normal.
Si queréis ver el resto podéis visitar este enlace de la web oficial o bien hacer en consola:

$ man rtorrent


Buscador de torrents:

http://www.mininova.org/
http://thepiratebay.org/
http://torrent-finder.com/ (podemos añadir una extensión para firefox en la parte derecha de la página)


En un post próximo explicaré como hacer que rtorrent se comporte como un demonio y se ejecute al inicio.

Si quieres instalar la última versión de rtorrent y compilarlo tu mismo, este enlace te ayudará:
http://cactusdigital.net/2007/11/02/instalar-ultima-version-rtorrent/

No hay comentarios:

Mi blog de negocios

Gracias por visitar esta web. Aquí encontrarás mi nuevo blog sobre negocios en la nube: www.tunegocioenlanube.net