Pessoal,
Obrigado àqueles que colaboraram.
Segue a rotina escrita para atender à necessidade:
# Funcao SALVAR - Grava os dados do diretorio ou arquivo em uma fita usando
software Legato
SALVAR()
{
# Inicia variaveis
unset NOME_VOL_TAR
unset NOME_VOL_TAR2
unset NOME_VOL_COMP
# Define diretorio de trabalho
DIR_TRABALHO="/u01/backup/arquivos"
cd $DIR_TRABALHO
# Identifica o nome do diretorio ou arquivo recebido pela funcao
DIR_BACKUP="$1"
# Monta o nome do arquivo compactado a ser gerado (troca as "/" por "_")
CONT=2
PARTE_NOME="`echo $DIR_BACKUP |cut -f$CONT -d"/"`"
NOME_ARQUIVO="$PARTE_NOME"
while [ "$PARTE_NOME" ]; do
CONT=$((CONT+1))
PARTE_NOME="`echo $DIR_BACKUP |cut -f$CONT -d"/"`"
if [ "$PARTE_NOME" ]; then
NOME_ARQUIVO="$NOME_ARQUIVO"_"$PARTE_NOME"
fi
done
# Identifica o tamanho do diretorio ou arquivo
TAMANHO_DIR=`/usr/bin/du -s $DIR_BACKUP |awk '{print $1}'`
# Define o tamanho dos volumes
# 1GB
TAMANHO_VOL=1048576
# Define quantidade de volumes
QTDE_VOL=`echo "$TAMANHO_DIR/$TAMANHO_VOL+1" | /usr/bin/bc`
# Define nomes dos volumes
if [ $QTDE_VOL -gt 1 ]; then
for I in $(seq 1 $QTDE_VOL)
do
NOME_VOL_TAR=$NOME_VOL_TAR$(printf " -f
$DIR_TRABALHO/"$NOME_ARQUIVO"_parte_$I.tar")
NOME_VOL_TAR2=$NOME_VOL_TAR2$(printf "
$DIR_TRABALHO/"$NOME_ARQUIVO"_parte_$I.tar")
NOME_VOL_COMP=$NOME_VOL_COMP$(printf "
$DIR_TRABALHO/"$NOME_ARQUIVO"_parte_$I.tar.gz")
done
else
NOME_VOL_TAR=$(printf " -f $DIR_TRABALHO/$NOME_ARQUIVO.tar")
NOME_VOL_TAR2=$(printf " $DIR_TRABALHO/$NOME_ARQUIVO.tar")
NOME_VOL_COMP=$(printf " $DIR_TRABALHO/$NOME_ARQUIVO.tar.gz")
fi
#echo $NOME_VOL_TAR
#echo $NOME_VOL_TAR2
#echo $NOME_VOL_COMP
echo "`date +"%d/%m/%Y-%T"` $BKPTAG -- Gerando volumes ::
$DIR_BACKUP"
/bin/tar -c -M -L $TAMANHO_VOL $NOME_VOL_TAR $DIR_BACKUP --totals
RESULT=$?
if [ $RESULT -ne 0 ]; then
echo "`date +"%d/%m/%Y-%T"` $BKPTAG -- Erro $RESULT ao gerar
volumes :: $DIR_BACKUP"
fi
echo "`date +"%d/%m/%Y-%T"` $BKPTAG -- Compactando volumes ::
$DIR_BACKUP"
for FILE in $NOME_VOL_TAR2
do
/bin/gzip $FILE
RESULT=$?
if [ $RESULT -ne 0 ]; then
echo "`date +"%d/%m/%Y-%T"` $BKPTAG -- Erro $RESULT ao compactar
volumes :: $FILE"
fi
done
echo "`date +"%d/%m/%Y-%T"` $BKPTAG -- Gravando volumes ::
$DIR_BACKUP"
for FILE in $NOME_VOL_COMP
do
/usr/sbin/save $FILE
RESULT=$?
if [ "$RESULT" -ne 0 ]; then
echo "`date +"%d/%m/%Y-%T"` $BKPTAG -- Erro $RESULT ao gravar
arquivo $FILE"
else
echo "`date +"%d/%m/%Y-%T"` $BKPTAG -- Removendo arquivo compactado
$FILE"
/bin/rm -f $FILE
RESULT=$?
if [ $RESULT -ne 0 ]; then
echo "`date +"%d/%m/%Y-%T"` $BKPTAG -- Erro $RESULT ao remover
arquivo..."
fi
fi
/bin/sleep 10
done
}
Com isto, basta montar o script que lê os diretórios e passar como parâmetro
o caminho dos arquivos ou diretórios que deverão ser gravados.
Abraço!
Ricardo Brambila
-----Mensagem original-----
De: Ricardo Brambila [mailto:[EMAIL PROTECTED]
Enviada em: quinta-feira, 12 de julho de 2007 12:36
Para: '[email protected]'
Assunto: Problemas com backup de arquivos maiores que 2GB
Olá, pessoal!
Tenho um script que faz backup de arquivos de usuários.
Durante o processo, o script faz o mapeamento do diretório, executa o
comando tar com a opção -z para compactar, e grava na fita utilizando um
software chamado Legato.
Acontece que o Legato tem uma limitação de 2GB para o tamanho máximo de cada
arquivo a ser gravado na fita.
O que eu preciso é gerar os arquivos usando o comando tar (ou outro
similar), mas "quebrar" esse arquivo em partes menores, de no máximo 2GB.
Isto é possível? Alguém teria alguma dica?
Obrigado.
Ricardo.
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html