SGCG

…esto no es un subtítulo…

Ir a: contenido categorías calendario archivo suscripción

Volver arriba

Retomando una transmisión cortada

2009-06-06

A lo largo de los últimos años el software libre ha ido aumentando su implantación en el mercado de escritorio. Concretamente, cada día más personas de mi entorno ven satisfechas todas sus necesidades de computación con sistemas operativos libres tipo *nix (artículo de la Wikipedia en español fechado 1 de junio de 2009 a las 03:44). Estos sistemas vienen últimamente con unas interfaces gráficas extremadamente simplificadas que ocultan al usuario la poderosa máquina que hay debajo.

Varias personas me han expresado su deseo de aprender a sacar todo el partido a sus ordenadores. Lo cierto es que hay mucha información circulando por ahí a la espera de quien quiera buscarla. Por ejemplo, hay un manual estupendo en FLOSS Manuals (en inglés). De lectura bastante amena es el libro de Joe Topjian Unix for the Beginning Mage (en inglés). Un lugar donde conseguir guías de gran calidad es The Linux Documentation Project (en inglés también). ¡Esto es sólo la proverbial punta del iceberg! Hay tanto material (eso sí, mayormente en inglés) que he decidido seguir una estrategia indirecta: voy a documentar casos prácticos con los que ilustrar las posibilidades que ofrecen los ordenadores de verdad, o lo más se les parece actualmente. Dejo en manos del lector buscar la documentación necesaria para comprender los ejemplos propuestos.

El caso de la transmisión cortada

Este primer caso está basado en una experiencia que tuve hace unos días. Se desarrolla la siguiente situación:

  1. Alice quiere enviar un fichero de gran tamaño, ficherazo, a Bob.
  2. Alice y Bob acuerdan utilizar un protocolo de comunicación poco robusto.
  3. Comienza el envío.
  4. La conexión de Bob se corta repentinamente en plena mitad de la transmisión de datos y no se restablece hasta pasados varios minutos.
  5. El envío queda abortado y no es posible retomar el proceso directamente.
  6. Bob dispone de aproximadamente la primera mitad del fichero.

Ante esta situación, la pregunta es la siguiente: ¿pueden Alice y Bob hacer algo para completar el envío sin tener que retomarlo desde el principio? La respuesta, afortunadamente, es que . Una solución sencilla consistiría en estos pocos pasos:

  1. Bob le comunica a Alice el tamaño parcial del fichero del que dispone.
  2. Alice le envía a Bob un fichero nuevo con el resto de los datos.
  3. Bob concatena las partes inicial y final del fichero. El resultado es el fichero original.

Esto es muy fácil de hacer desde la línea de comandos (artículo de la Wikipedia en español fechado el 4 de junio de 2009 a las 19:00), que es la interfaz más civilizada que existe para comunicarse con una computadora.

En primer lugar, Bob, que es muy ordenado, renombra la primera parte de ficherazo para dejar indicada su naturaleza:

mv ficherazo ficherazo.1

Seguidamente, Bob utiliza ls para obtener información sobre el fichero que ha recibido:

ls -l ficherazo.1

El resultado es el siguiente:

-rw-r--r-- 1 bob bob 5341240 Jun 6 00:00 ficherazo.1

En este ejemplo, Bob recibió los primeros 5341240 B de ficherazo. Se lo comunica a Alice, quien genera un fichero con el resto de los datos usando dd:

dd if=ficherazo of=ficherazo.2 bs=5341240 skip=1

Alice le envía a Bob ficherazo.2. Finalmente, Bob concatena las dos partes usando cat:

cat ficherazo.1 ficherazo.2 > ficherazo

Ahora Bob puede disfrutar de lo que le ha mandado Alice.

Todo esto habría sido mucho más fácil y fiable, por supuesto, utilizando una herramienta apropiada para trasmitir datos como rsync. Suponiendo que Alice tiene una cuenta en el ordenador de Bob, bobsbox, le bastaría hacer lo siguiente:

rsync ficherazo alice@bobsbox:ficherazo

En caso de fallo, basta repetir la orden para que prosiga por donde se quedó.


Categorías: Informática

Permalink: http://sgcg.es/articulos/2009/06/06/retomando-una-transmision-cortada/