Script para gravar 2 (ou 4) CDs simultaneamente no Linux

O K3B já superou o Nero tanto em recursos quanto em facilidade de uso. O único motivo para alguns ainda acharem que o Nero é superior, é o fato de não conhecerem ou não saberem usar todos os recursos do K3B ;).

O K3B é tão melhor que a versão Linux do Nero (ela já existe a mais de um ano, não sabia? 😉 vem sendo virtualmente ignorada. Além dos próprios desenvolvedores, é possível contar os usuários nos dedos. O desinteresse é tanto, que segundo a busca do Google, na internet inteira só existem 61 referências ao link https://www.nero.com/eng/NeroLINUX.html (acabei de fazer o favor de adicionar a 62º ;).

Entretanto, um recurso ainda não disponível no K3B, que faz falta para muita gente é a possibilidade de gravar dois ou mais CDs simultaneamente, usando vários gravadores.

É possível montar máquinas com 2 ou 4 gravadores, com o objetivo de gravar rapidamente grandes quantidades de CDs (imagine o caso de um install fest, por exemplo).

Ao usar um HD IDE, a configuração ideal é deixar o HD sozinho na primeira IDE e deixar os dois gravadores como master e slave da segunda (hdc e hdd, respectivamente). Ao usar um HD SATA, você fica com as duas portas IDE disponíveis e pode instalar 4 gravadores.

Apesar do K3B ainda não oferecer esta opção, gravar dois (ou quatro) CDs simultaneamente no Linux é bem simples, basta chamar o cdrecord via linha de comando.

Se você tem dois gravadores (reconhecidos pelo sistema como /dev/hdc e /dev/hdd, por exemplo), abra dois terminais e use os dois comandos a seguir (um em cada terminal):

$ cdrecord -v -sao speed=16 dev=/dev/hdc meu-arquivo.iso

$ cdrecord -v -sao speed=16 dev=/dev/hdc meu-arquivo.iso

O “16” indica a velocidade de gravação e o “meu-arquivo.iso” é a localização para o arquivo .ISO que você deseja gravar. É possível gravar simultaneamente dois ISOs diferentes, mas você terá melhores resultados com relação ao problema do esvaziamento de buffer fazendo duas gravações do mesmo ISO.

Vamos aproveitar então para unir o útil ao agradável, transformando esta receita num script mais elaborado para gravar os dois CDs simultaneamente. Nosso script começará perguntando qual o arquivo ISO a gravar, fará a gravação usando seus dois ou quatro gravadores simultaneamente e no final verificará o MD5SUM de cada CD, permitindo que você descarte as mídias defeituosas.

Vamos começar com um “mock-up” de como será o script. Esta é a tela inicial para escolher o arquivo ISO a ser gravado:

img1

Este é o terminal mostrando as mensagens do cdrecord durante a gravação:

img2

Esta é a tela que compara o MD5SUM do ISO original com o de cada um dos CDs gravados, permitindo detectar erros de gravação:

img3

Vamos então ao script. Comece lendo os meus comentários para entender como o script funciona (e aprender a fazer os seus ;). Para usar, salve o código dentro de um arquivo de texto (“grava2cd”, por exemplo), marque a permissão de execução para ele (chmod +x grava2cd) e execute-o via terminal (./grava2cd) para gravar.

Script para gravar 2 CDs:

#!/bin/sh
# Script simples para gravar simultâneamente, usando dois gravadores e checar o md5sum.
# Este script é apenas um exemplo. Adapte-o de acordo às suas necessiades.

# Escolhe o iso a ser gravado
ISO=`kdialog –caption “Grava2CD” –icon “configure” –getopenfilename “/home/$USER” “*.iso |Arquivos ISO”`

# Os devices dos gravadores que serão usados.
# É importante que o gravador mais rápido fique em primeiro e o mais lento em segundo:
DEV1=”hdd”
DEV2=”hdc”

# Gera o md5sum do iso original
mdiso=`md5sum $ISO`

# Variável para verificar o início do loop
pass=”0″

# Loop eterno:
while [ “1” = “1” ]; do

# Mata qualquer instância ativa do cdrecord, só pra garantir
killall cdrecord
clear

# Mostra uma mensagem caso seja o primeiro loop e outra diferente daí em diante
if [ “$pass” = “0” ]; then
# Primeira mensagem:
echo “MD5SUM ISO = $mdiso”
echo “Pressione ENTER gravar, ou CTRL+C para abortar.”
read pausa
else
# (Mensagem exibida depois de cada gravação)
md1=`cat /tmp/md5sum1`
md2=`cat /tmp/md5sum2`
# Limpa os temporários e mostra os md5sums para que o operador verifique:
rm -f /tmp/md5sum1 /tmp/md5sum2
clear
echo “MD5SUM ISO = $mdiso”
echo “MD5SUM $DEV1 = $md1”
echo “MD5SUM $DEV2 = $md2”
echo ”
echo “Pressione ENTER gravar mais dois CDs, ou CTRL+C para abortar.”
read pausa
fi

pass=”1″
# Recolhe a bandeja dos dois gravadores:
eject -t /dev/hdc
eject -t /dev/hdd

# Escreve os scripts de gravação:
echo “cdrecord -v -sao speed=16 dev=/dev/$DEV1 $ISO; eject /dev/$DEV1; eject -t /dev/$DEV1; md5sum /dev/$DEV1 > /tmp/md5sum1; eject /dev/$DEV1” > /tmp/mkcd1
echo “cdrecord -v -sao speed=16 dev=/dev/$DEV2 $ISO; eject /dev/$DEV2; eject -t /dev/$DEV2; md5sum /dev/$DEV2 > /tmp/md5sum2; eject /dev/$DEV2” > /tmp/mkcd2
chmod +x /tmp/mkcd1 /tmp/mkcd2

# Grava. O script do gravador mais rápido corre em background. O script do gravador mais lento trava o terminal,
# evitando que o script prossiga até que a gravação termine.
/tmp/mkcd1 &
/tmp/mkcd2
# Pausa adicional, só pra garantir que os dois terminaram:
sleep 10
clear

# Fim do loop. Volta ao início, mostrando os md5sums e pedindo confirmação para gravar mais.
done

# Este comando nunca vai ser executado, pois o script só termina quando é pressionado CTRL+C. O “exit 0” é só para seguir o padrão:
exit 0

Script para gravar 4 CDs:

#!/bin/sh
# Script simples para gravar simultâneamente, usando quatro gravadores e checar o md5sum.
# Este script é apenas um exemplo. Adapte-o de acordo às suas necessiades.

# Escolhe o iso a ser gravado
ISO=`kdialog –caption “Grava4CD” –icon “configure” –getopenfilename “/home/$USER” “*.iso |Arquivos ISO”`

# Os devices dos gravadores que serão usados.
# É importante que o gravador mais lento fique em último (DEV4):
DEV1=”hdd”
DEV2=”hdc”
DEV3=”hdb”
DEV4=”hda”

# Gera o md5sum do iso original
mdiso=`md5sum $ISO`

# Variável para verificar o início do loop
pass=”0″

# Loop eterno:
while [ “1” = “1” ]; do

# Mata qualquer instância ativa do cdrecord, só pra garantir
killall cdrecord
clear

# Mostra uma mensagem caso seja o primeiro loop e outra diferente daí em diante
if [ “$pass” = “0” ]; then
# Primeira mensagem:
echo “MD5SUM ISO = $mdiso”
echo “Pressione ENTER gravar, ou CTRL+C para abortar.”
read pausa
else
# (Mensagem exibida depois de cada gravação)
md1=`cat /tmp/md5sum1`
md2=`cat /tmp/md5sum2`
md3=`cat /tmp/md5sum3`
md4=`cat /tmp/md5sum4`
# Limpa os temporários e mostra os md5sums para que o operador verifique:
rm -f /tmp/md5sum*
clear
echo “MD5SUM ISO = $mdiso”
echo “MD5SUM $DEV1 = $md1”
echo “MD5SUM $DEV2 = $md2”
echo “MD5SUM $DEV3 = $md3”
echo “MD5SUM $DEV4 = $md4”
echo ”
echo “Pressione ENTER gravar mais dois CDs, ou CTRL+C para abortar.”
read pausa
fi

pass=”1″
# Recolhe a bandeja dos 4 gravadores:
eject -t /dev/hda
eject -t /dev/hdb
eject -t /dev/hdc
eject -t /dev/hdd

# Escreve os scripts de gravação:
echo “cdrecord -v -sao speed=16 dev=/dev/$DEV1 $ISO; eject /dev/$DEV1; eject -t /dev/$DEV1; md5sum /dev/$DEV1 > /tmp/md5sum1; eject /dev/$DEV1” > /tmp/mkcd1
echo “cdrecord -v -sao speed=16 dev=/dev/$DEV2 $ISO; eject /dev/$DEV2; eject -t /dev/$DEV2; md5sum /dev/$DEV2 > /tmp/md5sum2; eject /dev/$DEV2” > /tmp/mkcd2
echo “cdrecord -v -sao speed=16 dev=/dev/$DEV3 $ISO; eject /dev/$DEV3; eject -t /dev/$DEV3; md5sum /dev/$DEV3 > /tmp/md5sum3; eject /dev/$DEV3” > /tmp/mkcd3
echo “cdrecord -v -sao speed=16 dev=/dev/$DEV4 $ISO; eject /dev/$DEV4; eject -t /dev/$DEV4; md5sum /dev/$DEV4 > /tmp/md5sum4; eject /dev/$DEV4” > /tmp/mkcd4
chmod +x /tmp/mkcd*

# Grava. Três dos scripts correm em background. O script do gravador mais lento trava o terminal,
# evitando que o script prossiga até que a gravação termine.
/tmp/mkcd1 &
/tmp/mkcd2 &
/tmp/mkcd3 &
/tmp/mkcd4
# Pausa adicional, só pra garantir que todos terminaram:
sleep 15
clear

# Fim do loop. Volta ao início, mostrando os md5sums e pedindo confirmação para gravar mais.
done

# Este comando nunca vai ser executado, pois o script só termina quando é pressionado CTRL+C. O “exit 0” é só para seguir o padrão:
exit 0

Postado por
Siga em:
Compartilhe
Deixe seu comentário
Assine nossa Newsletter
Assine nossa newsletter e receba nossa seleção de conteúdo sobre tecnologia, games, IA e internet em seu email.
Veja também
Publicações Relacionadas
Img de rastreio
Localize algo no site!