Archivo de la Categoría “Consola”

Una de las mayores preocupaciones a la hora de administrar una página web, es encontrarnos con algún problema en el servidor y perder los datos que tenemos en el mismo.

Para evitar ésto, lo mejor es realizar copias de seguridad periódicas de nuestras bases de datos y archivos y mandarlos a un servidor externo (nuestro servidor doméstico o de la empresa).

A continuación os presento un script que hice en bash para automatizar dichas tareas, para usarlo sólo hay que cambiar las variables del inicio y programar la tarea con cron. Básicamente lo que hace es mandar por SCP la copia de seguridad de las bases de datos y los ficheros, permitiendo añadir una lista negra de palabras clave que harán que no se añada algún dominio o base de datos concreta. Además nos informará por correo electrónico si hubo algún problema.

El script está preparado para la estructura de un servidor con panel Plesk, adaptarlo a otro es muy sencillo, sólo hay que modificar la ruta donde están los dominios.

#!/bin/bash
##### Configuración
SERVER="xxxxxxxxxx.xxx"        # Dominio o IP destino
PORT="22"                      # Puerto SSH
USER="usuario"                 # Nombre de usuario de login
DBUSER="usuariodb"             # Nombre de usuario DB
DBPASSWD="usuariopass"         # Contraseña usuario DB
DESTDIR="/ruta/directorio"     # Directorio de destino
ADMINMAIL="mail@dominio.com"   # Correo para notificaciones
EXCLUDE=(nombre nombre.com)    # Lista negra de dominios o bases de datos
 
ERROR=""
fecha=$(date "+%F")
fechamail=$(date "+%d/%m/%Y")
 
##### Copia de seguridad de las bases de datos
mkdir /tmp/db_backup_full
DATABASES="$(mysql -u $DBUSER -p$DBPASSWD -Bse 'show databases')"
for db in $DATABASES
do
  case "${EXCLUDE[@]}" in *"$db"*) 
    ;;
  *)
    mysqldump --password=$DBPASSWD --user=$DBUSER --databases $db > /tmp/db_backup_full/$db.sql 2>/dev/null;;
  esac
done
tar cvjf "/tmp/databases $fecha.tar.bz2" -C /tmp db_backup_full > /dev/null
ERROR=$(scp -P $PORT -q "/tmp/databases $fecha.tar.bz2" $USER@$SERVER:$DESTDIR 2>&1)
rm -fr /tmp/db_backup_full
rm "/tmp/databases $fecha.tar.bz2"
 
##### Copia de seguridad de los archivos
mkdir /tmp/files_backup
for i in $( find /var/www/vhosts -name httpdocs ); do
  ARCHIVO=$(echo $i | sed -e 's/\/httpdocs//' -e 's/\.\///' -e '/\.skel/d')
  DOMINIO=$(echo $ARCHIVO | sed 's/\/var\/www\/vhosts\///g' | sed 's/\/.*//g')
  if [ "$DOMINIO" != "" ]; then
    case "${EXCLUDE[@]}" in *"$DOMINIO"*) 
      ;;
    *)
      FICHERO=$(echo $ARCHIVO.tar.gz | sed 's/\/var\/www\/vhosts\///g' | sed 's/\/subdomains\//_/g' | sed 's/\//_/g')
      CONF=$(echo $i | sed 's/httpdocs/conf/g')
      tar cvzf "/tmp/files_backup/$FICHERO $fecha.tar.gz" $i $CONF &> /dev/null
      ERRORNEW=$(scp -P $PORT -q "/tmp/files_backup/$FICHERO $fecha.tar.gz" $USER@$SERVER:$DESTDIR 2>&1)
      if [ "$ERRORNEW" != "" ]; then
        if [ "$ERROR" != "" ]; then
          ERROR="$ERRORNEW"
        else
          ERROR="${ERROR}\n${ERRORNEW}"
        fi
      fi;;
    esac
  fi
done
rm -fr /tmp/files_backup
 
# Comprobamos si hubo algún error al enviar el fichero
if [ "$ERROR" != "" ]; then
  echo -e "Error encontrado:\n$ERROR" | mutt -s "Error en backup de servidor web $fechamail" $ADMINMAIL
fi

Comments Comments Off

Si te gusta saber qué hacen tus procesos, probablemente conozcas "top", un programita para consola que nos muestra mucha información útil de dichos procesos: consumo de cpu, memoria, PID…

Lo malo que tiene top (al menos para mi), es que es algo confuso (o poco intuitivo) en su manejo. Htop hace lo mismo que top, sin embargo es mucho mas sencillo de manejar, ya que muestra alguna información a modo de gráficos ASCII, muestra una barra con los accesos por teclado de las órdenes, usa colores para diferenciar zonas… Os dejo una captura después del salto, si os convence, está disponible en los repositorios.

(more…)

Comments Comments Off

Linux es un sistema operativo multiusuario y como tal, es necesario que se puedan administrar los diferentes usuarios, grupos, así como los permisos que les otorgaremos sobre ciertos archivos o directorios.

En este capítulo os enseñaré cómo hacer esto, pero sin entrar en profundidades, ya que mi objetivo no es complicaros mas la vida, sino conseguir que tengáis una cierta soltura sin para ello llevar mayores quebraderos de cabeza.

(more…)

Comments Comments Off

Saber editar un archivo de texto o crearlo es algo esencial para configurar cualquier programa. En esta ocasión voy a enseñaros cómo manejar de la manera mas básica el editor de textos "nano" y alguna noción muy básica del editor "vim".

Si hay algo que me gusta de nano es lo simple e intuitivo que resulta su manejo, sólo tenemos que ir a la parte del fichero que queramos y escribir o borrar sin mas. Además tenemos en la parte inferior un resumen de los comandos que podemos ejecutar, de manera que no nos será necesario memorizar ninguna combinación de teclas.

(more…)

Comments Comments Off

Seguimos con el tutorial para aprender lo mas básico de la consola y en este caso le toca a copiar, mover, renombrar y borrar tanto archivos como directorios.

Pero antes mejor aclarar cómo es la estructura de un comando bajo Linux (y básicamente en cualquier otro sistema operativo con línea de comandos).

(more…)

Comments 1 Comentario »

Empezamos el tutorial con lo mas básico de lo básico: aprender a moverse por los directorios y saber dónde está cada cosa.

Una de las cosas que mas descoloca a alguien que migra hacia Linux, es el montón de subdirectorios que existen, cada cual con un nombre mas extraño. Esto es así, porque en Linux cada dispositivo (bien sea un ratón, el micrófono o una partición) se ve representado por un archivo o directorio, facilitando enormemente la interacción con ellos a la hora de trabajar o programar. Además, no podemos olvidarnos del soporte multiusuario real y las posibilidades que tiene para crear servidores, haciendo que la estructura de directorios sea mas "compleja" al estar mas ordenada: cada cosa tiene su lugar.

(more…)

Comments Comments Off

ConsolaEn estos últimos años, la comunidad de GNU/Linux está creciendo a un paso vertiginoso y producto de ello cada vez hay mas blogs dedicándose a esta temática, explicando cómo hacer las cosas, trucos… Sin embargo los usuarios que llegan desde otros sistemas operativos, se ven un poco desperados cuando tratan de configurar algo, ya que algunas cosas aun requieren del uso de la consola para su configuración.

(more…)

Comments Comments Off