Hoy tenia la necesidad de compartir un archivo de 1,1GB con un grupo de amigos y no quería usar el ancho de banda de mi servidor por completo para esto así que decidí usar torrents. El torrent es un protocolo para compartir archivos con la peculiaridad de que todo lo que descargas por este medio, durante el transcurso de su descarga, estará siempre disponible para ser descargado por otro. Ya en el articulo “Descargas automatizadas de torrents en el NSLU2″ toque el tema de los torrents en el NSLU2, esta vez les voy a comentar un poco de como crear un torrent tracker y como crear el torrent como tal.
El torrent tracker es la pieza clave
Un tracker es un server (en este caso mi NSLU2) que contiene la información necesaria para que los peers se conecten con otros peers coordinando la comunicación entre ellos. Los trackers son el único punto de encuentro al cual los clientes requieren conectarse para poder comunicarse y poder iniciar una descarga. En nuestro caso usaremos el que trae el kit de utilidades bittornado.
bttrack.py viene incluido con bittornado, yo use el siguiente comando con estos flags para levantar mi servicio de torrent tracker:
nohup /usr/bin/bttrack.py --port 6969 --dfile ~/dstate.txt --logfile ~/tracker.log &
Así de simple como se ve, invoco el script de python y le paso los siguientes parámetros:
–port: El puerto en el que va a escuchar.
–difile: El archivo con la información mas reciente de las descargas.
–logfile: El archivo de registros de las actividades del tracker.
El archivo *.torrent es algo mas complejo.
El archivo torrent es un poco mas complejo pero igual fácil de crear, usando btmakemetafile que también esta incluido en bittornado podemos crear el archivo tan solo con proporcionarle el hipervínculo del tracker y el nombre del archivo que queremos compartir como se puede ver aquí:
btmakemetafile.py http://orvtech.com:6969/announce --comment "http://orvtech.com/latest/torrent" guardianes_de_chavez.mp4
El parámetro –comment simplemente nos permite agregarle un comentario al torrent.
Hacerlo publico para distribuirlo
Hay muchas formas de hacerlo publico, solo basta con enviar el archivo *.torrent a las personas que queremos que descarguen el archivo, publicarlo en tu blog personal o subirlo a uno de estos sitios que sirven para buscar torrents, en mi caso use TPB el cual tiene la particularidad que toma el *.torrent que tu creaste y agrega otros 2 trackers a el ( http://tracker.thepiratebay.org/announce y http://tracker.openbittorrent.com/announce )
UPDATE Viernes Agosto 13, 2010: Un bug en el tracker.
Al parecer mi versión de bttracker no es del todo compatible con mi versión de python, y el proceso muere después de mas de un par de horas con un error referente a la incompatibilidad con el modulo SHA. Por ahora he decidido hacer un pseudo whatchdog para vigilar que el tracker este siempre arriba.
Modifique el script a esto:
while true
do if pidof -x bttrack.py > /dev/null
then sleep 2
else /usr/bin/bttrack.py --port 6969 --dfile ~/dstate.txt --logfile ~/tracker.log
fi
done
Como ven es un loop infinito que constantemente pregunta por el PID del proceso, de no encontrarlo simplemente ejecuta de nuevo el comando.Luego descargo una versión mas nueva de bittornado a ver si esto soluciona el problema.
páginas de interés:
TheShad0w’s experimental bittorrent client (BitTornado)
Pagina del proyecto bittorrent.org











Gracias por la explicación, me será útil.
Saludos
hola.
Me gustaria su permiso para que yo traduce su post y publicasse él en mi blog. Ès possible?
Gracias
Claro Paulo, sin problemas. recuerda hacer link back.