Backup utilizando alias

Publicado en Linux, Script el 10 de July, 2009 por Fran. (Sin comentarios)

El título no es muy claro, lo sé, pero no podía resumir lo que voy a explicar en algo tan corto.

Básicamente, a este script se le pasa una lista de directorios junto a un alias (o seudónimo) bajo el que se guardarán en el archivo que contenga el backup. Esto sirve:

  1. Para que en el archivo del backup no se guarden las rutas absolutas de los directorios guardados.
  2. Para no tener que realizar una copia local (duplicando el tamaño ocupado durante la realización del backup) de los archivos contenidos en los directorios a copiar en un directorio temporal.
  3. Para poder guardar los directorios con el nombre que se quiera dentro del archivo del backup.

Script

Este script está preparado para que lo ejecute cron con permisos de root y así poder copiar partes del sistema a las que otro usuario no podría acceder.

Si queréis que funcione con un usuario normal, sólo hace falta que eliminéis el if que está detrás del comentario # Check if the script is being run as root.

Los directorios a copiar se guardan en la variable DIRS separados por un espacio y con el formato alias:/ruta/al/directorio.

#!/bin/bash
# This script makes backups of a list of directories.
# It must be executed by root.

# Backup data
DIRS="images:/home/user/images/ code:/home/user/projects/ docs:/home/user/docs"
TMP_DIR=`mktemp -d`
BACK_FILE="/mnt/backup/`hostname --fqdn`_`date "+%Y-%m-%d"`.tar.gz"

TAR=$(which tar)

# Check if the script is being run as root
if [ "$UID" -ne "0" ]; then
    echo "This script must be run as root!"
    exit -1
fi

# Logging backup
echo "[`date "+%Y-%m-%d"`] Starting backup"

# Create symbolic links
for dir in $DIRS
do
    SYM_DIR=${dir%:*}
    TARGET_DIR=${dir#*:}
    ln -s $TARGET_DIR $TMP_DIR/$SYM_DIR
done

# Create backup
cd $TMP_DIR > /dev/null
$TAR -chzf $BACK_FILE *

# Backup failed
if [ $? != 0 ]; then
    cd - > /dev/null
    rm -fR $TMP_DIR > /dev/null
    echo "[`date "+%Y-%m-%d"`] Backup failed."
    exit -1
fi

# Backup created
cd - > /dev/null
rm -fR $TMP_DIR > /dev/null
echo "[`date "+%Y-%m-%d"`] Backup done!"

exit 0

Reto de scripts en Twitter

Publicado en Linux, Script el 12 de April, 2008 por Fran. (1 comentario)

La verdad es que nunca le he visto sentido a Twitter, es algo similar a los mensajes SMS, pudiendo mandar un e-mail o escribir en un blog, ¿por qué escribir en un sitio que te limita a 140 caracteres el mensaje? Ni idea.

La cosa es que esta semana surgió un post en el planeta de GNOME que promovía un reto para hacer scripts de Linux que cupiesen en mensajes de Twitter, a los pocos días ya había diez scripts que hacían diversas cosas.

Yo me quedo con el decodificador de código MORSE, toda una flipada. Al final este post tampoco es que diga mucho, pero me gustó la idea y el uso que le dieron a los 140 caracteres de Twitter, al que por primera vez le vi un uso práctico.