Introdução rápida aos formatos de CD:
Um CD-R pode gravar várias sessões . Cada sessão deve estar completa e "fechada" antes de poder ser lida. Cada sessão contém um lead-in, um lead-out e várias faixas. Você pode escrever todas as faixas em uma única sessão ( disco de uma só vez , a opção -dao
) ou cada faixa, por sua vez a partir de arquivos diferentes (conceitualmente) com pausas entre ( pista de uma só vez , opção -tao
), mas você deve escrever todas as faixas e fechar a sessão.
O formato de dados para CDs (CD-ROM, "livro amarelo") foi projetado na parte superior do formato de áudio (CD-DA, "livro vermelho") e separa adequadamente o fluxo contínuo de áudio digital em setores. Para isso, precisa de algumas informações de cabeçalho, e é por isso que você tem 2352 bytes em um "setor" de áudio, mas apenas 2336 bytes para dados. Além disso, a correção de erros nos CDs de áudio é boa o suficiente para o áudio, onde você pode tolerar alguns bits errados, mas não o suficiente para os dados. Portanto, cada setor recebe bits adicionais de correção de erros, deixando 2048 bytes de dados do usuário. Isso também é chamado de "Modo 1". Esse é o padrão em cdrecord
e não recomendo usar nenhum outro modo para gravar dados. Os modos "brutos" disponíveis permitem escrever dados de subcanais, mas você não precisa disso.
Você irá precisar colocar suas faixas no tamanho adequado antes de escrever, no entanto. E não, 4512 bytes não é um múltiplo de 2048 bytes. Então, para backup, algo como
tar -c --record-size=2048 -f track.tar
e depois algo como
cdrecord -multi dev=0,0,0 -data track.tar
para criar um CD de várias sessões com uma única faixa. Se o CD não estiver cheio, você pode acrescentar outra sessão.
Os DVDs têm um formato diferente, blocos de tamanhos diferentes e restrições diferentes, e ainda não experimentei isso pessoalmente em um DVD, então prefiro não dar detalhes, mas, em princípio, funciona de maneira semelhante.
Editar :
Se o objetivo é fazer backups freqüentes em DVD + RW ou DVD-RW (+ ou - é importante, estas são formatos diferentes), você pode tolerar falhas, de modo que você pode realmente tentar streaming a partir tar
. Você provavelmente também não precisa de várias sessões.
Você também pode transmitir a partir de mkisofs
, o que é ainda melhor porque não haverá problemas para montá-lo e man cdrecord
tem um exemplo:
mkisofs -R /master/tree | cdrecord -v -dao fs=6m speed=2 dev=2,0 -
O último -
é para "ler dados de stdin". Você pode querer mexer com a velocidade, tamanho FIFO, prioridades I / O (que é outra lata de worms), driveropts=burnfree
se suportado, etc.
Para backups permanentes em mídias de gravação única, sempre recomendo fazê-lo de maneira segura, sem streaming.