Como hacer backups completos en linux

A veces, nos encontramos con la necesidad de hacer una copia de seguridad a un equipo linux, ya sea desktop o server, podemos backupear directorios importantes, o hacer un full backup de todo el sistema.

Siempre es recomendable hacer backups, de todo, aunque no sea lo mas divertido hacerlos, créeme, la perdida de información es una de las peores catástrofes en el mundo informático, no solo la pérdida de datos en una DB, sino también podemos perder código/scripts/diseños etc, que nos demandará tiempo volver a escribir.

La forma más fácil de hacer un backup de forma manual, es con el comando tar que nos crea un archivo comprimido y es fácil de usar.

La sintaxis es la siguiente:

tar [parámetros]

Las operaciones mas usadas son:

  • -z: Comprime usando gzip
  • -c: Crea el archivo
  • -v: Verbose mode. (Muestra el progreso mientras se crea el archivo)
  • -f: Para indicar el nombre del archivo
  • -p Conserva los permisos de los archivos
  • -x Extraer

Ejemplo de uso:

Para comprimir un directorio completo, usamos lo siguiente:

tar -zcvf backup-home.tar.gz /home/*  –> Hace un backup de todos los archivos que estan en el directorio home.

Backup del sistema completo:

Si queremos hacer un backup completo del sistema, para que en caso de una perdida total podamos restaurar nuestro servidor de manera completa, datos/programas/configs…  TODO…  debemos ejecutar esto:

tar cvpzf /backup-full.tar.gz –exclude=/proc –exclude=/lost+found –exclude=/backup-full.tar.gz –exclude=/mnt –exclude=/sys –exclude=dev/pts /

Importante: la barra del final “/” no es un error, eso le dice haga el backup desde el root “/”.
Todos esos “exclude” son, como su nombre lo dice, para excluir directorios que el sistema llena con archivos dinamicos, que van a producir errores a la hora del backup, y no son importante.

Como restaurar los backups:

Para restaurar un backup, se utiliza el comando -x

tar -zxvpf /fullbackup.tar.gz  –> extrae los contenidos en el directorio actual, conservando los permisos (-p) .

tar -zxvf backup-home.tar.gz  –> extrae los contenidos en el directorio actual.

tar -zxvf backup-home.tar.gz /home –> extrae los contenidos en /home.

Como montar un Servidor Ubuntu Server COMPLETO, con ISPConfig 3 Parte 1

Este post está dedicado a instalar un servidor para hosting multi-cuentas, en una VPS, por ello, no explicare temas relacionados al hardware ni a la instalación del sistema operativo.

Si quieres saber mas sobre las VPS, y cómo elegir una VPS, mira este link.

Este post, está basado en las guías Perfect Server de HowToForge, pero con algunas mejoras.

Ubuntu Server

Para mi, Ubuntu Server, es uno de las mejores distros para iniciarse en el tema de servidores linux, debido a la gran cantidad de información y tutoriales que hay sobre el en la red.

Bueno, en este tutorial usaremos lo siguiente:

  • Ubuntu Server 11.04 como sistema operativo.
  • ISPConfig 3 como panel de administración para cuentas de Hosting.
  • Apache, PHP, MySQL
  • SquirreMail, PostFix
  • PureFTP
  • BIND 9

Comencemos…

Antes que nada, para este tutorial, usaremos server1.example.com como hostname, y supondremos que yas estamos logueados como root. (sino, anteponer sudo a cada comando)

Yo uso nano para editar los archivos, pero pueden usar vi, o cualquier otro.

Para instalar nano, hacemos:
apt-get install nano
Para utilizar nano, se abren los archivos con nano archivo luego, para guardar, se presiona F2, luego decimos que si, (Y) y luego aceptamos con ENTER.

Ahora, cambiamos el hostname:

echo server1.example.com > /etc/hostname
hostname server1.example.com
/etc/init.d/hostname restart

Click Aqui para ver la Parte 2 | Click Aqui para ver la Parte 3

Como montar un Servidor Ubuntu Server COMPLETO, con ISPConfig 3 Parte 2

Parte 2

Procederemos a editar la lista de repositorios, para poder tener los paquetes mas actualizados…
nano /etc/apt/sources.list
Borramos todo el contenido, y copiamos allí el contenido de este archivo.

Ahora, para actualizar nuestra BD de paquetes, y de paso, actualizar algunas versiones de los mismos, hacemos:
apt-get update
apt-get upgrade
Responder que si (Y) a cualquier pregunta.

Configuramos la hora del sistema:
dpkg-reconfigure tzdata
Seguir las instrucciones en pantalla.

Ahora, empezamos a instalar algunos paquetes:
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl getmail4 rkhunter binutils maildrop

El sistema nos va a hacer las siguientes preguntas:

New password for the MySQL “root” user: tucontraseñasql
Repeat password for the MySQL “root” user: tucontraseñasql
General type of mail configuration: Internet Site
System mail name: server1.example.com
Create directories for web-based administration? No
SSL certificate required Ok

Preparamos y optimizamos MySQL para una VPS con pocos recursos de RAM:
nano /etc/mysql/my.cnf 
Comentar la linea bind-address=127.0.0.1, tiene que quedar asi: #bind-address = 127.0.0.1 (esto es para poder acceder al servidor MySQL desde otros servers/hosts.)
y cambiar los valores  de algunas de las variables, por los de aqui abajo:

[mysqld] key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K

También, si no vamos a usar innodb ni Berkeley DB, o ni sabes lo que es eso, agrega estas dos lineas al final del my.conf:
skip-bdb
skip-innodb

Y ahora, reiniciamos el servicio MySQL:
/etc/init.d/mysql restart

Ahora, prepararemos las claves SSL para el servicio de Mail.
cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

nano /etc/courier/imapd.cnf
Cambiar CN=server1.example.com por tu hostname real

nano /etc/courier/pop3d.cnf
Cambiar CN=server1.example.com por tu hostname real

Ahora, generamos los certificados
mkimapdcert
mkpop3dcert

Y luego reiniciamos los servicios:
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart

Ahora, instalamos apache, php y algunos modulos y paquetes extras que neesitaremos como phpMyAdmin, suExec, Pear y mcrypt:
apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby sudo zip

El sistema nos va a hacer las siguientes preguntas:

Web server to reconfigure automatically: apache2
Configure database for phpmyadmin with dbconfig-common? No

Ahora, ejecutamos los siguientes comandos para habilitar los modulos de apache:
a2enmod suexec rewrite ssl actions include
a2enmod dav_fs dav auth_digest
/etc/init.d/apache2 restart

Click Aqui para ver la Parte 1 Click Aqui para ver la Parte 3

Como montar un Servidor Ubuntu Server COMPLETO, con ISPConfig 3 Parte 3

Parte 3

Continuando con la parte 3 de este tutorial, Instalamos el FTP

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
nano /etc/default/pure-ftpd-common
Cambiar a STANDALONE_OR_INETD=standalone
Cambiar a VIRTUALCHROOT=true

Ahora, habilitamos TLS, y generamos su certificado SSL:

echo 1 > /etc/pure-ftpd/conf/TLS
mkdir -p /etc/ssl/private/
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

chmod 600 /etc/ssl/private/pure-ftpd.pem
/etc/init.d/pure-ftpd-mysql restart

Continuamos instalando BIND, y las web stats:

apt-get install bind9 dnsutils
apt-get install vlogger webalizer awstats

Editamos el archivo cron.d,  y eliminamos awstats, ya que luego, ISPConfig 3, insertará sus propias lineas en el cron.d
nano  /etc/cron.d/awstats

(hay que comentar las unicas 2 lineas del archivo, y tiene que quedar asi:)

Ahora, instalamos Jailkit, que sirve para que cada usuario SSH, no se pueda salir de su directorio /home propio.
apt-get install build-essential autoconf automake1.9 libtool flex bison debhelper

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz

cd jailkit-2.14
./debian/rules binary
cd ..
dpkg -i jailkit_2.14-1_*.deb
rm -rf jailkit-2.14*

Instalamos y configuramos SquirreMail, para poder acceder a nuestros webmails:

apt-get install squirrelmail
ln -s /usr/share/squirrelmail/ /var/www/webmail
squirrelmail-configure 

Aqui, sigue las instrucciones de este archivo, para contestar las preguntas del sistema y configurar el squirreMail.

Una vez configurado el cliente para el webmail, antes de probarlo, configuraremos un par de cosas para hacer que el email funcione sin amavis y clamd, que son sumamente pesados para VPS con bajos recursos.
nano /etc/postfix/main.cf
Comentamos las siguientes lineas:

content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings

Tienen que quedar asi:

#content_filter = amavis:[127.0.0.1]:10024
#receive_override_options = no_address_mappings

nano /etc/postfix/master.cf

Comentamos todas las lineas debajo de  amavis unix – – – – 2 smtp

Tiene que quedar asi:
#amavis unix – – – – 2 smtp
# -o smtp_data_done_timeout=1200
# -o smtp_send_xforward_command=yes

#127.0.0.1:10025 inet n – – – – smtpd
# -o content_filter=
# -o local_recipient_maps=
# -o relay_recipient_maps=
# -o smtpd_restriction_classes=
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_recipient_restrictions=permit_mynetworks,rej ect
# -o mynetworks=127.0.0.0/8
# -o strict_rfc821_envelopes=yes
# -o receive_override_options=no_unknown_recipient_chec ks,no_header_body_checks
# -o smtpd_bind_address=127.0.0.1

Y por ultimo reiniciamos postfix:
/etc/init.d/postfix restart

Bueno, hemos llegado al ultimo paso, instalar ISPConfig 3. Si todo ha salido bien, con ejecutar estas ultimas 5 lineas, nuestro servidor estará perfectamente configurado, y listo para alojar paginas web!

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
php -q install.php 
 

Ahora, se ejecutara el instalador de ISPConfig3, hay que presionar enter para dejar los valores por defecto, menos cuando nos pida la clave para MySQL, ahi hay que escribirla, y luego presionar enter…

Y eso es todo! 

Ya podemos acceder a nuestro hosting desde el navegador,  mediante la IP de nuestro server, y al puerto 8080, http://xxx.xxx.xxx.xxx:8080 ahi, hay que loguearse con admin:admin

Bueno gente, espero que les haya servido este tutorial…

Acepto comentarios y criticas!

Saludos

Click Aqui para ver la Parte 1Click Aqui para ver la Parte 2

Hamachi en linux. (Ubuntu Server) Solución

Actualizado el 17/7/10

Despues de varias horas de investigacion, encontre que NO hay una “solucion”…   que haga que todo funcione 100%, pero logre hacerlo andar a un 90% al menos.

Logmein, no ha invertido nada en seguir desarrollando  hamachi para linux. Es el segundo producto de logmein al que le hacen esto, logmein para windows mobile, deja de funcionar a partir del 6.5

Bien, mas alla de todo eso,  vamos al grano.

El problema es que siguiendo la instalacion de hamachi como en este tutorial: http://www.supware.net/HamachiUbuntuHowto/ al principio anda todo bien, se conecta y todo, pero si desde una red externa tratamos de acceder, vemos el server pero no podemos hacer ping, ni conectarnos por ssh, ni nada. inclusive a veces aparece como “conectando”  y se queda asi permanentemente…

Probe con softwares como OpenVPN y Neorouter que hacen cosas parecidas (VPN) pero no me convencieron.

entonces, opte por reinstalar hamahi, con una interfaz grafica, con un script que anda dando vueltas pro ahi… para mi sorpresa, la interfaz grafica, soluciono los problemas…  la verdad no se porque la instalacion convencional no funcionaba…. pero este script si funcionó.

Para instalar hamachi con interfaz grafica solo basta con los siguientes pasos:

sudo apt-get remove hamachi
Esto es solo si teniamos instalado hamachi, para desinstalarlo.

Y ahora descargamos el script, le damos permisos de ejecucion, y lo ejecutamos

wget http://webupd8.googlecode.com/files/hamachi-install-ubuntu-1.0.2
sudo chmod +x hamachi-install-ubuntu-1.0.2
sudo ./hamachi-install-ubuntu-1.0.2

Si todo andubo bien, con solo poner hamachi-gui en la linea de comandos, se ejecutara hamachi con la interfaz grafica antigua de windows.

Cabe aclarar que para correr esta interfaz hace falta algun servidor X. Yo tengo FluxBox que es muy liviano y anda muy bien.

SOLO me queda una sola ccosa… el unico problema es que cuando se corta la conexion a internet, no se vuelve a reconectar automaticamente.

Si alguien sabe como solucionar eso, bienvenido sea!!

Actualización:  entontré, este script, en computarz.blogspot.com que es un watchdog para hamachi, es decir, este script mantiene al hamachi online!!!

Lo modifique un poco para que andubiera bien en Ubuntu Server, el script es el siguiente:

#!/bin/bash

scriptname="<code>basename \"$0\"</code>"

function command_pids {

IFS='
'


RES=""

for p in <code>ps xo pid,command | grep "$1"</code>; do

IFS=' ' hampid=( $p )

pid=${hampid[0]}

if [ ".<code>basename ${hampid[1]}</code>" == ".hamachi" ]; then RES="${RES} $pid"; fi

done

echo $RES;

}

function hamachi_force_terminate {

hamachi stop &gt;/dev/null

sleep 1

for ham_pid in $( command_pids hamachi ); do

kill -9 $ham_pid

done

}

hamachi_running=1

if [ <code>echo $( command_pids hamachi ) | wc -w</code> -eq 0 ]; then

hamachi_running=0;

#echo "count not detect running hamachi"

fi

if [ <code>ip r | grep default -c</code> -lt 1 ]; then

# No internet gateway, exiting!

exit 1

fi

hamachi_online=<code>hamachi list | egrep '\* [0-9]' | awk '{print $2}'</code>

count_unreachable=<code>hamachi list | egrep 'x [0-9]' | wc -l</code>

ping_ok=1

for IP in $hamachi_online; do

ping -c 2 $IP &gt;/dev/null

if [ $? -ne 0 ]; then

echo "ping $IP failed!"

hamachi list | grep $IP

ping_ok=0;

fi # if first ping fails then ping is not OK!

break;

done

if [ $hamachi_running -ne 1 -o $count_unreachable -gt 0 -o $ping_ok -eq 0 ]; then

echo "restarting hamachi: running $hamachi_running unreachable $count_unreachable ping $ping_ok"

if [ <code>pgrep tuncfg | wc -l</code> -eq 0 ]; then sudo /sbin/tuncfg; fi

hamachi_force_terminate

hamachi start

CNT=1;

echo -n "Logging in... " ;

while [ <code>hamachi login | grep -c failed</code> -eq 1 -a $CNT -lt 100 ]; do

echo -n "$CNT ";

let CNT=$CNT+1;

sleep 2;

done;

sleep 2;

echo

hamachi get-nicks

#else

#echo "hamachi is online"

fi

Este script se encarga de todo, simplemente lo añadimos a cron para que se ejecute cada x tiempo y le damos permisos de ejecución:

sudo chmod 777 hamachi_watchdog.sh
sudo crontab -e

Seleccionamos un editor y añadimos

*/5 * * * * $HOME/hamachi_watchdog.sh

Siendo por supuesto hamachi_watchdog.sh el nombre y $HOME la ruta de nuestro script!!

Tambien hay que añadir una linea en visudo, para que el tuncfg funcione sin sudo es decir sin necesitar permisos root para que lo pueda ejecutar cron correctamente, entonces hacemos:

sudo visudo

y añadimos la linea:

%admin ALL=NOPASSWD: /sbin/tuncfg

Con eso el script funciona a la perfeccion.

Saludos