Cremar un CD des de la línia de comandes
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
- http://taosecurity.blogspot.com/2007/04/burning-cds-on-ubuntu.html
- http://howto-pages.org/cdwriting.php
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:
- crear la iso del que vull copiar;
- desmuntar;
- eliminar el contingut;
- 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.