domingo, 21 de junio de 2009

copias incrementales

La idea de este script, es poder hacer copias incrementales de la forma más fácil posible. (sin parametros o pocos parametros con buenos valores por defecto).

El script se puede ejecutar con 0, 1 o 2 parametros:

* 0 parametros : si simplemente ejecutamos el script, sin parametros, considerará que quieres hacer una copia de seguridad del directorio de trabajo actual. Si el directorio activo es por ejemplo: /home/makiolo/descargas se creara el directorio copia_de_descargas con la copia principal y las copias incrementales.
* 1 parametros : si no queremos especificar el directorio que queremos salvar de forma implicita (por directorio de trabajo), sencillamente pasamos la ruta del directorio que queremos salvar(absoluta o relativa) como primer parametro. Se creara en el mismo directorio que queremos salvar la carpeta copia_de_$nombre con la copia principal y las copias incrementales. Como he dicho las rutas pueden ser relativas o absolutas, pero es recomendable las absolutas pero definitivamente evitar el determinismo del directorio de trabajo.
* 2 parametros : Tener la copia de seguridad junto original no es muy útil si sufrimos una perdida de información. Es evidentemente recomendable tener la copia en un disco distinto al original. Por tanto:
o 1er parametro : carpeta que queremos salvar.
o 2º parametro : destino de la copia de seguridad
* Alguna cosas más importantes:
o .rsyncExcluir : se hace un listado de directorios y archivos que se excluyen de la copia de seguridad. Si no existe se crea excluyendo a si mismo y al destino de la copia de seguridad. Para evitar hacer una copia de la copia :/
o En copia_de_$nombre/principal/ : Esta es la copia más reciente, y si ejecutas tu comando con cierta frecuencia es una copia exacta del original.
o En copia_de_$nombre/incrementales/ : Se crea un incremental por día, (excepto si en ese día no hubo cambios). Tal y como esto en AÑO-MES-DIA, no sería dificil cambiar el date para realizar otro tipo de partición. Si especificamos hora y minuto podría ser excesivamente particionado. Podríamos cambiar el script para agrupar por otros criterios, por ejemplo fecha+turno (grupo de mañana o de tarde), o por numero de la semana si las copias de seguridad son semanales. En los incrementos solo se guarda el cambio respecto al principal que se hizo ese día.
* Asi que simplemente hacer gedit copiaSeguridad.sh , copy & paste y darle permisos. sudo chmod 0755 copiaSeguridasd.sh

#!/bin/sh
#
# :: Invasion Tux
# :: Ultima modificacion : lunes, 09 de febrero de 2009
# :: Script realizado por makiolo (makiolo@gmail.com) (Licencia Creative Commons con reconocimiento)
# :: Ultima version : http://blogricardo.wordpress.com/2009/02/08/script-para-hacer-copias-de-...
# :: Dependencias : rsync
#

################################# VARIABLES ##############################################

if [ $# -eq 0 ]; then
# Directorio que queremos salvar
DIRECTORIO_A_SALVAR=`pwd`

# construir nombre subdirectorio
NOMBRE_MES_ANIO=`date "+%^B_del_%Y"`
NOMBRE_SALVADO=`basename $DIRECTORIO_A_SALVAR`
SUB_DIRECTORIO_A_SALVAR="copia_de_"$NOMBRE_SALVADO"_en_"$NOMBRE_MES_ANIO

# directorio donde se guarda el backup
DESTINO_DE_LA_COPIA=$DIRECTORIO_A_SALVAR/$SUB_DIRECTORIO_A_SALVAR
elif [ $# -eq 1 ]; then
# Directorio que queremos salvar
DIRECTORIO_A_SALVAR=$1

# construir nombre subdirectorio
NOMBRE_MES_ANIO=`date "+%^B_del_%Y"`
NOMBRE_SALVADO=`basename $DIRECTORIO_A_SALVAR`
SUB_DIRECTORIO_A_SALVAR="copia_de_"$NOMBRE_SALVADO"_en_"$NOMBRE_MES_ANIO

# directorio donde se guarda el backup
DESTINO_DE_LA_COPIA=$DIRECTORIO_A_SALVAR/$SUB_DIRECTORIO_A_SALVAR
elif [ $# -eq 2 ]; then
# Directorio que queremos salvar
DIRECTORIO_A_SALVAR=$1

# construir nombre subdirectorio
NOMBRE_MES_ANIO=`date "+%^B_del_%Y"`
NOMBRE_SALVADO=`basename $DIRECTORIO_A_SALVAR`
SUB_DIRECTORIO_A_SALVAR="copia_de_"$NOMBRE_SALVADO"_en_"$NOMBRE_MES_ANIO

# directorio donde se guarda el backup
DESTINO_DE_LA_COPIA=$2/$SUB_DIRECTORIO_A_SALVAR
else
echo "Numero de parametros incorrecto"
exit
fi

# Archivos donde listamos las exlusiones de la backup
FICHERO_DE_EXCLUSION=$DIRECTORIO_A_SALVAR/.rsyncExcluir

# subdirectorio donde se guarda la copia principal
COPIA_PRINCIPAL=$DESTINO_DE_LA_COPIA/principal

# subdirectorios donde se guardan las copias incrementales
COPIA_INCREMENTOS=$DESTINO_DE_LA_COPIA/incrementales

# ruta variable de copias incrementales
COPIA_INCREMENTOS_VARIABLE=$COPIA_INCREMENTOS/`date | awk '{print $3}'`

# opciones de rsync , mejor no tocar
OPCIONES="--force --ignore-errors --delete --delete-excluded \
--exclude-from=$FICHERO_DE_EXCLUSION --backup --backup-dir=$COPIA_INCREMENTOS_VARIABLE -av"

################################# FUNCIONES ##############################################
ejecutarRsync()
{
if [ ! -f $FICHERO_DE_EXCLUSION ]; then
echo `basename $DESTINO_DE_LA_COPIA`"/" > $FICHERO_DE_EXCLUSION
echo ".rsyncExcluir" >> $FICHERO_DE_EXCLUSION
echo "*~" >> $FICHERO_DE_EXCLUSION
fi
rsync $OPCIONES $DIRECTORIO_A_SALVAR $COPIA_PRINCIPAL
}

################################# MAIN ##############################################

# nos aseguramos de que existen los directorio de destino de la copia de seguridad
mkdir -p $DESTINO_DE_LA_COPIA
mkdir -p $COPIA_PRINCIPAL
mkdir -p $COPIA_INCREMENTOS

if [ ! -d $DIRECTORIO_A_SALVAR ]; then
echo "No se encontro el directorio a salvar : $DIRECTORIO_A_SALVAR";
elif [ ! -d $DESTINO_DE_LA_COPIA ]; then
echo "No se encontro el directorio de destino de la copia : $DESTINO_DE_LA_COPIA";
else
ejecutarRsync
fi

Es un script excelente para combinarlo con un cron 24h.

Si no entendeis para que sirve el script o no sabeis que es una copia incremental –> google xD, no hombre podeis preguntarmelo y eso xD

Tambien si encontrais algún bug os lo agradeceré mucho que lo comenteis.

fuente: http://blogricardo.wordpress.com

miércoles, 20 de agosto de 2008

Montando un servidor ciego con Debian Etch

Enlace original: http://ulibertad.wordpress.com/2007/10/06/montando-un-servidor-ciego-con-debian-etch/


Más de uno, probablemente, tenga por su casa abandonado un viejo ordenador que no sabe que hacer con el, probablemente piense que es una molestia tenerlo ahí pero seguramente no sepa que sea lo suficientemente potente como para utilizarlo como servidor ciego en nuestra red local. Ahora os estaréis preguntando que es un servidor ciego, en pocas palabras es un ordenador que correrá un sistema operativo sin interfaz gráfica que podremos controlar remotamente, por lo que no nos hace falta conectarle monitor, teclado o ratón. En este servidor ciego, podremos correr cualquier programa, como clientes P2P controlados remotamente, o usarlo como servidor de archivos y almacén, pudiendo acceder a sus archivos en toda nuestra red, o de servidor de impresión,… las posibilidades son infinitas.
Mi servidor ciego es un PIII a 500Mhz con 128Mb de RAM, y es más que suficiente para correr todos los servicios y programas que necesito, como TorrentFlux para mis descargas de Torrent, MLDonkey para mis descargas ED2K, Apache como servidor WEB, MySQL, un servidor FTP, un servidor con NFS, un servidor de Impresión con CUPS, etc… No hace falta ninguna máquina potentísima para correr todo esto, lo más necesario es la RAM, cuanta más mejor. Luego hay quien los reduce a su mínima expresión y para meterlos en una caja de metacrilato, o incluso un Tupperware, yo sinceramente, el mio lo tengo en su torre original, por que no tengo problemas de espacio, pero le he desconectado practicamente, unidades de CD o DVD, disquetera, etc… solo nos hace falta la placa base, CPU, tarjeta de Red, fuente de alimentación y los Discos duros. Lo que hagáis con él, o donde lo pongáis ya es cosa personal de cada uno.
Pues bien, para todos los interesados en hacerse su propio servidor ciego voy a explicar como lograr una instalación totalmente personalizada partiendo de una distribución Debian Estable (Etch), y para mayor comodidad utilizaremos el CD netinst de la distribución. Este tutorial lo realizaré por pasos, en esta primera entrada explicaré como instalar el sistema base de Debian, en próximas entradas explicaré como instalar y configurar los diferentes programas y servicios que necesitemos de nuestro servidor.
En que consiste el CD netinst?
El CD netinst es una manera de instalar únicamente el sistema base de Debian, dejando a la elección del usuario los programas que serán añadidos tras la instalación. Lo que quiere decir que, tras instalar, tendremos un sistema de lo más básico, pero con la posibilidad de instalar los paquetes que nos apetezca, personalizando así nuestro sistema y dejándolo completamente a nuestro gusto. Bajo mi punto de vista es la mejor manera de instalar una distribución GNU/Linux, ya que nos permite tenerla a nuestro gusto desde el primer al último paquete.
Preparativos
Antes de proceder tenemos que elegir como particionaremos el disco duro para alojar nuestro sistema. Esto es algo que puede cambiar según la necesidad o las preferencias de cada uno, pero yo recomiendo usar 3 paticiones:
Una para el directorio raíz de unos 10 Gb. Le damos formato ext3 (se pueden usar otros formatos, pero este es el más recomendable). Su punto de montaje es /.
Otra para el directorio personal del espacio que quiera cada uno, aquí irán los archivos de cada usuario, apenas necesitaremos espacio en esta partición, así que un tamaño de unos 2Gb será más que suficiente. También en ext3. Su punto de montaje es /home.
Y otra para la partición de intercambio. El tamaño de esta depende de la cantidad de memoria Ram que tengamos. Si tenemos poca Ram pondremos el doble, en mi caso tengo 128Mb de Ram y mi partición Swap es de 320 Mb, un poco más del doble por si acaso. Hay que darle formato Swap. No tiene punto de montaje.
Por último hay que decidir que versión de Debian queremos. Tenemos 3 posibilidades (stable, testin y unstable) pero lo mejor es decantarnos por una versión estable, no necesitamos tener las últimas versiones de los paquetes, necesitamos estabilidad y que todo funcione como se espera, y para ello es mejor disfrutar de los paquetes más estables, aunque con ello nos tengamos que conformar con versiones no tan actualizadas. Y si no leed como la ha definido Tony:
Versión estable (stable): Como su propio nombre indica es la versión de Debian que tiene los paquetes más probados y, por tanto, la más estable. Esta versión es la más recomendable en caso de que queramos usar Debian como servidor debido a su gran estabilidad. Para un entorno de escritorio doméstico quizá sea la menos aconsejable, ya que está muy poco actualizada y las versiones de los paquetes que contiene no son precisamente nuevos.
Obteniendo el CD apropiado
Una vez que tengamos todas estas consideraciones claras, nos descargaremos el CD adecuado según nuestro procesador. Aquí están los enlaces para procesadores de 32 bits y 64 bits. Ambos CDs son de la versión estable, se pueden descargar también CDs de las versiones testing y unstable, pero prefiero usar la versión estable, después cada uno puede actualizar a la versión que quiera trás instalar el sistema base. Como tengo un PIII pues tendré que elegir 32 bits y supongo que nadie tendrá para su servidor ciego una CPU de 64 bits, pero por si acaso ahí os queda el enlace para 64 bits.
Ahora ya sólo queda grabar el CD, introducirlo en el lector y reiniciar el PC para arrancar el sistema desde dicho CD.
Instalando
La instalación no es nada complicada, vamos siguiendo los pasos del instalador. Elegimos nuestro idioma, le damos un nombre a nuestra máquina (yo le puse servidor-debian, así la identifico rápido en mi terminal), configuramos la red eligiendo la interfaz Ethernet adecuada (si tenéis más de una, basta con ir probando). Nos pedirá alguna cosa más como la contraseña para root, el nombre y contraseña para nuestra cuenta, etc.
Cuando lleguemos al particionado seleccionaremos la opción de particionado manual. Como tenemos las particiones creadas, solo será necesario seleccionar una a una las particiones asignándoles el sistema de ficheros y el punto de montaje adecuado, como se puede ver en la captura:
Cuando lleguemos a la parte de configuración de APT, seleccionaremos una réplica de red y nos pedirá elegir una ubicación. Personalmente prefiero usar el servidor Finlandés ya que suele estar algo más actualizado que el Español, pero podéis seleccionar el que queráis.
Llegaréis a una pantalla donde podremos elegir varios grupos de paquetes para instalar. Aquí hay que seleccionar “Sistema estándar”, el resto de las opciones probablemente las necesitemos más adelante, pero yo prefiero ir instalandolas según las voy necesitando. Así que solo marcaremos “Sistema Estándar”:
Por último llegaremos a la instalación de GRUB, el cargador de arranque. Seleccionaremos Si para instalar Grub en el sector de arranque del disco.
Finalizando la instalación
Una vez terminado todo el proceso, solo queda retirar el CD cuando se abra la bandeja y presionar Enter para reiniciar el equipo. Seleccionamos Debian con el Kernel normal (el que no pone single user mode) y entraremos en nuestra nueva Debian.
Ya tenemos nuestro sistema Debian instalado, en breve retomaremos el trabajo para instalar y configurar nuestro servidor ciego y los demás servicios o programas que necesitemos en él.

domingo, 10 de agosto de 2008

Optimizar Kernel

El en lace original: http://www.laconsolablog.com/2008/05/03/ubuntu-hardy-heron-optimizacion-del-kernel/

Bueno, tarde pero seguro. Por si alguno se perdió de la primera parte, en la que explicaba como solucionar algunos errores o bugs en la Beta o Release Candidate de Hardy Heron, al final del post anunciaba la publicación de una segunda etapa. En la misma, daría unas pocas indicaciones acerca de cómo terminar de configurar temas del kernel.
Bueno, acá estamos.
1. Borrado del kernel 2.6.22 (Ubuntu 7.10)
La primer pauta es la de quitar la versión del kernel que usaba Gutsy Gibbon. Aunque obviamente, queda reservado para aquellos a los que no les interese mantener varios megas ocupados en disco, o para los que no posean alguna configuración pendiente del kernel anterior. Como es sabido, un dispositivo que funcionaba perfectamente con el kernel 2.6.22 no necesariamente deba funcionar de entrada con 2.6.24. En algunas ocasiones, antes hay que volver a instalar los controladores para la nueva versión. Afortunadamente, en Ubuntu y derivadas no pasa tan seguido. En parte, eso se debe a los paquetes restringidos en su código fuente o licencia que brinda la distribución, simplificando varios minutos de búsqueda y configuración por Internet. Además, vamos a tener el GRUB automáticamente optimizado, mostrando sólo aquellos kernels que tenemos instalados.
Para este proceso vamos a usar al comando aptitude (no apt-get) porque ofrece un par de opciones bastante útiles, aunque sencillas, que simplifican bastante el trabajo. Lo primero que hay que hacer es filtrar aquellos paquetes que correspondan a imágenes del núcleo Linux que tenemos instaladas actualmente en el sistema. Para ello:
$ aptitude search linux-image grep ^ii linux-image-2.6.22-14-generic - Linux kernel image for version 2.6.22 on xi linux-image-2.6.24-16-generic - Linux kernel image for version 2.6.24 on xi linux-image-generic - Imagen genérica del núcleo Linux
Como se ve, en mi caso muestra tanto las imágenes de los núcleos correspondientes a Gutsy como a Hardy, en su versión genérica. Como queremos remover el primero, hay que citar el siguiente comando como root.
# aptitude purge linux-image-2.6.22-14-generic(...)Los siguientes paquetes están ROTOS:linux-restricted-modules-2.6.22-14-genericlinux-ubuntu-modules-2.6.22-14-genericvirtualbox-ose-modules-2.6.22-14-genericSe ELIMINARÁN los siguientes paquetes:linux-image-2.6.22-14-generic{p}0 paquetes actualizados, 0 nuevos instalados, 22 para eliminar y 0 sin actualizar.Necesito descargar 0B de ficheros. Después de desempaquetar se liberarán 83,4MB.No se satisfacen las dependencias de los siguientes paquetes:virtualbox-ose-modules-2.6.22-14-generic: Depende: linux-image-2.6.22-14-generic pero no es instalablelinux-restricted-modules-2.6.22-14-generic: Depende: linux-image-2.6.22-14-generic pero no es instalablelinux-ubuntu-modules-2.6.22-14-generic: Depende: linux-image-2.6.22-14-generic pero no es instalableResolving dependencies...Las acciones siguientes resolverán estas dependencias
Eliminar los paquetes siguientes:linux-restricted-modules-2.6.22-14-genericlinux-ubuntu-modules-2.6.22-14-genericvirtualbox-osevirtualbox-ose-modules-2.6.22-14-generic
La puntuación es -34
¿Acepta esta solución? [Y/n/q/?] y
Cabe destacar que mi aptitude detectó más paquetes que tenía instalados (linux-restricted-modules-2.6.22-14-generic, linux-ubuntu-modules-2.6.22-14-generic y virtualbox-ose-modules-2.6.22-14-generic) relacionados a la versión del kernel que quería remover, por lo que me ofreció desinstalarlos también. Como dichos paquetes de todos modos quedarían inútiles y ocupando varios megas, confirmé. A su vez, virtualbox-ose quedaría obsoleto por desinstalar los únicos módulos que lo hacían funcionar, pero puede instalarse tranquilamente más tarde junto con los módulos correspondientes al kernel que usemos.
Como dije antes, con esta desinstalación nuestro GRUB va a mostrar automáticamente solo aquellos kernels que tengamos instalados en el disco rígido.
2. Optimización del kernel 2.6.24 (Ubuntu 8.04)
Atención: Para todos aquellos que tengan un procesador de doble núcleo, quizás no sea tan conveniente realizar este paso. Gracias al comentario de un lector pude saber que el kernel citado en esta parte puede no detectar ambos, sino uno solo. Igualmente, no es tan grave y puede revertirse fácilmente.
El segundo paso que propongo es la instalación de un kernel más acorde al procesador, ya que el que viene instalado por defecto en Ubuntu quizá no sea el más provechoso para la mayoría. No obstante, este mini-HOWTO va a estar dedicado a aquellos que cuenten con un procesador i386. Si bien no se trata de la totalidad de los casos, hoy por hoy creo que es la gran mayoría. Si no sabés qué procesador tenés, seguí la siguiente pauta: Si tenés una PC y no ves por ningún lado que diga 64 bits, seguramente es de 32. De todos modos, si es de 64 no se va a morir por usar software de 32 bits, pero no es lo óptimo.
Yendo al grano, para instalar tanto el kernel como todos los dispositivos necesarios para asegurar la máxima compatibilidad con el hardware instalado (considerando un procesador i386, i486, i586 o i686) basta con ejecutar el siguiente comando:
# apt-get install linux-headers-2.6.24-16 linux-headers-2.6.24-16-386 linux-image-2.6.24-16-386 linux-restricted-modules-2.6.24-16-386 linux-ubuntu-modules-2.6.24-16-386
Así como en el primer paso quitamos, el comando anterior nos va a crear algunas entradas más en nuestro GRUB, correspondientes a la nueva versión de Linux que acabamos de instalar. El siguiente paso es opcional nuevamente, y recomiendo llevarlo a cabo luego de ver que todo nos funcione correctamente, y eventualmente que notemos un mejor rendimiento en la carga de las operaciones. Por mi parte fue de ese modo, así que puedo garantizarlo. Tengo que advertir que una vez que eliminemos la imagen del kernel, es difícil recuperar alguna configuración específica, aunque del mismo modo en muy pocos casos eso es necesario.
Con el siguiente comando bastaría para dejar todo lo más limpio posible:
# apt-get remove --purge linux-headers-2.6.24-16-generic linux-image-2.6.24-16-generic linux-restricted-modules-2.6.24-16-generic linux-ubuntu-modules-2.6.24-16-generic
3. Instalación de VirtualBox (en el nuevo núcleo)
Una vez que hayamos optimizado Linux para nuestro procesador x86, nos va a hacer falta “restaurar” VirtualBox. Por si alguno no sabe qué es VirtualBox, doc.ubuntu-es.org lo explica muy bien. A su vez, screening ya anticipó cómo instalar VirtualBox en Ubuntu 8.04, pero lo que omitió explicar (aunque bien mencionó) fue cómo hacer para distinguir entre las distintas versiones del procesador.
Para tener todo en las mejores condiciones para ejecutar entornos virtuales, ejecutar:
# apt-get install virtualbox-ose virtualbox-ose-modules-2.6.24-16-386 virtualbox-ose-guest-modules-2.6.24-16-386
Eso es todo! Espero que les vaya bien con sus respectivas instalaciones o actualizaciones y cualquier cosa no duden en consultar.

miércoles, 23 de abril de 2008

Acelerar Firefox Ubuntu

Algunas cosillas para navegar con Firefox mas rapido.

En el navegador pondremos:

about:config

Busca la línea que pone network.http.pipelining (puedes escribirlo donde pone Filtro).
Haz doble click en ella y pon su valor a true.
Algo mas abajo deberías ver network.http.pipelining.maxrequests.
Haz doble click y cambia su valor de 4 a 8 (algunos sitios sugieren poner 30 o incluso 100 en lugar de 8, pero eso puede provocar problemas a algún servidor al que te conectes).
Más abajo todavia, localiza network.http.request.max-start-delay.
Haz doble click y cambia su valor de 10 a 0 (hace que Firefox comience a dibujar la página en cuanto comienza a recibir información).

Otra configuracion:

browser.turbo.enabled true

network.http.pipelining true

network.http.pipelining.maxrequests 8

network.http.max-connections 30

network.http.max-connections-per-server 8

network.http.max-persistent-connections-per-server 8

nglayout.initialpaint.delay 100

Acelerar Internet Ubuntu 7.10 o Ubuntu Server

El truco consiste en deshabilitar ipV6.

Escribe en un terminal sudo nano /etc/modprobe.d/aliases

Ahora cambia la línea que dice:
alias net-pf-10 ipv6

a

alias net-pf-10 off # ipv6

Imagen de como quedaria

Solo queda reiniciar para que surga efecto.

martes, 15 de abril de 2008

Instalar Automatix2 en Ubuntu 7.10

Desde una terminal.


Primero:

echo "deb http://www.getautomatix.com/apt gutsy main" | sudo tee -a /etc/apt/sources.list

Segundo:

 wget http://www.getautomatix.com/keys/automatix2.key

Tercero:

 gpg --import automatix2.key

Cuarto:

gpg --export --armor E23C5FC3 | sudo apt-key add -

Quinto:

 sudo apt-get update

Sexto:

 sudo apt-get install automatix2

martes, 1 de abril de 2008

Configurar Internet Ubuntu con Terminal

Por lo general nosotros tenemos un archivo /etc/network/interfaces como este.
# vamos a omitir los comentarios para no cansarnos tanto. :)

En el terminal :

sudo nano /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

O en el caso de que tenemos ip fija seria lo mismo para el loopback y para eth0 cambiaria asi.

auto eth0
iface eth0 inet static
address 192.168.0.101
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1
dns-search xxx

o

dns-nameserver 80.58.0.97 80.58.0.33