Duplicando CDs de áudio e dados

Publicado por Sandro Marcell 11/07/2008

[ Hits: 5.323 ]

Homepage: http://sanmarcell.wordpress.com

Download dushell.sh




Script que duplica CDs de áudio e dados. Ótimo para duplicar CDs com
setores de boot, tais como CDs de jogos e S.Os, além de CDs de música.

Falou!!!

  



Esconder código-fonte

#!/bin/sh 
#
# Duplicando CD's de áudio e dados.
#
# Autor: Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Obs.:
# É utilizada a interface 'dialog'.
# É necessário o pacote 'cdrtools'.
# Verifique as permissões do dispositivo de gravação.
# Se necessário, altere as variavéis de configuração.

# Variavéis de configuração.
GRAVADORA=/dev/cdrom        # Localização do dispositivo de gravação
VELOC_GRAV=48           # Velocidade de gravação
DIR_TRAB=/tmp/dushell-$USER  # Diretório temporário de trabalho

# Caso o usuário 'mate' o processo:
trap 'rm -rf $DIR_TRAB 2> /dev/null ; exit' 0 1 2 3 15

# Função que remove o diretório de trabalho:
Apagar () { rm -rf $DIR_TRAB 2> /dev/null ; }

# Declarando funções de 'dialog':
Dialog_duplicando () {   
      dialog --colors --backtitle "\Zb$TÍTULO" \
      --infobox "\Z5Duplicando... Aguarde!\Zn" 3 30
   }
   
Dialog_troca () {   
      dialog --colors --backtitle "\Zb$TÍTULO"      \
      --title "Cópia concluída"            \
      --msgbox "\Zb\Z7Insira um CD 'virgem' no drive para\
      continuar ou tecle <ESC> para cancelar.\Zn" 6 50      
   }

Dialog_problema () {
      dialog --colors --backtitle "\Zb$TÍTULO" \
      --title "OCORREU O SEGUINTE PROBLEMA:"   \
      --textbox $DIR_TRAB/$$ 0 0
      }
      
Dialog_gravando () {   
      dialog --colors --backtitle "\Zb$TÍTULO" \
      --infobox "\Zb\Z3Gravando... Aguarde!\Zn" 3 30
   }

Dialog_sucesso () {   
      dialog --colors --backtitle "\Zb$TÍTULO" \
      --msgbox "CD duplicado com sucesso!" 5 30
   }

# Montando a caixa de 'dialog' principal para o usuário:
TÍTULO=$(echo "DuShell.sh - Shell script para duplicação de CD's")

OPÇÃO=$(dialog --stdout --colors --backtitle "\Zb$TÍTULO"           \
   --title "O QUE VOCÊ DESEJA DUPLICAR?"                   \
   --radiolist "\Z1Use as setas direcionais do teclado para navegar\
   pelas opções e tecle <SPACEBAR> para marcar.\Zn" 0 0 0           \
   "Dados"       "Duplicar um CD de dados." ON              \
   "Áudio"       "Duplicar um CD de áudio." OFF              )

# Início da instrução 'case', que checa qual opção o usuário escolheu:       
   case $OPÇÃO in

      Dados) # Duplicando CD's de dados. 

      # Criando, caso não exista o diretório de trabalho:
      if [ ! -d $DIR_TRAB ]; then
         mkdir $DIR_TRAB
      fi

      # Chamando a função 'Dialog_duplicando':
      Dialog_duplicando

      # Iniciando processo de duplicação do CD de dados:
      if ! readcd dev=$GRAVADORA f=$DIR_TRAB/$$.raw \
         speed=$VELOC_GRAV -clone -noerror retries=1 \
         1> /dev/null 2> $DIR_TRAB/$$; then

      # Se houver problemas, a função 'Dialog_problema' é chamada:
      Dialog_problema         
         Apagar
         exit
      fi

      eject $GRAVADORA 2> /dev/null # Ejetando após duplicar!

      # Chamando a função 'Dialog_troca':
      Dialog_troca
      
      # Caso o usuário tecle 'ESC':
      if [ $? -eq 255 ]; then
         dialog --colors --backtitle "\Zb$TÍTULO" \
         --infobox "\Zb\Z1Duplicação de CD cancelada!\Zn" 3 35
         Apagar
         exit
      fi
      
      # Chamando a função 'Dialog_gravando':
      Dialog_gravando

      # 1... 2... 3... Gravando!: 
      if ! cdrecord gracetime=2 dev=$GRAVADORA speed=$VELOC_GRAV \
         -raw96r driveropts=burnfree -clone -force -eject \
         $DIR_TRAB/$$.raw 1> /dev/null 2> $DIR_TRAB/$$; then

      # Se houver problemas, a função 'Dialog_problema' é chamada:
      Dialog_problema
         Apagar
         exit
      fi

      # Se a duplicação ocorreu sem problemas,
      # a função 'Dialog_sucesso' é chamada:
      Dialog_sucesso
      Apagar
      exit
      ;;
      
      #----------------------------------------------#
      
      Áudio) # Duplicando CD's de áudio.
      
      if [ ! -d $DIR_TRAB ]; then
         mkdir $DIR_TRAB
      fi

      Dialog_duplicando

      # Início do processo de duplicação do CD de áudio:
      cd $DIR_TRAB
      if ! cdda2wav dev=$GRAVADORA -x -v all -L 0 \
         -B -O raw -S $VELOC_GRAV \
         1> /dev/null 2> $$; then

      Dialog_problema         
         Apagar
         exit
      fi
      
      eject $GRAVADORA 2> /dev/null
      
      Dialog_troca
      
      if [ $? -eq 255 ]; then
         dialog --colors --backtitle "\Zb$TÍTULO" \
         --infobox "\Zb\Z1Duplicação de CD cancelada!\Zn" 3 35
         Apagar
         exit
      fi
      
      Dialog_gravando

      # Gravando CD de áudio:
      if ! cdrecord gracetime=2 dev=$GRAVADORA speed=$VELOC_GRAV \
         -raw96r driveropts=burnfree -eject -useinfo -text \
         -audio -shorttrack *.raw 1> /dev/null 2> $$; then 

      Dialog_problema         
         Apagar
         exit
      fi

      Dialog_sucesso
      Apagar
      exit
      ;;

      *) exit ;; 
      
   esac
exit
# Fim

Scripts recomendados

Mostrando um exemplo de redirecinamento

Script para desligamento e reinicialização do computador s/precisar sair do KDE

Compac.sh (Versão CShell)

Script para verficar se um pacote está instalado no Slackware

MACGEN V1.0 MAC Address Generator


  

Comentários
[1] Comentário enviado por SMarcell em 11/07/2008 - 09:08h

Script caduco:

Este script estava a +/- um ano na fila de espera aqui do VOL, e só agora é que foi publicado! Só informando que já existe uma versão infinitamente melhor do que essa pronta.

Falou!!!


Contribuir com comentário