Monthly Archives: November 2008

Tip: Usando rsync para transferencias rápidas entre linux

Usualmente uso el famosímo scp para transferir archivos, el problema es que al parecer scp es muy lento cuando se trata de muchos archivos pequeños. 

rsync es un comando para hacer réplicas de un directorio a otro lugar, lo que hace es checar el comparar los directorios y copiar todos los archivos que hayan sido modificados, que sean nuevos o incluso que hayan sido elminados para hacer una copia exacta.

La gran ventaja de rsync es que aparte de crear una réplica, es sorprendentemente rápido, en especial con archivos pequeños.

El uso es muy simple:

rsync -az -e ssh FUENTE usuario@servidor:DESTINO

Eso es todo, para que funcione ambos servidores deben tener el programa rsync instalado, FUENTE es el directorio local a copiar (o puede ser un archivo), DESTINO es el directorio del servidor remoto a donde se copiará.

La opción -az envia la información compresa y -e ssh indica que hay que usar el programa ssh para transferir los archivos (con esto se puede enviar también mediante ftp, etc)

Otra opción que uso mucho es --delete, de esta manera rsync también borrará los archivos “extra” para que la copia sea exacta. Hay que tener cuidado, porque en algo descuidado se pueden borrar los archivos locales (inversión de parámetros)… algo que me pasó una vez, pero tenía respaldo =).

 

 

Eso pasa por no darle navidad a su cartero

Es de todos sabido que el grandioso servicio postal mexicano es muuuuy lento, lamentablemente muchas veces no lo puedes evitar, a mi me llegan revistas de ACM y otras subscripciones por este medio.

Hay veces que quisiera contratar otras subscripciones (de revistas de Estados Unidos principalmente) pero la verdad es que llegan con algunos meses de atraso (un mes despúes se puede considerar como que se esmeraron) y llegan dos de tres o una de dos =(

Pues la semana pasada tocaron a la casa y cuando pregunté, me dijeron “correo”, me dije internamente; caray pues tal vez quieren que firme algo. Cuando estaba por abrir recordé que en esos días era el “día del cartero” y dije, seguramente me van a pedir “aguinaldo”

Como buen profeta, para eso me estaba esperando, y para entregarme un recibo de telmex (para que no se viera tan “interesado”). Saludo muy cordial y sin hablar mucho me dice: “lo molesto con lo de la bonificación”. Me dije internamente “y eso que es ‘voluntaria’”, le di algo del cambio que tenía (no mucho, no poco ;) ) y se fue.

Lo bueno ha sido que en esta semana han llegado muchísima correspondencia, de hecho me acaba de llegar una revista de ACM de Noviembre, antes de cumplir un mes de enviada >=), realmente eso es sorprendente, espero que el cartero no se olvide que le di bonificación para que al menos un par de meses no se me pierda o retrase la correspondencia =).

Por cierto el título es de un capítulo de los Simpsons (Mama Simpson) donde pasa algo similar ;)

Más SPAM Idiota – Spanglish

Ampliando sus horizontes ahora mandan SPAM traducido automáticamente, supongo que utilizaron el peor traductor posible:

Hola,
Estoy Mr. Hanks, uno legítimo, el prestamista de dinero de
renombre. Somos una empresa financiera assistance.We con fondos de
préstamos a las personas en necesidad de asistencia financiera, que
tienen un mal crédito o que necesitan dinero para pagar las
facturas, para invertir en las empresas.
Quiero utilizar este medio para informarle de que nos presten asistencia
fiable beneficiario como yo tendremos inconveniente en ofrecerle un
préstamo.

Servicios prestados incluyen;
* Refinanciar
* Mejoras del Hogar
* Préstamo de Inversiones
* Préstamos de Autos
* Consolidación de Deuda
* Línea de Crédito
* Segunda Hipoteca
* Préstamos Comerciales
* Préstamos Personales
* Préstamos Internacional.
Por favor, escriba de nuevo si los interesados.
Tras la respuesta, se le enviará un formulario de solicitud de préstamos
para llenar.
(N º de seguridad social y la no verificación de crédito, 100% garantizado!)
Espero poder hacer negocios con usted.

Recuerdos.
Mr. Hanks
BAKER préstamos Agency Limited
Correo electrónico: alguntipo@algunservidor

Al parecer es una variación del clásico SCAM nigeriano

 

Tips de PHP: Funciones para el manejo de Nombres de Archivo

Hay tres funciones en PHP que ayudan mucho para programar, las tres tienen que ver con el manejo de nombres de archivo (no con el archivo en si), estas son:

basename($cadena[, $sufijo])
Regresa el nombre del archivo o directorio, por ejemplo:

<?php
basename('/var/www/index.html'); //regresa 'index.html'
basename('/var/www'); //regresa 'www'
?>

Adicionalmente si se le pasa un segundo parámetro se removerá el sufijo si es que existe por ejemplo:

<?php
basename('/var/www/index.html', '.html'); //regresa 'index'
?>

dirname($cadena)
Regresa el nombre del directorio padre del archivo o directorio, es decir regresa lo opuesto a basename

<?php
dirname('/var/www/index.html'); //regresa '/var/www'
dirname('/var/www'); //regresa '/var'
?>

Debe notarse que no regresará el último separador (/)

pathinfo($cadena[, $opciones])
Regresa información del archivo, si no se le pasan opciones regresa un arreglo con las siguientes llaves:
dirname: nombre del directorio, es la misma salida de dirname($cadena)
basename: nombre del archivo, es la misma salida de basename($cadena)
extension: Si la extensión existe estará presente y será la extensión del archivo (cadena a partir del último .)
filename: nombre del archivo sin extension

Por ejemplo:

<?php

pathinfo('/var/www/index.html');
/*
regresa:
Array
(
    [dirname] => /var/www
    [basename] => index.html
    [extension] => html
    [filename] => index
)
*/

pathinfo('/var/www/index');
/*
regresa:
Array
(
    [dirname] => /var/www
    [basename] => index
    [filename] => index
)
*/

pathinfo('/var/www/index.inc.php');
/*
regresa:
Array
(
    [dirname] => /var/www
    [basename] => index.inc.php
    [extension] => php
    [filename] => index.inc
)
*/

pathinfo('/var/www');
/*
regresa:
Array
(
    [dirname] => /var
    [basename] => www
    [filename] => www
)
*/

?>

Adicionalmente se puede pasar una constante como parámetro para especificar unicamente un valor, en este caso la función regresa una cadena solamente; las constantes posibles son:

  • PATHINFO_DIRNAME
  • PATHINFO_BASENAME
  • PATHINFO_EXTENSION
  • PATHINFO_FILENAME

De los cuales, solamente son útiles: PATHINFO_EXTENSION y PATHINFO_FILENAME ya que PATHINFO_DIRNAME es equivalente a dirname y PATHINFO_BASENAME es equivalente a basename

PATHINFO_FILENAME evitar hacer dos llamadas (una a filepath para saber la extensión y la siguiente a basename con la extensión como sufijo para saber el nombre del archivo)

Ejemplo:

<?php

pathinfo('/var/www/index.html', PATHINFO_EXTENSION); //regresa 'html'
pathinfo('/var/www/index.html', PATHINFO_FILENAME); //regresa 'index'
?>

Spam Idiota

Si nos quejamos de que en la mercadotecnia se les han acabado las ideas (como a muchos otros sectores creativos) y terminan con anuncios sin sentido, pues también al SPAM se les agotan las ideas para atraer incautos, para muestra uno de los que tantos me llegan (traducido):

Asunto:

¿Eres Tu? Tany aqui

Mensaje: 

No me ignores por favor,
Encontré tu  correo en alguna parte y me decidí a escribirte.
Por favor dime si no te importa. Si quieres te puedo mandar algunas fotografías mias.
Soy una chica guapa. No respondas a este correo.
Respóndeme directamente a: correo@servidor 

Supongo que el contenido es tan simple para evitar algunos filtros de SPAM, pero sinceramente, ¿alguien su sano juicio responderá a esto?

Solución a “Failed to find an unused loop device”

En Xen, si no configuras de antemano linux verás que después de iniciar varios servidores virtuales te marcará un error que dice: “Failed to find an unused loop device

Esto significa que linux ya no tiene “lugar” para montar más dispositivos loop (montar tu disco duro virtual o swap), por defecto tienes ochos dispositivos loop permitidos, que son para cuatro máquinas virtuales (debido a que utilizan al menos dos imágnes, una para el swap y otra para el disco duro)

Para aumentar este límite es muy fácil, primero detienes las instancias virtuales de Xen:

/etc/init.d/xendomains stop

Agregas al archivo /etc/modprobe.d/local-loop lo siguiente (o crealo si no existe):

options loop max_loop=64

Después vuelves a cargar el módulo

rmmod loop
modprobe loop

Por último inicias las instancias virtuales

/etc/init.d/xendomains start

Con esto puede tener hasta 32 instancias de Xen sin problemas.

Ruteo en Xen

Hace poco instalé un servidor Xen, después para terminar de configurarlo solicitamos IP’s adicionales para que cada servidor virtual tuviera su IP dedicada.

Lamentablemente nos dieron IPs en otra subred, esto puede ocasionar algunos problemas pero aqui está una solución =)

Vamos a suponer que nuestro servidor Xen tiene ip 192.168.1.90 y que nuestras nuevas ips a asignar son 192.168.247.130 y 192.168.247.131, y que el gateway de nuestra máquina anfitrión es 192.168.1.1

 

Configuración de Xen

Debido a que en mi caso necesitaba rutear los datos entre mi máquina anfitrión (dom0) y mis máquinas virtuales (domU) habilité lo siguiente en xen:

(network-script network-route)
(vif-script vif-route)

Tanto network-script  y vif-script deben ser las únicas configuraciones disponibles (esto es comentar todos los otro network-script y vif-script)

 

Reiniciamos el servidor Xen:

/etc/init.d/xend restart
/etc/init.d/xendomains restart 

Es muy importante que verifiques si te marca un error, ya que a mi me mandaba un error por un script que no reconocía la interfaz que ibamos a utilizar, así que hice el siguiente cambio en el archivo: /etc/xen/scripts/network-route

dir=$(dirname "$0")

. "$dir/xen-script-common.sh"

evalVariables "$@"

 

#netdev=${netdev:-eth${vifnum}}

netdev=eth0 #definir por defecto la interfaz a utilizar

echo 1 >/proc/sys/net/ipv4/ip_forward
echo 1 >/proc/sys/net/ipv4/conf/${netdev}/proxy_arp

 

Básicamente lo que hace el script de Xen es habilitar el ruteo en linux y crear unas reglas de iptables (que tu puedes configurar si quieres personalizar el rendimiento o seguridad de tus máquinas virtuales por medio del anfitrión)

Ya por último debes borrar el puente que hace Xen en la configuración por defecto de bridge (usando el comando brctl)

 

Configuración de la Imagen

Al crear la imagen. proporciona la IP, el gateway de tu máquina anfitrión (dom0) y la máscara de red correspondiente, en nuestro ejemplo 255.255.0.0, ejemplo:

xen-create-image --hostname=misitio.com --ip=192.168.247.130 --netmask=255.255.0.0 --gateway=192.168.1.1 --passwd

 

Con esto tus máquinas clientes podrán ser vistas y accesar a internet sin problemas.