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

Responder a