sincroniza

Sincronizar hyakutake y luna

/root/bin/sincroniza
#!/bin/bash
 
# sincroniza [<path/remoto/origen>] <path/local/destino>
#
# Sincroniza incrementalmente con rsync a hyakutake.
 
# Referencias-Documentación: 
# [1] http://rsync.samba.org/examples.html
# [2] http://troy.jdmz.net/rsync/index.html
# [3] http://www.thegeekstuff.com/2011/07/rsync-over-ssh-without-password/
 
# CONFIGURACIÓN:
# -------------
RSYNC_BIN='/usr/bin/rsync'
#REMOTO='root@138.100.41.99'
REMOTO='root@hyakutake.ee.upm.es'
IGNORE_GENERAL='/habitat/.ignore'
 
# FUNCIONES Y VARIABLES AUXILIARES:
# --------------------------------
 
# Colores
COLOR_ROJO="\e[31m"
COLOR_VERDE="\e[32m"
COLOR_AZUL="\e[36m"
COLOR_NORMAL="\e[0m"
 
# INFORMACIÓN DE USO:
function uso() {
cat << FIN
 
USO:
sincroniza [<path/remoto/origen>] <path/local/destino>
 
Sincroniza el directorio path/local/destino con el path/remoto/origen de hyakutake.
*  El directorio local debe existir.
*  Se excluirán del sincronizado todos los archivos indicados en path/local/.ignore
*  Si no se indica path/remoto se usará path/local
 
FIN
}
 
function error() {
	echo -e "${COLOR_ROJO}ERROR: ${COLOR_NORMAL} $*"
	exit 1
}
 
# VALIDACIONES:
# ------------
 
# Nos aseguramos que nos encontramos en el directorio donde está el script
SCRIPTPATH=$( cd $(dirname $0) ; pwd -P)
cd "$SCRIPTPATH"
 
# Comprobamos si root
if [ "$(id -u)" != "0" ]; then
	error "Este script debe ser ejecutado como root"
fi
 
# Comprobamos argumentos:
PATH_REMOTO=$1
if [ $# -eq 1 ]; then
	PATH_LOCAL=$1
fi
if [ $# -eq 2 ]; then
	PATH_LOCAL=$2
fi
if [ -z $PATH_LOCAL ]; then
	error "Número de argumentos inválido $(uso)"
fi
if [ ! -d $PATH_LOCAL ]; then
	error "$PATH_LOCAL no es un directorio. $(uso)"
fi
 
# Añadimos barra final si falta
PATH_LOCAL=$(echo $PATH_LOCAL | sed -e 's/$/\//' | sed -e 's/\/\+$/\//')
PATH_REMOTO=$(echo $PATH_REMOTO | sed -e 's/$/\//' | sed -e 's/\/\+$/\//')
 
NOMBRE_LOCAL=$(echo sinc${PATH_LOCAL}.log | sed -e "s/\//_/g")
 
IGNORE="--exclude-from=${IGNORE_GENERAL}"
# Comprobamos si .ignore
if [ -f ${PATH_LOCAL}/.ignore ]; then
	IGNORE="${IGNORE} --exclude-from=${PATH_LOCAL}/.ignore"
fi
 
# EJECUCIÓN
# ---------
 
COMANDO="${RSYNC_BIN} -arzv --delete --progress --log-file=/var/log/rsync/${NOMBRE_LOCAL} --exclude=.ignore ${IGNORE} -e ssh ${REMOTO}:${PATH_REMOTO} ${PATH_LOCAL}"
echo -e "\n${COLOR_VERDE} ${COMANDO} ${COLOR_NORMAL}\n"
$COMANDO
/root/bin/sinc-habitat
#!/bin/bash
echo "Hay que abrir el root en hyakutake primero... Aborting..."; exit 0
echo "Sincronizando /habitat/src ..."
/root/bin/sincroniza /habitat/src/ > /dev/null
echo "Sincronizando /habitat/bin ..."
/root/bin/sincroniza /habitat/bin/ > /dev/null
echo "Sincronizando /habitat/halatex ..."
/root/bin/sincroniza /habitat/halatex/ > /dev/null
echo "Sincronizando /habitat/highlight ..."
/root/bin/sincroniza /habitat/highlight/ > /dev/null
echo "Sincronizando /habitat/work/hi ..."
/root/bin/sincroniza /habitat/work/hi/ > /dev/null
echo "Sincronizando /habitat/work/habitat ..."
/root/bin/sincroniza /habitat/work/habitat/ > /dev/null
echo "Sincronizando /habitat/www/cgi-bin ..."
/root/bin/sincroniza /habitat/www/cgi-bin/ > /dev/null
echo "Sincronizando /habitat/www/habitat ..."
/root/bin/sincroniza /habitat/www/habitat/ > /dev/null
echo "Sincronizando /habitat/www/hi ..."
/root/bin/sincroniza /habitat/www/hi/ > /dev/null
echo "Sincronizando /habitat/www/nmz ..."
/root/bin/sincroniza /habitat/www/nmz/ > /dev/null
echo "Sincronizando /habitat/www/php ..."
/root/bin/sincroniza /habitat/www/php/ > /dev/null
echo "Sincronizando /habitat/www/bin ..."
/root/bin/sincroniza /habitat/www/bin/ > /dev/null
echo "Sincronizando /habitat/www/cron ..."
/root/bin/sincroniza /habitat/www/cron/ > /dev/null
echo "Sincronizando /habitat/www/software ..."
/root/bin/sincroniza /habitat/www/software/ > /dev/null
echo "Sincronizando /habitat/www/stat ..."
/root/bin/sincroniza /habitat/www/stat/ > /dev/null
echo "Sincronizando /habitat/www/wp2html ..."
/root/bin/sincroniza /habitat/www/wp2html/ > /dev/null
sinc-usuario
#!/bin/bash
 
if [ $# -ne 1 ]; then
	echo "ERROR: Número de argumentos inválido"
	exit 1
fi
USUARIO=$1
HOME_LOCAL=/home/${USUARIO}
HOME_REMOTO=/habitat/users/$1
if [ ! -d ${HOME_LOCAL} ]; then
	echo "ERROR: ${HOME_LOCAL} no es un directorio"
	exit 1
fi
 
echo ".*" > ${HOME_LOCAL}/.ignore
/root/bin/sincroniza ${HOME_REMOTO} ${HOME_LOCAL}
rm -f ${HOME_LOCAL}/.ignore
sincroniza.txt · Última modificación: 2013/08/31 10:08 por root