Julio:

On 8/10/06, Julio Briones <[EMAIL PROTECTED]> wrote:
Hola foro

no se si alguien podria ayudarme no si se habra solucionado el tema de
backup con samba osea tengo un servidor en linux con el servicio de samba
tengo usuarios que modifican archivos en los shares de samba el tema es que
quiero hacer un backup con parametro de fecha de modificacion

Copio abajo un par de scripts que hice hace algún tiempo, y que uso para sacara backup de un servidor con samba y shares. Son dos files:  fullbackup.sh saca backup de todo, incrementalbackup.sh saca backup solamente de los archivos que han cambiado desde el día anterior (en fin, podrías hacerlo más sofisticado y pasar el número de días en la línea de comando...).

- La gracia de estos scripts es que puedes decir:
# fullbackup.sh list  /ruta/al/directorio/destino
donde list es un file que tiene la lista de directorios a los que hay que sacar backup, uno por línea.  Genera un archivo de backup para cada directorio de la lista, al directorio que especifiques como segundo parámetro.
- después del backup tienes que copiar los archivos generados a otro sitio:  un DVD, el disco duro de otra máquina, una cinta... por lo menos otro disco duro del mismo servidor, es lo mínimo y es mejor que no tener ninguna copia.
- Tengo los dos scripts programados con cron:  el backup completo un día a la semana, y el incremental todos los demás días. 

La idea no es muy original, es el típico script de backup pero adaptado a mis necesidades.  Me ayudó esta página (y un buen manual de bash):  http://www-128.ibm.com/developerworks/linux/library/l-backup/?ca=dgr-lnxw41Backup
Espero que te ayude,
Roberto Zoia

File:  fullbackup.sh
---x-------------------
#!/bin/bash

# $1    name of filename that contain directories to backup, each
#       directory in one line
E_NOARGS=65
E_FILE_ACCESS=70
SYSLOG="/var/log/messages"

movescript='movetoremote.sh'

# Check if script was invoked with the correct number of parameters
if [ -z $1 ]; then
    echo "Backup script"
    echo "Usage: `basename $0` file"
    echo "where file contains the list of directories to backup."
    echo
    exit $E_NOARGS
fi

# Check if user specified a destination dir
if [ -z $2 ]; then
    DESTDIR="backup/files"
else
    DESTDIR="$2"
fi       

# Check if file specified in argument list exists
if [ ! -r "$1" ]    # Is the specified input file readable?
then
    echo "Can't read file \"$1\"!"
    exit $E_FILE_ACCESS
fi


# Initialize log file
# First, get time and date to stamp files with them
now=$(date +%Y%m%d.%H%M%S)
logfile="$DESTDIR/backuplog.$now"

> $logfile     # Create a new log file for this run
echo "---"                     >> $logfile
echo "--- Backup logfile for $now"         >> $logfile
echo "---"                    >> $logfile

# Read directories to backup from file
declare -a dirarray
dirarray=( `cat "$1"` )
numofdirs=${#dirarray[*]}

echo "Reading directories to backup from $1... $numofdirs directories found." >> $logfile

for ((a=0; a < numofdirs; a++))
do
    echo "***" >> $logfile
    echo "*** Directorio: ${dirarray[$a]}" >> $logfile
    echo "***" >> $logfile
    tar cvfj "$DESTDIR/`basename ${dirarray[$a]}`.$now.tar.bz2" ${dirarray[$a]} >> $logfile

    echo >> $logfile
done

echo >> $logfile;
echo "Number of directories:  $numofdirs" >> $logfile

# cat $logfile | mail -s "Backup information for $now" root

# move files to remote share

#$movescript $DESTDIR $logfile $now

exit $?
---x-----------------------



File:  incrementalbackup.sh
---x-------------------------------------------
#!/bin/bash

# $1    name of filename that contain directories to backup, each
#       directory in one line
E_NOARGS=65
E_FILE_ACCESS=70
SYSLOG="/var/log/messages"

#movescript='movetoremote.sh '

# Check if script was invoked with the correct number of parameters
if [ -z $1 ]; then
    echo "Incremental Backup script"
    echo "Usage: `basename $0` file"
    echo "where file contains the list of directories to backup."
    echo
    exit $E_NOARGS
fi

# Check if user specified a destination dir
if [ -z $2 ]; then
    DESTDIR="backup/files"
else
    DESTDIR="$2"
fi       

# Check if file specified in argument list exists
if [ ! -r "$1" ]    # Is the specified input file readable?
then
    echo "Can't read file \"$1\"!"
    exit $E_FILE_ACCESS
fi


# Initialize log file
# First, get time and date to stamp files with them
now=$(date +%Y-%m-%d-%R | tr -d ':')
days=1  # find files modified 24 hours ago
doNotBackup="(.mp3|~$)"
logfile="$DESTDIR/incr_backuplog.$now"

> $logfile     # Create a new log file for this run
echo "---"                     >> $logfile
echo "--- Incremental Backup logfile for $now"         >> $logfile
echo "---"                    >> $logfile

# Read directories to backup from file
declare -a dirarray
dirarray=( `cat "$1"` )
numofdirs=${#dirarray[*]}

echo "Reading directories to backup from $1... $numofdirs directories found." >> $logfile

for ((a=0; a < numofdirs; a++))
do
    echo "***" >> $logfile
    echo "*** Directorio: ${dirarray[$a]}" >> $logfile
    echo "***" >> $logfile

    find ${dirarray[$a]} -type f -mtime -${days} | egrep -iv '${doNotBackup}' \
    | tar cvfj "$DESTDIR/`basename ${dirarray[$a]}`.$now.tar.bz2" -T -  >> $logfile

    echo >> $logfile
done

echo >> $logfile;
echo "Number of directories:  $numofdirs" >> $logfile

# cat $logfile | mail -s "Backup information for $now" root
# move files to remote share
#$movescript $DESTDIR $logfile $now

exit $?
---------x------------------------------------
_______________________________________________
Linux-plug mailing list
[email protected]
http://www.linux.org.pe/cgi-bin/mailman/listinfo/linux-plug

Responder a