Daniel Dantas escreveu:
> Gostaria de fazer um script que, ao ser executado, comece a varrer
> este diretório, seus arquivos e subdiretórios e, quando atingir o
> tamanho de um DVD, efetue a gravação, e peça outro DVD para continuar,
> e assim por diante até varrer todo o diretório.
> Outra opção que ajudaria muito é um script que apenas divida o
> conteúdo do diretório em arquivos .ISO ou .tar.gz com tamanho para ser
> gravado num DVD.
> Atualmente tenho que separar os diretórios manualmente, selecionando
> um a um e verificando quanto de espaço ocupam, e quando atingem o
> tamanho de um DVD mando gravar.
>
Olá,
Eu uso este abaixo para CD, podemos adaptá-lo para DVD:
#!/bin/sh
###############################################################
# #
# Programa: Cópia de Segurança em vários discos #
# Autor : Claudio Polegato Junior #
# Data : 03/05/2005 #
# #
###############################################################
# Diretório onde estão os documentos
if [ "$1" == "" ]; then
DIRETORIO="/home"
else
DIRETORIO="$1"
fi
# Mostrar detalhes de cada arquivo
DETALHAR=""
# Tempo para trocar os discos
TEMPO=15
# Tamanho de cada bloco no Disco em bytes (2kB para o CD em modo xa2)
TAM_BLOCO=2048
# Tamanho do Disco em blocos (736.970.752 bytes / 2.048 bytes = 359.849
blocos = 79:59/74 pela opção -atip do cdrecord)
TAM_DISCO=359849
# Dispositivo, no formato "entendido" pelo cdrecord
DEV="ATAPI:0,1,0"
function Gravar() {
echo
if [ -n "$DETALHAR" ]; then
echo
echo "###############################################################"
echo "# #"
echo "# Programa: Cópia de Segurança em vários discos #"
echo "# Autor : Claudio Polegato Junior #"
echo "# Data : 03/05/2005 #"
echo "# #"
echo "###############################################################"
echo
echo "Aqui começa a gravação dos arquivos:"
cat /tmp/Arquivos
fi
echo
echo "###############################################################"
echo "# #"
echo "# Programa: Cópia de Segurança em vários discos #"
echo "# Autor : Claudio Polegato Junior #"
echo "# Data : 03/05/2005 #"
echo "# #"
echo "###############################################################"
echo
# Bota a mídia para fora :)
cdrecord dev=$DEV -eject
echo
echo "Coloque o CD-RW correto no compartimento."
echo "Ou pressione [Ctrl]+[C] para terminar."
for contagem_regressiva in `seq $TEMPO -1 0`; do
echo -ne "\rVocê tem $contagem_regressiva segundos para isso. "
sleep 1
done
echo
echo
# Use aqui o cdrecord ou growisofs ou coisa assim para gravar com a
lista de arquivos que tem em /tmp/Arquivos
# É preciso ter permissão de execução e, possivelmente, suid sobre
estes programas para funcionar de acordo
# Carrega a mídia de volta - demora muito com alguns tipos de
gravadoras, portanto deixe comentada se não tiver problemas ou use o
comando "eject -t"
# cdrecord dev=$DEV -load
# Apagar a mídia e abre o compartimento
cdrecord dev=$DEV blank=fast gracetime=2 -force -eject
echo
# Carrega a mídia de volta - demora muito com alguns tipos de
gravadoras, portanto deixe comentada se não tiver problemas ou use o
comando "eject -t"
# cdrecord dev=$DEV -load
# Cria a imagem na partição temporária (mais rápido)
mkisofs -J -R -l -D -L -joliet-long -iso-level 2 -V Cópia\ de\
Segurança -P Claudio\ Polegato\ Junior -p Claudio\ Polegato\ Junior -o
/dev/shm/imagem.img -graft-points -path-list /tmp/Arquivos 2>&1 | grep
'% done'
echo
# Grava a imagem na mídia
cdrecord dev=$DEV gracetime=2 driveropts=burnfree fs=80m -pad -xa2
-eject /dev/shm/imagem.img
echo
}
# Parte principal do programa
echo -n "" > /tmp/Arquivos
echo
REST_DISCO=$TAM_DISCO
find "$DIRETORIO" ! -type d | while read ARQ; do
TAM_ARQ=`find "$ARQ" -maxdepth 0 -printf %s`
BLOCOS_ARQ=$((TAM_ARQ/TAM_BLOCO))
if ((BLOCOS_ARQ*TAM_BLOCO<TAM_ARQ)); then
((BLOCOS_ARQ++))
fi
if ((REST_DISCO-BLOCOS_ARQ<0)); then
Gravar
REST_DISCO=$TAM_DISCO
echo -n "" > /tmp/Arquivos
fi
echo "$ARQ=$ARQ" >> /tmp/Arquivos
REST_DISCO=$((REST_DISCO-BLOCOS_ARQ))
if [ -z "$DETALHAR" ]; then
echo -ne "\rRestante: $((REST_DISCO*TAM_BLOCO/1024/1024)) MB de
$((TAM_DISCO*TAM_BLOCO/1024/1024)) MB "
else
echo $ARQ;
echo " Tamanho : $TAM_ARQ Bytes"
echo " Restante: $((REST_DISCO*TAM_BLOCO/1024/1024)) MB de
$((TAM_DISCO*TAM_BLOCO/1024/1024)) MB"
fi
done
Gravar
--
[]'s
Claudio Polegato Junior
Um peregrino de Problemas; Um pergaminho de Soluções.
---------------------------------------------------------------------------
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