La palabra "torrent" suele tener una connotación negativa debido a su uso para la piratería de software, música y películas. Sin embargo, muchas imágenes ISO de instaladores de sistemas operativos y software se distribuyen vía BitTorrent. Especialmente en el ámbito del software libre y open source.

Para quienes provengan de otro planeta o universo paralelo, BitTorrent (o simplemente torrent) es un protocolo de red peer-to-peer para el intercambio de archivos de forma distribuida.

El día de hoy me encontraba poniéndome al día con mis RSS cuando me enteré que finalmente jen0f0nte publicó en formato de libro todos sus artículos "FLAC" (Fotografía Libre de Alta Calidad). El libro se ha titulado "Fotografía Libre", y ha sido liberado con licencia abierta en formato PDF de unos 800 MB. Uno de los aportes más importantes del año 2018, al menos en lo relacionado a mis gustos e intereses.

Debido a su tamaño, el libro está disponible para su descarga vía archivo torrent, y me pareció una buena oportunidad para probar un cliente de BitTorrent de línea de comandos en Linux.



La mayoría de las descargas vía BitTorrent se suelen hacer desde sistemas de escritorio. Sin embargo, a veces puede llegar a ser necesario descargar vía BitTorrent una imagen de instalación de un sistema operativo (por citar un ejemplo) desde un servidor host de máquinas virtuales. Es aquí donde se puede recurrir a herramientas como transmission-cli. Se trata de un cliente muy fácil de utilizar y con muy pocas dependencias de paquetes.

Para instalar transmission-cli en Debian y derivados, simplemente ejecutar:

root@linuxito:~# apt-get install transmission-cli
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libevent-2.0-5 libminiupnpc5 libnatpmp1 minissdpd transmission-common
Suggested packages:
  natpmp-utils transmission-daemon transmission-gtk
The following NEW packages will be installed:
  libevent-2.0-5 libminiupnpc5 libnatpmp1 minissdpd transmission-cli transmission-common
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,686 kB of archives.
After this operation, 3,894 kB of additional disk space will be used.
Do you want to continue [Y/n]?

Gracias a la configuración en mi servidor, logro que APT no instale dependencias innecesarias, como los paquetes sugeridos y recomendados que no son dependencias estrictas. Por ende sólo necesité instalar 4 paquetes como dependencias (más allá de transmission-common y el propio transmission-cli).

Este cliente permite descargar tanto archivos .torrent como enlaces magnet simplemente pasándolos como parámetro.

Párrafo aparte para explicar la diferencia entre un archivo torrent y un enlace magnet. Un archivo torrent (extensión .torrent) contiene la URL de un tracker (servidor que mantiene una lista de clientes por nombre y/o dirección IP asociados a cada archivo al cual tiene acceso) junto con una lista de archivos y sus metadatos.

Los archivos magnet son un concepto diferente. A diferencia de una URI convencional, los enlaces magnet identifican a un recurso por su contenido (hash) en lugar de por su ubicación.

Volviendo al uso de transmission-cli, además del archivo .torrent (o enlace magnet) pasado como parámetro, la opción -w permite especificar el directorio destino para la descarga.

Veamos un ejemplo de descarga utilizando un enlace magnet:

root@linuxito:~# transmission-cli 'magnet:?xt=urn:btih:3a1c7bba7dfa318bea058d419d6dbb3cf2191177&dn=Fotografia%20libre%20definitivo%20web.pdf' -w .
transmission-cli 2.52 (13304)
[06:58:24.559] Transmission 2.52 (13304) started
[06:58:24.559] RPC Server: Adding address to whitelist: 127.0.0.1
[06:58:24.559] DHT: Generating new id
[06:58:24.659] Saved "/root/.config/transmission/torrents/Fotografia libre definitivo web.pdf.3a1c7bba7dfa318b.torrent"
[06:58:24.659] Fotografia libre definitivo web.pdf: Pausing
[06:58:24.659] Changed open file limit from 60000 to 1024
[06:58:24.659] Saved "/root/.config/transmission/resume/Fotografia libre definitivo web.pdf.3a1c7bba7dfa318b.resume"
[06:58:24.659] Fotografia libre definitivo web.pdf: Queued for verification
[06:58:24.659] Fotografia libre definitivo web.pdf: Verifying torrent
Progress: 0.0%, dl from 0 of 0 peers (0 kB/s), ul to 0 (0 kB/s) [None]

Al utilizar enlaces magnet es importante encerrarlos entre comillas simples para que los caracteres especiales como & no sean interpretados por la consola.

Luego de un rato se observa el siguiente mensaje: State changed from "Incomplete" to "Complete":

Progress: 99.6%, dl from 9 of 12 peers (10.80 MB/s)[07:02:32.892] Fotografia libre definitivo web.pdf: State changed from "Incomplete" to "Complete"

Se ha completado la descarga del torrent.

Presionar Ctrl+C para cerrar el cliente.

Comprobar que el archivo se haya descargado completamente:

root@linuxito:~# ll Fotografi*
-rw-r--r-- 1 root root 811921366 Dec 18 07:02 Fotografia libre definitivo web.pdf

No es este el caso, pero si se incluye un hash, comprobar la firma para verificar su integridad.

Para más información sobre transmission-cli, revisar la ayuda del comando o la página de manual transmission-cli:

root@linuxito:~# transmission-cli -h
transmission-cli 2.52 (13304)
A fast and easy BitTorrent client

Usage: transmission-cli [options] <file|url|magnet>

Options:
 -h  --help                          Display this help page and exit
 -b  --blocklist                     Enable peer blocklists
 -B  --no-blocklist                  Disable peer blocklists
 -d  --downlimit            <speed>  Set max download speed in kB/s
 -D  --no-downlimit                  Don't limit the download speed
 -er --encryption-required           Encrypt all peer connections
 -ep --encryption-preferred          Prefer encrypted peer connections
 -et --encryption-tolerated          Prefer unencrypted peer connections
 -f  --finish               <script> Run a script when the torrent finishes
 -g  --config-dir           <path>   Where to find configuration files
 -m  --portmap                       Enable portmapping via NAT-PMP or UPnP
 -M  --no-portmap                    Disable portmapping
 -p  --port                 <port>   Port for incoming peers (Default: 51413)
 -t  --tos                  <tos>    Peer socket TOS (0 to 255,
                                     default=default)
 -u  --uplimit              <speed>  Set max upload speed in kB/s
 -U  --no-uplimit                    Don't limit the upload speed
 -v  --verify                        Verify the specified torrent
 -V  --version                       Show version number and exit
 -w  --download-dir         <path>   Where to save downloaded data


Tal vez pueda interesarte


Compartí este artículo