sábado, noviembre 07, 2009

En clase de sistemas operativos, concluyendo la práctica 11, instalando una netbook como servidor para 20 usuarios

2o. Congreso de Tecnologías de Información de la UNITEC

martes, julio 21, 2009

Image Hosted by ImageShack.us

La UNITEC, la segunda universidad privada más grande de México, va a celebrar la próxima semana del 27 al 31 de julio, su segundo congreso de tecnologías de la información, a celebrarse en su campus de Cuitláhuac.

A través de este congreso, conocido como connecTIon 09, la academia y los estudiantes de la Licenciatura en Informática Administrativa e Ingeniería en Sistemas Computacionales difundirán las propuestas e innovaciones en torno a transparencia y seguridad para la nueva sociedad.

Cabe mencionar que, entre los talleres que se impartirán en el connecTIon 09, se encuentran Fibra Óptica, Java, Linux, Producción y Edición de Video, Robótica, Ensamblado de Equipos de Cómputo e Introducción al Diseño en 3D.

Además habrá competencias de programación, de ajedrez o de fútbol.

Existirán visitas a lugares como el centro de control del STC, la terminal 2 del aeropuerto o el Instituto Nacional de investigaciones Nucleares.

Varios de los cursos y talleres hablan de Linux y la forma de usarlo en una manera práctica.

Pueden acceder a la Invitación al Congreso o al documento que contiene toda la información del congreso

Esperando verlos por ahí, me despido.

Dorpbox, un excelente servicio para compartir y respaldar archivos en internet

miércoles, abril 29, 2009




DropBox es un servicio que te proporciona un disco virtual (que se encuentra sobre internet) gratuito de 2 GB que puede crecer hasta 5 GB, si es que recomiendas a varios usuarios.

Existen varios servicios que de una forma u otra inclusive te ofrecen más espacio de almacenamiento, pero ¿que hace a DropBox diferente?.

Desde mi punto de vista lo que ofrece este servicio es simplicidad, interoperabilidad y facilidad para compartir archivos.

Me explico, simplicidad, se integra con tu escritorio, tu trabajas directamente en un directorio de tu disco duro y todos los archivos y/o subdirectorios que tengas dentro del Directorio de DropBox se sincronizan con internet de forma transparente, bueno, se consume ancho de banda, que casi ni te das cuenta, pero tu no tienes que intervenir en este proceso. Ni te impiden seguir trabajando, tu sigues trabajando con tu archivo de forma local, sin miedo, DropBox sincronizará los cambios que hagas.

Interoperabilidad, si das de alta tu cuenta de DropBox en más de una computadora, supongamos que tienes una en el trabajo y otra en tu casa, en automático lo que hagas en una (dentro del directorio de DropBox) se verá reflejado en la otra, sin intervención de tu parte.

Facilidad para compartir archivos, DropBox genera un directorio llamado Public, para cualquier archivo que coloques en Public, DropBox te genera un vínculo, este vínculo se lo puedes pasar a cualquier conocido y podrá descargar el archivo correspondiente. Como en este caso me tomé la libertad de compartir el paquete del cliente de DropBox para Debian.

De igual forma puedes compartir uno o más de los directorios dentro del Directorio de DropBox con otros usuarios del servicio, y esto funciona como si tuvieras directorios compartidos dentro de una LAN, pero ahora en una WAN, que evidentemente se encuentra en internet.

DropBox proporciona una interfase WEB para que se puedan actualizar los archivos de nuestra cuenta en caso de encontrarnos en un equipo que no tiene instalado el cliente para su servicio.

Para poder disfrutar de estas ventajas necesitamos instalar un cliente para DropBox que tiene versión para Windows, Mac y Linux (Fedora, Ubuntu o compilando desde las fuentes). Buscando un poco encontré una versión para Debian, que no es la más actual, da una pequeña advertencia al iniciar pero después funciona sin problemas.

El cliente para Linux se integra mejor con Nautilus pero yo lo he usado con Konqueror y con Thunar y no me da todas las opciones pero es bastante funcional.

Si aún no se animan pueden ver el screencast o la visita guiada para conocer un poco más de este servicio.

Saludos y nos leemos.

Adobe Air sobre Linux

martes, abril 28, 2009



Desde hace algunas semanas instalé Adobe Air sobre Linux, la que introduce el concepto de RIA (Rich Internet Applications) en el escritorio de varios sistemas operativos, por lo que me dí a la tarea de conocerla un poco más.

El concepto parte de la WEB 2.0 donde la nube se vuelve en el centro de nuestras aplicaciones, la idea es que para muchas funcionalidades que puede tener una de estas aplicaciones el explorador no es suficiente, llegándose a un tipo de enfrentamiento entre RIA contra el escritorio, es decir para poder explotar toda la potencialidad de la Internet se deben elaborar aplicaciones que la exploten en toda su capacidad y el navegador no basta.

AIR, permite que los desarrolladores creen aplicaciones con mejor potencialidad que una aplicación de escritorio sin las limitantes de una interfase WEB, para lograr esto, hace uso de HTML/AJAX y dos tecnologías propias de ADOBE, Flex y Flash; consiguiendo aplicaciones visualmente atractivas y completamente funcionales.

Actualmente AIR funciona sobre Linux, Mac OSX y Windows y la gama de aplicaciones que ofrece va en constante crecimiento.

En mi caso instalé la versión para Linux que, bueno no es un paquete o un repositorio, pero me parece que se integró bastante bien con el sistema instalándose en /opt sin casi preguntar nada.

Una vez que estuvo lista mi instalación he estado probando con un cliente para twitter llamado tweetdeck que es uno de los más usados. Y que de igual forma fue de fácil instalación y se integra completamente con el escritorio.

Pues si encuentran aplicaciones de su agrado, pueden probarlas y entrar a usar algo de la potencialidad de la web 2.0

Espero que les sirva esta recomendación y nos leemos.

Twitea.me un servicio para publicar sms desde tu celular en tu cuenta de twitter, para México

lunes, abril 27, 2009



Al entrar a esto de la twitteada, encontré este servicio, lo que hace es sencillo, envías mensajes desde tu celular a un número telefónico que se te proporciona, y estos mensajes aparecen publicados desde tu cuenta de twitter, con el costo de un mensaje de texto normal.

Para aquellos como yo, que no disponemos de una flamante Blackberry o de un celular inteligente, y no siempre estamos frente a una computadora, esto nos trae a la esencia de porque se creó twitter; publicar tus sms's en una página web y que tus amigos los puedan seguir.

Por lo pronto es lo único que hace, se espera que haga más cosas en poco tiempo.

A lo mejor es un servicio que no dura mucho tiempo, pero bueno usémoslo en lo que existe.

Ventajas, enviar un sms y publicarlo en twitter desde cualquier teléfono, cuesta lo que nos cuesta enviar un mensaje de texto a un celular.

Desventajas, le tienes que dar tus datos como teléfono, cuenta de twitter y contraseña; que pueden ser usados o mal usados para lo que sea, ya que el sitio no coloca un acuerdo o reglas o contrato, nada de nada. O sea úsalo bajo tu propio riesgo, es tu responsabilidad lo que pueda ocurrir después. Solo es para México.

Este sitio es llevado por Arturo Garrido que es un blogger, podcaster e impulsor de tecnologías web que es más o menos conocido en el medio en México.

Recuerda el sitio es twitea.me.

Saludos y hasta la próxima.

Mi Tesina, un live cd con herramientas para programar

domingo, abril 19, 2009


Llevo ya casi dos años estudiando un postgrado en el Centro de Investigación en Computación del IPN en México, por lo que llega el tiempo de hacer la tesina, para lo que hice un Live CD con herramientas para programadores.

Al principio del postgrado tuve problemas con los equipos que me prestaban en la escuela, no me adaptaba a windows, y como eran equipos de uso compartido la mayoría de las veces algo les fallaba.

Por esta razón pensé en un Live CD, alguno que tuviera herramientas para programadores, lo busqué por algún tiempo por internet, pero al final ninguno me convenció. Razón por la que decidí hacer uno para mi uso.

Lo empecé a llevar a los pocos meses de que había iniciado el curso, algunos compañeros me pidieron copias, y lo empezaron a usar en los equipos de sus casas, y otros más se convencieron de instalar Linux.

Hice dos versiones más, intentando actualizar paquetes. Hasta que hace como un año comentando con un profesor de los posibles temas para la tesina, me dijo que depurará un poco mi trabajo y lo documentará para usarlo como tema de titulación.

Como necesito terminar la tesina junto con el postgrado, y después del 20 de abril no voy a contar con nada de tiempo ya que voy a empezar a estudiar un propedeútico para el ingreso a una maestría, me puse de fecha este fin de semana para concluir mi trabajo.

Abro este mensaje para compartirles el documento e información que tengo, me parece que pudiera serles útil.

1. El Live CD lo llamé Programando.

2. Para hacerlo me basé en xubuntu 8.10, intenté basarme en 9.04 RC1 pero me dió problemas en la integración con VirtualBox.

3. Los paquetes adicionales que tiene el Live CD son:

1. language-pack-gnome-es - Traducciones al español de gnome.
2. scite - Editor para programación.
3. kompozer - Editor wysiwyg para html
4. codeblocks - IDE para C y C++.
5. bluefish - Editor para desarrollo WEB.
6. gphpedit - Editor para PHP.
7. dia-gnome - Software para diagramación.
8. apache2 - Servidor WEB.
9. mysql-server - Servidor de base de datos MySQL.
10. mysql-gui-tools-common - Herramientas para MySQL.
11. mysql-navigator - Herramientas para creación de tablas en MySQL.
12. php5 - Servidor para programas PHP.
13. php5-cli - Analizador de sintaxis de programas PHP.
14. phpmyadmin - Gestor gráfico para bases de datos de MySQL.
15. geany - IDE ligero para desarrollo en html, XML, C, C++, Java, Python.
16. sun-java6-jdk - Paquete para desarrollo en Java.
17. sun-java6-plugin - Paquete para ver contenido Java en páginas WEB.
18. flash-plugin-nonfree - Paquete para ver contenido Flash en páginas WEB.
19. unrar - Paquete para descompresión de archivos rar.
20. mozplugger - Paquete para incrustar contenidos en el navegador firefox.
21. Moodle.
22. MySQL WorkBench.
23. EditiX

4. Como se puede ver al iniciar con el Live CD en automático la red de la que forme parte contará con servidor web, de bases de datos, php y moodle. Lo que no es poca cosa.

5. El usuario del Live CD es cic, y la contraseña para todo lo instalado es programando.

6. Me apoyé en dos herramientas para crear el Live CD, VirtualBox y Remastersys.

7. El siguiente vínculo es mi documento de la Tesina: http://docs.google.com/View?docID=dcgxhz2_1347c6zkvs7w

8. La Tesina no iba a ser de la forma en que quedó, ya que me la piden en papel, fue algo que se me salió de las manos y cuando me dí cuenta pues quedó así.

9, A partir del capítulo 4.2 de la Tesina vienen una serie de VideoTutoriales que ilustran cual fue el proceso que seguí para hacer el Live CD y un Live DVD.

10. Espero poder publicar los videotutoriales de forma individual para facilitar su seguimiento.

11. Espero tener tiempo y generar una nueva versión basándome en xubuntu 9.04

12. Si estan interesados puede bajar el Live CD Programando 0.3 de aquí:
http://www.megaupload.com/?d=AOTLFZYN
MD5SUM: 5c8e980ce40270e2789b8d2bd9d3dd6d

13. La versión de Programando 0.31 de aquí:
http://www.megaupload.com/?d=YCB5VNDX
MD5SUM: 7390c719d731da3635fbb04f439fc29b

14. La diferencia entre ambas versiones es que la segunda está personalizada para el CIC - IPN, y cuenta con un curso de PHP y otro de Base de datos con programas y bases de prueba precargadas, eso lo pueden ver a detalle si revisan la tesina.

15. Los videotutoriales tienen inexactitudes, ya que son hechos para personas que conocen poco de Linux, y por la premura, ya no tuve oportunidad de repetirlos, entonces como quedaron la primera vez así se fueron.

16. Hice un Live DVD que espero poder subir en los próximos días.

Gracias.

Incremento de velocidad en Infinitum México

miércoles, abril 15, 2009

Desde hace algún tiempo venía escuchando a modo de chisme que el mayor proveedor de internet en México, estaba subiendo la velocidad de conexión en un 50% en todos sus planes, es decir, los de 1 mbps a 1.5 mbps, los de 2 mbps a 3 mbps y los de 4 mbps a 6 mbps.

Pero pues bueno, desde hace dos semanas me tocó, tal y como lo muestra la imagen de abajo, la conexión que tenía era de 1 mbps y ahora es de 1.5 mbps.

Parece ser que lo van a hacer de forma gradual y también a modo de chisme, dicen que solo donde se vea atacado por la competencia de alguna cablera, eso sí no lo sé, pero en su página no hay algún comunicado oficial.

Puede ser que piensen que en otros países es mejor, o que aún es malo. Puede ser que sí, pero yo vivo en México y es lo que hay, de todos modos su supuesta competencia al menos en el DF tan buena no es.


Por otro lado mi experiencia con Infinitum ha sido buena, empecé hace como 3 años, el plan era de 256 kbps, y pagaba como 600 pesos al mes; ahora son 1.5 mbps y se paga como 400 pesos al mes. Comparándolo así hay diferencia. Doy los datos aproximados, porque en realidad el internet de mi casa lo comparto con otros vecinos y a mi me toca más o menos como de 80 pesos al mes.

Bueno, espero que alguno de ustedes sea de los afortunados, y si todos somos pues más que mejor.

Como hacer un screencast (videoTutorial)

lunes, abril 13, 2009

Un screencast es una película de lo que estamos haciendo en nuestra computadora, es digamos un videotutorial, existen diversos programas para realizar esto que funcionan en diversas plataformas, pero en días recientes he usado una que es multiplataforma y lo único que requiere es que tu navegador trabaje con javascript, ya que funciona directo desde el navegador.

La página para acceder a esta aplicación es www.screencast-o-matic.com; para saber como usarlo hice este screencast que nos lo explica.

Filtrado sencillo de contenido WEB

domingo, febrero 08, 2009


Primero que es esto, las páginas web o casi todas las páginas web se encuentran clasificadas mediante su contenido; es decir existen las de sexo, donde de alguna u otra forma ofrecen contenido pornográfico, o las de las redes sociales, como por ejemplo facebook, hi5, myspaces; o las de subasta, como deremate o mercadolibre.


Existe diferente software, que nos permite el filtrar el contenido web, para digamos evitar que los equipos de nuestros hijos accedan a páginas pornográficas o dificultar que los empleados de una compañia dediquen el tiempo productivo en navegar en todas las redes sociales habidas y por haber.

Con ayuda de Linux y algunas herramientas básicas se pueden establecer restricciones de este tipo para empresas grandes y pequeñas, tal es el caso del soporte que nos puede dar ipcop o smoothwall; pero a pesar de lo sencillo que puede ser para un conocedor de Linux, puede que resulte excesivo para una red muy pequeña o de unas cuantas PC's.

Ante esta disyuntiva me he topado los últimos seis meses, ya que me hubiera gustado instalar algún filtro de contenidos para uno de mis clientes pero le he visto las siguientes limitantes a los ya mencionados: La red es muy pequeña (<20 equipos), no hay un administrador de fijo, en algunas ocasiones se requiere monitoreo y configuración a larga distancia, no existe presupuesto para realizar este filtrado, los equipos son viejos.

Este tipo de restricciones no me dejaban optar por soluciones muy completas, de costo, o que volvieran los equipos más lentos, instalando algún software adicional.

Investigando un poco más, encontré la que hasta el día de hoy me parece una solución adecuada para mi caso, y me parece que para muchos casos, se trata de OpenDNS.

OpenDNS, filtra contenido WEB por tipo de contenido o por nombre; y la forma de activarlo es cambiando los servidores DNS de la red o del equipo que esté intentando controlar por los que me proporciona OpenDNS.

Como es que funciona:

1. Se accede a la página de OpenDNS.


2. De forma gratuita se crea una cuenta en el servicio.



3. Indico la dirección IP de la que deseo filtrar el contenido. Se pueden tener varias direcciones IP, ya que puede ser que necesite usar el servicio de filtrado de contenidos en lugares diferentes: por ejemplo en mi casa, en la oficina del centro, en mi escuela, y así; los lugares donde desee emplear el servicio.


4. Defino por cada dirección IP el nivel de filtrado que necesito; OpenDNS, ofrece diferentes niveles de filtrado desde ninguno (noneinguno), hasta el alto (high) donde evita la navegación en páginas pornográficas, redes sociales, webs mails, sitios de video, y otros más.


5. Agrego o quito manualmente alguna página que desee incluir o eliminar de las restricciones


6. Si quiero que toda la red quede protegida, cambio las direcciones de los servidores de DNS, en el router por los que me proporciona OpenDNS.


7. Si quiero que solo algunas PC's tengan la protección, cambio en cada una de las PC's los servidores DNS que van a emplear por los que me proporciona OpenDNS.


¿Cómo es que funciona?, para poder acceder a una página de Internet, internet mismo tiene estos servidores de DNS, que se encargan de convertir los nombres que tecleamos en el navegador a direcciones IP, que es la forma en que internet accede a las páginas solicitadas.

Sino especificamos la dirección del servidor que se encarga de hacer esta traducción; nuestro proveedor de internet lo hace por nosotros o internet mismo busca el que nos quede más cerca para hacer dicha traducción.

Cambiando los servidores de DNS, y colocando los que proporciona OpenDNS; lo que hace la red o la computadora es solicitarle a dicho servidor que haga la traducción del nombre por la dirección IP correspondiente, y como este servidor tiene la lista de las restricciones que le indicamos se encarga de autorizar o denegar el acceso a la página web que se solicite.

Vía WEB podemos cambiar las preferencias de seguridad para cada una de las redes que hayamos creado en OpenDNS, no necesitamos hacerlo conectados desde la red que deseamos administrar, y el cambio toma a lo más unos 10 minutos en quedar listo. Por lo que es fácil y rápida la adminisitración no solo de una sino de múltiples redes.

En la web del sitio existen unas guías bastante completas que indican la forma en que se puede usar este servicio desde equipos con Windows, Linux, Mac OSX; y la configuración que se necesita para varias marcas de routers.

Por lo que he leído, el servicio que proporciona es muy confiable, y no hace mucho en España ocurrió que los usuarios tuvieron problemas con los servidores proporcionados por telefónica y la recomendación que mejor les sirvio fue colocar los servidores de OpenDNS.

Esperando que esta info les sea tan útil como a mi, saludos y buena semana.





Empezando un nuevo semestre

El miércoles pasado (4/feb/2009) me comentaron en la escuela donde doy clases que a partir de este semestre (9/feb) ya no iba a dar clases en el plantel de Echegaray sino en el plantel de Carpio, sin en realidad preguntar mucho, me dieron mi correspondiente horario de clases.

Por lo que empiezo una nueva aventura, empecé a dar clases más que nada motivado por mi esposa y amigos que consideran que debo compartir algo de lo que sé, y pues así estuvo.

Ahora esperaba continuar la labor que había iniciado pero esta situación no pudo ser así por lo que mi vida como docente continuará en otro sitio, espero no solo llevar a buen éxito la educación de estos chicos, sino también cooperar en algo por la mejora de la base tecnológica de la escuela y la estandarización de los planes de estudio en ambos planteles.

Y pues mañana empiezo a dar clases y mejor voy preparando el material.

Como ver las páginas del manual desde el navegador

domingo, febrero 01, 2009

Desde hace algún tiempo empleo esta funcionalidad, pero hasta hoy se me dió escribir sobre ella.

En algunas ocasiones al buscar como se comporta algún comando, tecleamos en una ventana de terminal el clásico "man comando" y nos aparece una explicación bastante completa de lo que podemos hacer con el comando.

Pero en más de una ocasión me ha ocurrido, sobre todo en comandos muy largos que lo que quiero se encuentra envuelto en multitud de opciones, o ya conozco la opción y solo quiero conocer detalles; y para localizar esta información tengo que buscar por todas las páginas del manual.

En más de una ocasión llegué a desear tener alguna forma de buscar en el texto del manual cosas más específicas, sobre todo en la página del mplayer o del mencoder, que están larguísimas, y más o menos ya sé lo que buscó pero no recuerdo los detalles.

Bueno para esto y para muchas otras cosas, existe una bonita aplicación que nos permite consultar las páginas del manual directamente desde nuestro navegador para internet, se trata de man2html; este es un paquete escrito en perl que realiza la traducción para verlo en el navegador, solo les resta buscar este paquete dentro de los de su distribución para instalarlo.

Una vez que se encuentre instalado basta con teclear la siguiente dirección en su navegador: http://localhost/cgi-bin/man/man2html, y podrán ver los detalles de su comando, más o menos de esta forma.

Bueno eso es todo, saludos.

Script para respaldos incrementales tipo instantáneas (snapshots) inspirados en backintime.

Hice un script para respaldar la información que tengo en mi computadora, lo que hace es lo siguiente:

1. Hace respaldos incrementales de los directorios que se le indican.
2. Los respaldos son del tipo instantáneas (snapshots).
3. Muy sencillo de respaldar y recuperar directorios.

Los respaldos de tipo instantáneas son muy útiles, ya que puedo ver todos los archivos de un directorio y decidir los que me hacen falta, pudiendo navegar por ellos dependiendo de la periodicidad del respaldo.

El que sean incrementales es útil ya que se ahorra espacio solo copiando aquellos archivos nuevos o que tuvieron cambios.

Ahora bien, no importa que un archivo no haya tenido cambios, este aparecerá en cada instantánea que se haya tomado del directorio donde se encontraba, pero solo ocupara espacio como un archivo, esto se logra creando vínculos fuertes o duros al archivo, es decir se encuentra en todas las instantáneas pero solo ocupa un espacio.

Esto da la facilidad que se pueden hacer respaldos cada hora si se desea, si solo se modificó un archivo de 100Kb solo se ocupará el espacio de 100kb, pero para nosotros será como si tuviéramos un nuevo respaldo con todos nuestros archivos.

Si hasta aquí estás convencido, entonces te puedo contar porque hice este script.

Desde hace algún tiempo hago respaldos de los directorios más importantes de mi equipo a otro disco duro de mi mismo equipo, y tiene algún tiempo que lo hago a un NAS que configuré, el problema que me encontré con mi tipo de respaldos es que si solo necesito un archivo, tengo que obtener todo el respaldo, y una vez que lo obtengo saco el archivo, otro problema es que como no son respaldos incrementales, ocupo mucho espacio en cada respaldo y no puedo tener muchos.

Cuando leí de unos nuevos programas para respaldar como son backintime, flyback o timevault; los cuales se encuentran inspirados en el sistema de respaldos de MAC OS X llamado Time Machine. Pensé que podía ser una buena oportunidad para cambiar mi sistema de respaldos.

Probé con el que sonaba que tenía más movimiento, en este caso el backintime, pero lo que no me gustó fue que al menos el que yo probé, si yo hacía un pequeño cambio en un archivo volvía a sacar un respaldo completo de todo mi directorio o directorios que estaba respaldando. En un principio pensé que a lo mejor algo estaba haciendo mal, pero buscando un poco en los foros del programa leí algo como lo siguiente: "si solo modifico un mb de información, ¿porqué se tiene que respaldar todo el directorio de nuevo?". Según comentaban este era un comportamiento similar en Time Machine.

Por esta razón busqué alguna herramienta que hiciera algo similar a lo que necesitaba, en mi búsqueda encontré un programa muy sencillo llamado rdiff-backup, este hace un respaldo del directorio que se le indica y va haciendo respaldos incrementales del mismo con la periodicidad que se necesite, pero tiene un gram problema, recuperar o inclusive revisar si un archivo de una determinada fecha tiene una modificación se vuelve bastante engorroso, uno tiene que navegar mediante la línea de comandos, e inclusive ir sacando del respaldo archivo por archivo lo que uno va necesitando, sin saber a ciencia cierta si el archivo es o no es lo que uno necesita.

Sistemas como rdiff-backup se basan en el hecho de que si yo hago un respaldo de un directorio, lo más seguro es que si recupero voy a saber de que día necesito recuperar el archivo, y de que muy seguramente voy a necesitar el respaldo completo. Este principio era muy válido en tiempos anteriores donde uno corría procesos diarios semanales y quincenales, y sabía la fecha del último proceso válido, pero en las épocas actuales uno no sabe en que fecha modificó un archivo y si en realidad es el que necesita, además de que a lo mejor solo se necesita un archivo de un respaldo de varios gigabytes de información.

La idea de tomar instantáneas me había agradado y me parecía la mejor forma de resolver mi problema, por lo que investigando un poco más, ubiqué una serie de páginas que me indicaban como hacer respaldos incrementales rotativos "Mejorando mi estrategia de copias de seguridad" y "Easy automated snapshot-style backups"; los que me dieron las bases para completar un script que cumpliera lo que necesitaba para mis respaldos.

Que es lo que hace el script:

  1. Realiza respaldos de los directorios que se le indican.
  2. Los deja donde uno le diga
  3. Puedo navegar entre los archivos de cada respaldo que a mis ojos es como si tuviera todos los archivos del directorio con la misma estructura del directorio original.
  4. Recupero el archivo que necesito con un simple copiar y pegar.
  5. Los respaldos son incrementales, es decir no me genera más espacio por archivos que no se hayan modificado.
  6. Me indica la fecha y hora de los respaldos.
  7. Decido el tiempo que deseo conservar los respaldos, ya sea en días o borrándolos de forma manual.
El script en bash es como sigue:


#!/bin/bash
#
# Programa para realizar respaldos de un directorio, la ventaja es que hace
# un respaldo del tipo instantánea (snapshot) donde en cada dia el usuario
# puede encontrar todos los archivos tal y como se encontraban al momento
# en que se hizo el respaldo.
#
# Además para el usuario es como si se hubieran respaldado todos los
# archivos, pero en realidad solo se respaldan los cambios, creándose
# enlaces duros a los archivos existentes.
#
# Se recibe como parametro el directorio para dejar los respaldos.
#
# Los respaldos se dejan en un directorio que indica la fecha y hora
# del respaldo, de esa forma queda más fácil navegar por ellos.
#
# Los respaldos conservan integra la estructura y permisos del directorio
# que respaldan.
#
# ****VARIABLES IMPORTANTES****
#
# $1 - Parametro que indica el directorio donde van todos los respaldos
# $2 - Parametro que nos dice el numero de dias que se conservan los respaldos
# $fecha - Fecha del respaldo y nombre del directorio donde se va a
# guardar el respaldo actual
# directorios - Archivo que tiene los directorios que se van a respaldar
# $directorio - Directorio que se está respaldando
#
# 29 de enero del 2009
# Destructor

# Obtiene fecha y hora de respaldo
fecha="$(date "+%Y-%m-%d-%H:%M:%S-%A")"
echo
echo "============================================================"
echo "Fecha y hora del respaldo $fecha"

# Borra respaldos mayores al numero de dias que se especifiquen
echo
echo "============================================================"
echo "Respaldos borrados"
find $1 -maxdepth 1 -name '2*' -mtime +$2 -print -exec rm -rf {} \;

# Obtiene el directorio de respaldo más reciente
for archivo in $(ls -t $1 --group-directories-first)
do
echo "El respaldo anterior se encuentra en $archivo"

# Respalda cada uno de los directorios indicados en el
# archivo de respaldo llamado directorios
for directorio in $(cat $1/directorios)
do
echo
echo "**************************************************************"
echo "Respaldando el directorio $directorio"

# Crea directorio para respaldar
mkdir -p $1/$fecha$directorio
rsync -av --delete --link-dest=$1/$archivo$directorio/ $directorio/ $1/$fecha$directorio/
done
echo
echo "///////////////RESPALDO CONCLUIDO//////////////////"
exit 0
done

Para usarlo es muy sencillo, solo se debe hacer lo siguiente:

1. ¿Donde voy a guardar los respaldos?

Con tener un directorio en mi equipo, en un disco duro externo, o en otro equipo con espacio para lo que necesito debe ser suficiente, digamos que el directorio donde voy a guardar los respaldos se llama: /mnt/Multimedia/Respaldos.

2. ¿Qué directorios voy a respaldar?

Dentro del directorio donde voy a guardar los respaldos se debe crear un archivo con nombre "directorios" que por cada línea indique los directorios que se van a respaldar, más o menos como sigue:

/home/rponcedeleon/Documentos
/mnt/Imagenes/Portables
/mnt/Imagenes/Proyectos
Tener cuidado de no colocar la diagonal final en los directorios que se van a respaldar.

3. Copiar el script que se encuentra en las líneas superiores y darle permisos de ejecución, yo le puse por nombre respaldo.sh, pero en realidad puede ser el que se quiera.

4. Decidir los dias que se necesitan guardar los respaldos.

Ahora ya se puede ejecutar el script, podemos probarlo con una ejecución directa desde el directorio donde hayamos guardado el script, por ejemplo:

sh respaldo.sh /mnt/Multimedia/Respaldos 30
Con esto le estamos indicando que queremos hacer un respaldo de los directorios que se encuentran en el archivo directorios que debimos haber guardado en /mnt/Multimedia/Respaldos, y que solo queremos conservar 30 días de respaldos.

Al ejecutar el script podemos observar que nos indica la fecha del respaldo, si existe algún respaldo anterior, los respaldos que borró, y los archivos que respaldó; en este caso por ser nuestro primer respaldo nos va a dar mucha información y se va a tardar bastante, los siguientes respaldos serán más breves.

El script nos debe entregar una salida, similar a esta:

============================================================
Respaldos borrados

============================================================
Fecha y hora del respaldo 2009-01-31-23:39:22-sábado
El respaldo anterior se encuentra en 2009-01-31-20:19:28-sábado

**************************************************************
Respaldando el directorio /home/rponcedeleon/Documentos
sending incremental file list
./
CIC/Programas/
CIC/Programas/respaldo.sh

sent 83531 bytes received 365 bytes 167792.00 bytes/sec
total size is 1040765788 speedup is 12405.43

**************************************************************
Respaldando el directorio /mnt/Imagenes/Portables
sending incremental file list
./

sent 1176 bytes received 19 bytes 2390.00 bytes/sec
total size is 491212357 speedup is 411056.37

**************************************************************
Respaldando el directorio /mnt/Imagenes/Proyectos
sending incremental file list
./

sent 51036 bytes received 329 bytes 34243.33 bytes/sec
total size is 3357108911 speedup is 65357.91



Ahora, si vamos al directorio /mnt/Multimedia/Respaldos, podemos observar que tenemos un nuevo directorio de tipo 2009-01-30-13:28:02-viernes, que tiene el respaldo de los directorios que le indicamos, tal cual la estructura de los directorios originales, y conservando los permisos originales, vínculos, archivos ocultos, es decir todo.

Si volvemos a ejecutar el script, observaremos que ahora la información es menor, sino cambiamos nada solo serán mensajes de avisos, y si volvemos a navegar en nuestro directorio de respaldos a lo mejor veremos un nuevo directorio como el que sigue 2009-01-30-13:40:02-viernes.

Es decir, tenemos dos directorios de respaldo, y si navegamos en él, tenemos todos los archivos de nuestros directorios; es decir tenemos dos instantáneas de respaldos, pero si observamos el espacio en disco, los archivos no están duplicados.

Esta es la maravilla, solo respalda los archivos modificados o nuevos, pero podremos navegar por nuestros respaldos con la ayuda de nuestro navegador favorito, de hecho el directorio de respaldos pudiera lucir como sigue:


Aquí se observa como con la ayuda de mi navegador (konqueror) busco entre los diferentes respaldos que conservo para ubicar un archivo, lo interesante de esto es que no se duplica espacio en disco y sigo conservando la facilidad de buscar en cuantos respaldos necesite, de una forma sencilla, sin aprender una nueva interfaz y si quiero puedo tener muchos respaldos al día.

Para mayor facilidad puede ser conveniente que la salida del script la mandemos a un archivo de bitácora donde puedo ver con más calma lo que pasó durante su ejecución, esto lo puedo lograr con una línea como la que sigue:
sh respaldo.sh /mnt/Multimedia/Respaldos 30 >> /home/rponcedeleon/respaldo.log
Con los dos ">>" le indico que la salida del script se vaya a un archivo respaldo.log que se encuentra en /home/rponcedeleon, que si el archivo no existe lo crea, y si existe le agrega más líneas.

Para dejar sus respaldos que se ejecuten cuantas veces necesiten lo pueden incluir en cron, o en anacron.

En mi caso yo lo incluí al arranque de mi sesión, entonces antes de hacer algo, lo primero que hace mi sistema es respaldar cualquier cosa que pude haber hecho en mi sesión anterior.

Por la forma en que se encuentra el script puedo respaldar diferentes directorios con diferentes criterios; a lo mejor algunos necesito hacer un respaldo a la semana, o cada tercer día; o conservar solo una semana de respaldos o un mes; solo debo correr el script con parámetros diferentes.

Por otro lado no existe problema en quitar o agregar directorios al respaldo, desde el momento que lo hagamos podremos apreciar el cambio en el respaldo correspondiente, ya que el script respeta la estructura de directorios que se le indique.

Esperando que este script les sea tan útil como a mi, me despido.