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
