Cremar un CD des de la línia de comandes

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció. Còpies de seguretat a CD-DVD

Fer còpies de seguretat a CD-DVD té l'avantatge de què són fàcilment transportables. Una de les regles d'or de les còpies de seguretat és que han d'estar físicament separades de les dades. Així, en cas de desastre com incendi o robatori, es salvaguarden les dades que estan físicament lluny de l'incident.

En aquest how-to s'intenta automatitzar la tasca de crema de CD-DVD, fent que sigui una tasca integrada dins del procés de backup.

cdrecord

Segueixo

El paquet cdrecord ja està instal.lat. El paquet és el que bé preinstal.lat amb el Ubuntu, i se suposa que és de confiança. En realitat, quan s'executa cdrecord s'està executant l'aplicatiu wodim, i és que poden haver-hi diverses implementacions del paquet cdrom

Per saber on està el CD-DVD regravable:

$ sudo cdrecord -scanbus
scsibus1:
	1,0,0	100) '_NEC    ' 'DVD+-RW ND-6650A' '102C' Removable CD-ROM
	1,1,0	101) *
	1,2,0	102) *
	1,3,0	103) *
	1,4,0	104) *
	1,5,0	105) *
	1,6,0	106) *
	1,7,0	107) *

Per copiar fitxers a un CD, primer hem de fer una ISO d'aquests fitxers

$ sudo mkisofs -D -r -J -o joan.iso /home/joan/backup_alfresco

L'opció -D és important perquè deixa copiar més de 6 nivells de directoris (per exemple, en el directori d'Alfresco hi ha un directori de més profunditat)

$ sudo cdrecord -v dev=1,0,0 driveropts=burnfree -eject -data /home/joan/joan.iso

i funciona, però tanca el CD-RW que he ficat

com que és un CD-RW, vull saber com fer per no tancar el CD, o bé obrir-lo per a una nova còpia.

joan@userver:~$ cdrecord --help blank=help
Blanking options:
	all		blank the entire disk
	disc		blank the entire disk
	disk		blank the entire disk
	fast		minimally blank the entire disk (PMA, TOC, pregap)
	minimal		minimally blank the entire disk (PMA, TOC, pregap)
	track		blank a track
	unreserve	unreserve a track
	trtail		blank a track tail
	unclose		unclose last session
	session		blank last session
$ sudo cdrecord -v dev=1,0,0 driveropts=burnfree -eject -data /home/joan/joan.iso -blank=unclose

no funciona això i altres coses perquè em diu que

Error trying to open /dev/scd0 exclusively (Device or resource busy)... retrying in 1 second.

Faig

$ sudo cdrecord -scanbus
wodim: No such file or directory. 
Cannot open SCSI driver!

i veig que no em reconeix el dispositiu, perquè està ocupat. Això s'ha de poder solucionar reiniciant la màquina o bé desmuntant-muntant el DVD.

sudo umount /dev/scd0

ara faig

sudo cdrecord -scanbus

i ja el troba


la línia que tinc a /etc/fstab per detectar el cdrom és: /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0

sudo mount /media/cdrom0

compte perquè el munta de només-lectura mount -t -o rw /dev/scd0 /media/cdrom0 de fet és correcte. Per disseny, els CD i DVD són de només lectura. Una altra cosa és que siguin gravables.


sudo cdrecord -v dev=1,0,0 driveropts=burnfree -format

formatar no m'ho deixa fer, però això sí:

sudo cdrecord -v dev=1,0,0 driveropts=burnfree -blank=all

sembla que va bé, però es queda penjat

cdrecord dev=1,0,0 speed=4 -v blank=fast 

funciona

Not all drives support all blanking types. http://howto-pages.org/cdwriting/13.php


$ sudo cdrecord -v dev=1,0,0 driveropts=burnfree -blank=session

ara sí que funciona i s'esborra el contingut que hi havia al CD

torno a cremar

$ sudo cdrecord -v dev=1,0,0 driveropts=burnfree -eject -data /home/joan/joan.iso

correcte.

Ara vull repetir el procés n vegades. El procediment correcte seria:

  1. crear la iso del que vull copiar;
  2. desmuntar;
  3. eliminar el contingut;
  4. copiar el contingut.

en comptes d'eliminar la sessió anterior també es pot obrir (destancar) la sessió anterior.

$ sudo cdrecord -v dev=1,0,0 driveropts=burnfree -blank=session
$ sudo mkisofs -D -r -J -o joan2.iso /home/joan/backup_alfresco/bb
$ sudo cdrecord -v dev=1,0,0 driveropts=burnfree -eject -data /home/joan/joan2.iso

no funciona

CD's multisessió

També és important l'opció

-multi		generate a TOC that allows multi session
$ sudo cdrecord -v dev=1,0,0 driveropts=burnfree -eject -multi -data /home/joan/joan2.iso

però no funciona, el CD conté la mateixa informació que teníem abans de desfer la sessió, i ni rastre del nou contingut que hi ha dins la iso com veuré ara mateix, l'opció -multi és més correcta, però hi ha més chicha.

http://howto-pages.org/cdwriting/08.php

$ sudo cdrecord dev=1,0,0 -msinfo
0,21390

This means that the previous session started at sector 0 (i.e. it was the first) and that this session will start at sector 21390.

You can now use this information in the mkisofs command line:

$ mkisofs -J -r -V Session2 -C 0,21390 -o joan3.iso /home/joan/backup_alfresco/bb

This has the effect of building a new filesystem and accounting for the fact that this session won't start at the beginning of the CD while generating the TOC.

però com es comenta en el link això no soluciona el problema, perquè els CD-ROM només llegeixen la última sessió. El que hem de fer és incorporar en la última sessió el contingut de les sessions prèvies, i això ho fem amb la comanda -M device:

$ mkisofs -D -J -r -V Session2 -C `cdrecord dev=1,0,0 -msinfo` -M 1,0,0 -o joan3.iso /home/joan/backup_alfresco/bb
$ sudo cdrecord -v dev=1,0,0 driveropts=burnfree -eject -multi -data /home/joan/joan3.iso

i a més d'aquesta manera no cal obrir la sessió anterior.

Per tant, ja he aconseguir fer gravacions a CD multi-sessió, que vol dir que puc anar acumulant informació sempre i quan el CD no es tanqui.

Recapitulant, només s'han de fer tres coses:

$ sudo umount /dev/scd0 -> només cal fer-ho quan diu ''Device or resource busy''.
$ mkisofs -D -J -r -V Session2 -C `cdrecord dev=1,0,0 -msinfo` -M 1,0,0 -o joan3.iso /home/joan/backup_alfresco
$ sudo cdrecord -v dev=1,0,0 driveropts=burnfree -eject -multi -data /home/joan/joan3.iso

Totes aquestes proves les he fet amb un CD-RW, però també hauria de funcionar amb un CD-R o CD+R.

er esborrar el contingut (blank)

cdrecord dev=1,0,0 speed=4 -v blank=fast

Not all drives support all blanking types. http://howto-pages.org/cdwriting/13.php

Script per fer còpies a CD-ROM

L'objectiu final és fer un script per automatitzar les còpies a CD-ROM

#!/bin/bash
# Joan Quintana Comtpe - 2008
# script backup_cd.sh: automatitzar còpies de seguretat a CD-DVD RW
# el script s'ha d'executar com a root
# el valor 1,0,0 és el que em dóna la comanda sudo cdrecord -scanbus

umount /dev/scd0
# el CD és multisessió. Hem de distingir entre quan encara no s'ha gravat cap sessió i quan ja tenim sessions grabades.
if ! [ `cdrecord dev=1,0,0 -msinfo` ] 
then
   mkisofs -D -J -r -V Session -o joan.iso /home/joan/backup_alfresco
else
   mkisofs -D -J -r -V Session -C `cdrecord dev=1,0,0 -msinfo` -M 1,0,0 -o joan.iso /home/joan/backup_alfresco
fi
cdrecord -v dev=1,0,0 driveropts=burnfree -eject -multi -data /home/joan/joan.iso

DVD-RW

http://ppa.launchpad.net/ubuntu-burning/ubuntu/pool/multiverse/c/cdrtools/

Fins ara he fet les proves amb un CD-RW, i ara ho vull provar amb un DVD-RW.

Ara bé, llegeixo que els DVD-RW no accepten multisessió (per a fer backups és millor un DVD+RW) i no aconseguiré un resultat satisfactori. La única cosa que aconseguiré és gravar la iso sencera al DVD-RW, i així i tot es queda penjat i no far el eject tot i que es grava bé el fitxer iso.

sudo apt-get install dvdrtools (inclou dvdrecord)
sudo dvdrecord dev=1,0,0 -msinfo

no obtinc informació, els DVD-RW no accepten multisessió

estic fent les proves amb un DVD-RW i no me n'en surto. La única cosa que puc fer és blanquejar el DVD i tornar a gravar.

no hi ha informació d'on s'acaba la pista, sempre diu 0,0 cdrecord dev=1,0,0 -msinfo

$ cdrecord dev=1,0,0 speed=4 -v blank=fast
$ mkisofs -D -J -r -V Session -o joan.iso /home/joan/backup_alfresco
$ cdrecord -v dev=1,0,0 driveropts=burnfree -eject -data /home/joan/joan.iso

aquestes tres comandes funcionen, tot i que sembla que es quedi penjat i no fa el -eject. De totes maneres, la iso es grava bé.

He llegit que per a fer backups de fitxers amb DVD el millor format és DVD+RW (jo he utilitzat DVD-RW perquè és el que utilitzo per a la videocàmera).

De totes maneres val a dir que la marca de la unitat de CD-DVD i el firmware que porten són unes variables a tenir en compte. És a dir, amb un altre hardware es podrien obtenir resultats diferents.

#!/bin/bash
# Joan Quintana Comtpe - 2008
# script backup_dvd-rw.sh: automatitzar còpies de seguretat a DVD-RW
# el script s'ha d'executar com a root

umount /dev/scd0
cdrecord dev=1,0,0 speed=4 -v blank=fast
mkisofs -D -J -r -V Session -o joan.iso /home/joan/backup_alfresco
cdrecord -v dev=1,0,0 driveropts=burnfree -eject -data /home/joan/joan.iso

ho fa bé, però no fa eject el DVD

DVD+RW

HINT: use dvd+rw-mediainfo from dvd+rw-tools for information extraction.

joan@userver:~$ dvd+rw-mediainfo /dev/scd0
INQUIRY:                [_NEC    ][DVD+-RW ND-6650A][102C]
GET [CURRENT] CONFIGURATION:
 Mounted Media:         1Ah, DVD+RW
 Media ID:              PHILIPS/041
GET [CURRENT] PERFORMANCE:
 Write Performance:     2.4x1385=3324KB/s@[0 -> 2295104]
 Speed Descriptor#0:    00/2295104 R@5.0x1385=6925KB/s W@4.0x1385=5540KB/s
 Speed Descriptor#1:    00/2295104 R@5.0x1385=6925KB/s W@2.4x1385=3324KB/s
READ DISC INFORMATION:
 Disc status:           blank
 Number of Sessions:    1
 State of Last Session: empty
 "Next" Track:          1
 Number of Tracks:      1
READ FORMAT CAPACITIES:
 unformatted:		2295104*2048=4700372992
 26h(0):		2295104*2048=4700372992
READ TRACK INFORMATION[#1]:
 Track State:           blank
 Track Start Address:   0*2KB
 Next Writable Address: 0*2KB
 Free Blocks:           2295104*2KB
 Track Size:            2295104*2KB
READ CAPACITY:          0*2048=0

aquests tres passos han funcionat

#sudo cdrecord dev=1,0,0 speed=4 -v blank=fast -> funciona

crec que abans ha funcionat, però en proves posteriors no ha funcionat.

mkisofs -D -J -r -V Session -o joan.iso /home/joan/how_to_ubuntu
cdrecord -v dev=1,0,0 driveropts=burnfree -eject -data /home/joan/joan.iso

amb el DVD+RW no cal blanquejar el DVD. Quan grabo una ISO la grabo a sobre i matxaco lo anterior, a no ser que aconsegueixi fer multipistes.

no es pot fer multipistes. La única opció que trobo és regravar tot el contingut cada cop que vull fer un backup

DVD+RWs and DVD-RW in Restricted Over-write (RO) mode are "over-writables" thus there is no need for multiple sessions and they have no capability for it. They both use different methods to accomplish over-write but from the user or programmer point of view, erasing and writing the new ISO takes place at the same time. These are my favorites because they are easy to implement and quick and easy to use. I'm lazy.

The main purpose of multi-sessioning is to allow data to be "appended" to a previously recorded disc. This infers that one of the requirements of the archiving is the need to preserve previously recorded data and not have it over-written. Thus +/- R would be the obvious choice. RWs are specifically designed to erase/over-write previously recorded data. In my opinion multi-sessioning is for Rs not RWs. I think multi-sessioning and erase/over-writing serve 2 different purposes. If you can determine which type best suits the requirements of your archiving, then you can decide if it is worth your time implementing multi-sessioning for DVD- sequential RWs

growisofs

http://www.cyberciti.biz/tips/howto-linux-write-burn-data-to-dvd-or-dvdrw.html

Amb el paquet mkisofs aconsegueixo que els DVD+RW i DVD-RW siguin multisessió en el sentit que puc anar afegint fitxers sense necessitat de matxacar lo anterior. A més a més, puc fer el format del DVD (cosa que fins ara no havia aconseguit).

per formatar el dvd (funciona)

$ dvd+rw-format -force /dev/dvd

Per ficar contingut en el DVD+RS, creem la imatge iso:

$ mkisofs -r -o joan.iso /home/joan/pdfs

Ara utilitzem growisofs per escriure la ISO al DVD:

$ growisofs -Z /dev/dvd=joan.iso

Per afegir més informació al DVD:

$ growisofs -M /dev/dvd /home/joan/curs_admin_linux 
       -Z /dev/dvd
              Burn  an initial session to the selected device. A special form of this option is recognized to support burning of pre-mastered images. 

       -M /dev/dvd
              Merge a new session to an existing one.

Miro si això funciona amb el DVD-RW: el format sí que funciona, i la gravació també funciona

la primera vegada que grabo, quan començo una sessió, he de fer -Z. ara bé, no cal que sigui una iso. També serveix:

$ growisofs -Z /dev/dvd /home/joan/curs_admin_linux

Per a fer eject, no veig que growisofs tingui cap opció, però tant se val perquè funciona perfectament fer

$ eject /dev/dvd

Conclusió

Amb tota aquesta informació és fàcil construir un script per a fer còpies de seguretat automàtiques a DVD+RW. Sense pensar-hi massa la idea seria més o menys la següent:

Com que el contingut a copiar d'un disc dur segurament supera els 4Gb, he de pensar que la majoria de la informació ja està copiada i ben guardada en un lloc segur. Per tant, m'interessa més que res copiar la informació dinàmica que va canviant entre setmanes. Per tant, s'haurà de modificar el script per dir quins són els directoris dinàmics, que poden canviar amb el temps.

Es programa un cron el dissabte a les 9 del matí, i el script finalitza amb un eject. S'envia un mail amb el contingut del log per assegurar-se de què tot ha anat correctament. Amb el DVD obert, es substitueix un DVD per un altre, i es tanca el DVD. El DVD acabat de gravar es posa a la cartera per tal que físicament estigui lluny del servidor. Passada una setmana, es torna a repetir l'operació i els DVD es van alternant. Sempre hi ha un DVD carregat a la safata esperant ser gravat.

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines