O Alessandro de Oliveira Faria (alessandrofaria@netitec.com.br) mandou um script e o respectivo tutorial de gravação de backups em CDs multi-sessão, que serve para quem tem backups que não preenchem todo o conteúdo do CD - assim, a mesma mídia pode ser regravada várias vezes até lotar. Veja abaixo o texto dele:
Criando um invejável serviço de backup em CD-R com gravação multi-sessão
por Alessandro de Oliveira Faria (alessandrofaria@netitec.com.br)
Com este tutorial, você criará um serviço de backup em CD-R que efetua a gravação no modo multi-sessão. Este processo permite que o dados gravados sejam lidos em um cdrom convencional, mesmo utilizando o mesmo disco para outras gravações do backup. Outro processo interessante neste artigo são as rotinas que avisam o usuario com uma voz gravada em mp3, se a unidade esta com o cd lotado ou sem nenhum disco na unidade!
1 - A INSTALAÇÃO DO CDRW E O CONCEITO DE FUNCIONAMENTO:
Neste tutorial, explico apenas a instalação e configuração de drivers CDRW ATAPI, pois os drives SCSI funcionam sem muito problemas. Para elaborar este texto, usei um Gravador LG.
Em primeiro lugar, vamos verificar que a sua BIOS identificou a unidade de CD corretamente digitando o seguinte comando:
# dmesg | grep ATAPI
hdc: HL-DT-ST GCE-8520B, ATAPI CD/DVD-ROM drive
scsi0 : SCSI host adapter emulation for IDE ATAPI devices
Copie o nome do dispositivo que o sistema atribuiu a sua unidade de cd, pois esta informação será imprescindível mais tarde.
Outro detalhe importante são os pacote(relacionados logo abaixo) que devem estarem instalados para este tutorial ser concluido com exito.
Pacotes obrigatórios:
- cdrecord
- mkisofs
- mpg123 (Vou partir do princípio que a placa de som está instalada e configurada)
Agora um ponto muito importante, é ter carregado os modulos dos drivers apropriados para que todo o hardware funcione corretamente. Em algumas distribuções este modulo é carregado automáticamente, já em outras não. Em todo caso verifique se o módulo ide-scsi está carregado com o comando abaixo:
#lsmod
Se você não encontrar o módulo, adicione a seguinte linha no fim do arquivo /etc/rc.d/rc.local:
/sbin/insmod ide-scsi
Agora vamos configurar os modulos para funcionarem corretamente adicionando as seguintes linhas no final do arquivo: /etc/modules.conf
alias scd0 srmod
alias scsi_hostadapter ide-scsi
options ide-cd ignore=hdc
Observe que na última linha inseri o nome do dispositivo do meu gravador LG, troque o hdc pelo nome do dispositivo atribuido pelo Linux.
Agora salve tudo e reinicie a sua máquina, e apos o login, digite o seguinte comando. Se estiver correto, as ultimas linhas deverão ser semelhantes com a mensagens abaixo:
# dmesg
SCSI subsystem driver Revision: 1.00
scsi0 : SCSI host adapter emulation for IDE ATAPI devices
Vendor: HL-DT-ST Model: CD-RW GCE-8520B Rev: 1.03
Type: CD-ROM ANSI SCSI revision: 02
scsi : 0 hosts left.
Vamos testar se o seu cdrom continua funcionando correntamente. Insira um disco de dados na unidade de cd e digite:
[root@servidor rc.d]# mount /dev/sr0 /mnt/cdrom
[root@servidor rc.d]# cd /mnt/cdrom
[root@servidor rc.d]# ls
Se o conteúdo do seu cd de dados aparecer corretamente, implica que tudo indo muito bem. Agora vamos continuar, e não esqueça de desmontar o cd:
[root@servidor rc.d]# mount /mnt/cdrom
Trocaremos o link da unidade de cd-rom para o dispositivo scsi:
# cd /dev
# ln -sf /dev/sr0 cdrom
Agora vamos identificar o seu gravador de CD no programa cdrecord. Este programa será reponsável pela gravação de um arquivo .iso em um CD-R
# cdrecord -scanbus
Cdrecord 2.0 (i686-pc-linux-gnu) Copyright (C) 1995-2002 Jörg Schilling
Linux sg driver version: 3.1.24
Using libscg version 'schily-0.7'
scsibus0:
0,0,0 0) 'HL-DT-ST' 'CD-RW GCE-8520B ' '1.03' Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
Os três primeiros numeros a esquerda separados por vírgula, são os numeros que representam o nosso gravador de cd para o programa cdrecord. No exemplo acima refenciamos ao CDRW atraves dos numeros 0,0,0.
Para gravar um cd no linux, existe 2 etapas. A primeira consiste em gerar uma imagem dos dados a serem gravados no cd, a segunda é a gravação da imagem no cd virgem.
Mkisofs é o programa que gera a image a ser gravada, sua sintaxe é:
# mkisofs -o nome_da_imagem.iso -JrT /nome/do/diretorio/
-o nome_da_imagem.iso: Este parâmetro informa o nome do arquivo .iso, que contem a imagem a ser gravada no cd.
-JrT Torna os nome longos de arquivos compativel com outros sistemas operacionais.
Veja no exemplo abaixo, estou gerando um arquivo sierra.iso que se encontra na pasta gerarcd:
# mkisofs -o /rede/iso/sierra.iso -JrT /rede/public/gerarcd/
Using CAL_D000.BMP;1 for /rede/public/gerarcd/SIERRA/PRTARTST/16BIT/CAL_DN.BMP
(CAL-DN.BMP)
4.88% done, estimate finish Mon Aug 11 21:47:26 2003
87.71% done, estimate finish Mon Aug 11 21:47:23 2003
97.45% done, estimate finish Mon Aug 11 21:47:23 2003
Total translation table size: 100031
Total rockridge attributes bytes: 158561
Total directory bytes: 262144
Path table size(bytes): 66
Max brk space used 1254a4
102624 extents written (200 Mb)
Agora só nos resta efetuarmos a gravação do CD, para isto usamos o programa cdrecord que se encarrega de gravar a imagem no disco virgem:
# cdrecord dev=0,0,0 -v speed=8 -eject -data /rede/iso/sierra.iso
Parametros:
dev=0,0,0 : dispositivo indicado pelo cdrecord -scanbus
-v speed=8 : efetua a gravação na velocidade 8x
-eject : Abre a gaveta do cd-rom após o término da gravação
-data nome_do_arq : nome e caminho do arquivo .iso (imagem) a ser gravado.
Com o exemplo acima, não conseguiremos gravar mais nenhuma outra informação no disco, pois o mesmo foi finalizado. Para utilizarmos o espaço livre no cd, teremos que efetuar uma gravação multi-seção.
Não existe segredo para fazermos gravação multi-seção. Apenas temos que verificar qual é a próxima posição disponível (espaço livre) no cd, para continuarmo a gravação apartir desde ponto.
Obtendo esta informação, precisamos avisar ao programa cdrecord que a imagem a ser gravada será multi-seção e ao programa mkisofs qual será a sua posição em que a .iso será gravada no cd.
Vou dar um breve exemplo, para este texto não ficar muito extenso:
Gerando a primeira imagem:
# mkisofs -o nome_da_imagem.iso -JrT /nome/do/diretorio/
Gravando a primeira seção:
# cdrecord dev=0,0,0 -v speed=8 -eject -multi -data nome_da_imagem.iso
Obtendo a próxima posição livre:
# cdrecord -msinfo dev=0,0,0
0,34093
Gerando as próximas imagens:
# mkisofs -o nome_da_imagem.iso -JrT -C 0,34093 -M /dev/cdrom /nome/do/diretorio/
Gravando as próximas seções:
# cdrecord dev=0,0,0 -v speed=8 -eject -multi -data nome_da_imagem.iso
2 - CRIANDO O SERVIÇO
Antes de colocar a mão na massa, vamos entender como o script trabalha:
- Verifica se tem cd na unidade, caso contrário o script fica buzinando o usuário, reproduzindo uma mensagem de alerta em mp3. Só apos este teste, o serviço continua com as suas instruções operações.
- Verifica se já foi efetuada alguma gravação no cd, pois na primeira gravação o script não precisa procurar a proxima posição disponível para gravação.
- Verifica se o espaço no cd, é suficiente para gravar as informações especificada. Caso o disco tenha pouco espaço, o script fica novamente buzinando o usuário para trocar o cd (reproduzindo um mp3 que avisa estar com espaço insuficiente)
Vamos criar uma pasta /rede/script para armazenar todos os arquivos deste serviço:
# mkdir -p /rede/script
# cd /rede/script
O arquivos .mp3 você poder baixar em:
# wget http://cabelo.neti.vila.bol.com.br/cdrwcheio.mp3
# wget http://cabelo.neti.vila.bol.com.br/cdrw.mp3
obs:você pode criar sua própia mensagem de voz em mp3!
Criando o script que verifica se existe disco na unidade de CD:
[root@servidor script]# vi temcd
cdrw=true
while $cdrw = true; do # Este loop termina quando for inserido um disco na unidade
cdrecord -msinfo -s dev=0,0,0 # Verifica o que tem na unidade de CD
if [ "$?" = "0" ]; # Existe CD?
then
cdrw=false # Se existir, sai do loop
else
echo "sem cd" # Se não existir, então reproduz o .mp3
mpg123 -q -r 48000 /rede/script/cdrw.mp3
sleep 10 # Espera 10 segundos
fi
done
Criando o script que verifica se o usuário retirou o CD da unidade (quando estiver cheio):
# vi semcd
cdrw=true
while $cdrw = true; do # Este loop termina quando for inserido um disco na unidade
cdrecord -msinfo -s dev=0,0,0 # Verifica o que tem na unidade de CD
if [ "$?" != "0" ]; # Tirou o CD?
then
cdrw=false # Se tirou, sai do loop
else
echo "com cd" # Se existir cd na unidade, então reproduz o .mp3
mpg123 -q -r 48000 /rede/script/cdrwcheio.mp3
sleep 10 # Espera 10 segundos
fi
done
Criando as regras de backup:
Em meu caso, deveria copiar um banco de dados Interbase/Firebird e o conteúdo da pasta /rede/meusdoc.
Cada usuário terá que adaptar o script para a sua real necessidade, na verdade isto implica em trocar o path da informação a ser gravada e comentar a linha que faz o backup do banco de dados.
Se existir dificuldade em entender os script, me envie um e-mail para esclarecer as dúvidas.
Resolvi deixar 7 versões do backup no HD (uma versão para cada dia da semana). Assim se eu precisar voltar um backup de até uma semana atraz, não precisarei recorer ao CD. Além disto, se o CD falhar, eu tenho uma semana para constatar o erro! :)
Vamos gerar 8 pastas: uma para cada dia da semana e outra para gerar a imagem a ser gravada:
# cd /rede
# mkdir iso
# cd iso
# mkdir Mon Sun Tue Wed Thu Fri Sat tmp
Cada pasta representa um dia da semana e a pasta tmp será usada para gerar o arquivo .iso (imagem)
Criando o script que gera a imagem e grava o CD:
# cd /rede/script
# vi geraiso
export LC_ALL=en_US
/rede/script/temcd # chama o script que verificar se existe cd na unidade
/bin/rm -rf /rede/iso/tmp/* # apaga o lixo da ultima gravação
HOJE=`/bin/date | /bin/cut -c 1-3` # grava na variavel o dia da semana
POSCD=`/usr/bin/cdrecord -s -msinfo dev=0,0,0` # grava na variavel a próxima posição disponível do cd
echo $POSCD | /bin/grep , > /dev/null # aqui o script verificar se será a 1a gravação no cd
if [ "$?" = "1" ]; then
TESTE='VIRGEM'
else
TESTE='USADO'
fi
cd /rede/iso/$HOJE # entra na para do dia atual
# a linha abaixo efetua o backup do banco intebase.
/opt/interbase/bin/gbak -b -v /servdad/FARMAVIDA.GDB /rede/iso/$HOJE/bcodados.gdk -user SYSDBA -pass masterkey
/bin/cp -rp /rede/meusdoc/* /rede/iso/$HOJE # copia os dados para o dia atual
/bin/mkdir /rede/iso/tmp/"`date +%Y%m%d`" # cria uma pasta ano-mes-dia para gravar na raiz do cd
/bin/cp -rp /rede/iso/$HOJE/* /rede/iso/tmp/"`date +%Y%m%d`" # copia novamente os dados para tmp
if [ $TESTE = 'VIRGEM' ]; then # se for a primeira gravacao, gera um imagem normal
# echo "Primeira Trilha"
/usr/bin/mkisofs -o /rede/iso/data.iso -JrT /rede/iso/tmp
else
# echo "Segunda Trilha" # gera uma imagem informando a próxima posição livre
/usr/bin/mkisofs -o /rede/iso/data.iso -JrT -C $POSCD -M /dev/cdrom /rede/iso/tmp
fi
/bin/rm -rf /rede/iso/tmp/"`date +%Y%m%d`" # apaga o lixo
# finalmente grava o cd.
/usr/bin/cdrecord dev=0,0,0 -v speed=8 -eject -multi -data /rede/iso/data.iso
if [ "$?" != "0" ]; then # se o disco estiver cheio
/rede/script/semcd # ficar buzinado até que o cd seja trocado
/rede/script/geraiso # começa tudo de novo.
fi
Não vamos esquecer de dar o direito de execução nos arquivos:
# chmod 770 *
Adicionando o script no crontab, digitando "crontab -e" e adicionando uma linha como a abaixo, que executa todo dia às 19:10:
10 19 * * * root /rede/script/geraiso %
Tentei ser o mais claro possível. É claro que podemos aprimorar muito estes script porém o mesmo esta funcionando.
Qualquer sugestão, favor me envie um e-mail (alessandrofaria@netitec.com.br) para que eu também possar incrementar as melhorias em meus servidores.
--------------------------------------------------------------------------------
Alessandro de Oliveira Faria
http://www.netitec.com.br email: alessandrofaria@netitec.com.br
» Postado por: jr em agosto 29, 2003 04:04 PM, 200.161.70.:
Valeu! Muito Bom Mesmo!
Artigos assim vale a pena serem lidos e guardados.
Simples, sucinto e sem frescura, direto ao ponto e sobre um assunto de grande interesse nos dias de hoje.
Vou utiliza-lo muito em breve, com pequenas modificações.
Parabéns ao autor e ao sítio.
jr
» Postado por: fuji em agosto 30, 2003 02:28 PM, 200.225.194:
Parabéns pelo seu artigo amigo.
Vou deixar ele na meu diretório de tutoriais com certeza.
» Postado por: Rui Costa em setembro 30, 2003 08:56 AM, 62.48.201.7:
Li o artigo e consegui obter do mesmo alguma ajuda.
No entanto devo avisar que o processo para verificar se o CD é ou não virgem está incorrecto. Se o CD estiver virgem o processo funciona mas o inverso não é necessariamente verdade. Inseri alguns CD-R's já gravados e finalizados e alguns CD's de revistas de informática , não graváveis, e este processo falhou dizendo que o CD era virgem.
Estou a tentar outro método utilizando os parâmetros -atip e -toc para obter o mesmo resultado, e outros mais detalhados, com sucesso. Assim que tiver terminado vou tentar enviar o script para que possa ser estudado e, se necessário, emendado.
» Postado por: EDUARDO em outubro 19, 2003 03:44 PM, 200.180.75.:
VOCE É O MESTRE CARA. VALEU PELA INFORMAÇÃO
ISTO SERA MUITO UTIL MESMO EM MEUS TRABALHOS.
VALEU!!!!
» Postado por: Irina Medvedeva em outubro 27, 2003 12:21 PM, 213.252.122:
We would be grateful to you if you could send us you quotation for the following items:
1. CD-R 40x, 48x, 52x s/s, s/d, s/bl (approximate quantity 500 000 pcs);
2. DVD-R 4.7 GB 1x, 2x, 4x (approximate quantity 30 000 - 50 000);
3. DVD-R 9.4 GB;
4. 8 cm CD-R (approximate quantity 10 000-20 000 pcs);
5. BizCard CD-R rectangular/oval, 30/50 Mb (approximate quantity 10 000-20 000 pcs);
6. CD Jewel Box (single/double/black/clear/slim7mm/multibox);
7. DVD box, DVD tray without the cover, Super Juwel Box, Digi tray;
» Postado por: Primata em novembro 4, 2003 08:01 AM, 200.158.243:
Mande nome de programa para gravção de cd em linux kurimin
» Postado por: Thiago Ferreira em novembro 17, 2003 05:39 PM, 200.232.54.:
Preciso de Ajuda urgente... gostaria de saber como eu faço para fazer um CD-RW virar um HD para que eu apenas enviar o arquivo direto para o CD, caso não tenha possibilidade... qual eh o comando no cdrecord para apagar o cd (rapidamente)... ou algo no qual me ajude
» Postado por: Weinberg Gregg em dezembro 11, 2003 06:06 AM, 62.213.67.1:
Make it your guiding principle to do your best for others and to be trustworthy in what you say. Do not accept as friend anyone who is not as good as you. When you make a mistake do not be afraid of mending your ways.
» Postado por: Green Matthew em dezembro 21, 2003 07:06 AM, 62.213.67.1:
There are as many translators as there are humans.
» Postado por: Viviane em janeiro 8, 2004 10:23 AM, 200.241.100:
Bom dia, gostaria de saber quem deve ser responsável para realizar os backups dos meus arquivos na empresa em que eu trabalho, eu ou o Cpd, existe algum artigo que fale sobre a responsabilidade de backups? Gostaria de saber mais informações sobre esse assunto.
Atenciosamente,
Viviane B. Candido
e-mail: vibc@bol.com.br
» Postado por: Rasnic Raegen em janeiro 19, 2004 03:26 PM, 62.213.67.1:
Don't worry that other people don't know you; worry that you don't know other people.
» Postado por: sandro dos santos soares em janeiro 22, 2004 11:22 PM, 200.151.141:
tudo bem.
gostaria de receber o backup em cd e uma apostila, se posivel grates, porque não tenho nenhuma fonte derenda, e gostaria de aprofunda nesse programa, se vocêsquiserem me ajudar, entrem encontato (98) 235- 84 65.
agradeço desde de já, na certeza de ser atendido
» Postado por: radar demonchacon em fevereiro 4, 2004 09:26 AM, 201.5.114.2:
qual o procedimento correto para eu gravar uma cópia de um cd sega etc... no programa nero por que já perdi vários cd's, ele grava mais não roda no vídeo gam, ou se existe um programa melhor qual é por gentileza. aguardo resposta por mail
tel: 2674-4923
mail = hadar@estadao.com.br
tenha um bom dia e que jesus te abençõe
atenciosamente radar demonchacon
» Postado por: Elexandro em abril 13, 2004 10:40 AM, 200.180.90.:
Olá,
dá pra fazer com midia dvd?
Quias as mudanças necessarias para o linux kurumin com gravador de dvd?
Obrigado
» Postado por: Magda em abril 23, 2004 12:19 PM, 143.54.25.2:
Gostaria de saber porque não posso executar um arquivo copiado para um CD.
Por exemplo copiei um arquivo do Acess do meu hd para o CD e quando tentei executar ele informa que este é somente para Leitura.
Como faço para poder executar a partir da copia do CD?
Obrigada,
Magda
» Postado por: Arimatea em julho 13, 2004 04:53 PM, 200.164.230:
Excelente o tutorial, foi o primeiro que eu testei e deu certo, de forma simples e eficiente, parabens. Estava com a impressao que gravar CD's no linux era impossivel para iniciantes, sempre tem uma dependencia de modulos ou alguma coisa da errado, mas este passo a passo para gravar cd-rw e muito facil de usar e funciona mesmo, OBRIGADO.
» Postado por: Cristiano em agosto 22, 2004 02:07 PM, 200.175.123:
Oi, você pode me indicar um programa para gravador de cd Samsung!!!!! Não veio programa para ele!!
» Postado por: Briana Banks em setembro 10, 2004 03:48 AM, 208.35.141.:
7091 http://www.briana-banks-dot.com for Briana Banks movies. or if you would rather diecast here.
» Postado por: Miguel Moura em outubro 2, 2004 04:21 AM, 82.102.32.7:
Olá,
Gostava de usar o seu script, mas tenho um problema, tenho um gravador cdrw samsung e o meu /dev/hdc esta como readonly (ro,nosuid,nodev) :-( ...
» Postado por: keno em outubro 5, 2004 03:31 PM, 148.244.150:
5789 How can this all be right? Check out my site http://www.pai-gow-keno.com
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.