Proč se zajímat o vypalování v příkazovém řádku když existuje tolik nejrůznějších programů s pohodlným grafickým rozhraním? Třeba proto, že je tento způsob nezávislý na tom, zda je v systému onen program s grafickým rozhraním nainstalovaný. V podstatě ani nemusí být spuštěn systém X window, přesto si lze v pohodě vypálit placku. To se může hodit při záchranných operacích na poškozeném systému kdy je potřebné uchovat data uložená na disku, ale třeba i pro pravidelné zálohování dat bez zásahu uživatele. A to byl vlastně hlavní důvod proč jsem se o vypalování v TUI (text user interface) nebo také CLI (command line interface) začal zajímat.
Podotýkám, že řeč je pochopitelně o vypalování v operačním systému unixového typu. Nejsem si vědom, že by něco podobného bylo možné v systému Microsoft Windows. Dále předpokládám, že vypalovačka je správně nainstalovaná a funguje, protože její oživení není předmětem tohoto článku. Jdeme na to.
Vytvoření ISO obrazu
Nejdříve si musíme připravit data, která chceme vypálit. Je potřebné vytvořit ISO obraz budoucího
CD nebo DVD disku. Dělá se to takhle:
$ mkisofs -v -J -R -o jmeno.iso /adresar/k/vypaleni
Takto vytvořený obraz již můžeme vypálit.
Smazání CD-RW, DVD+-RW
Připravený obraz můžeme vypálit buď na obyčejné médium CD či DVD, nebo můžeme použít
přepisovatelné, které však před použitím musíme zpravidla vymazat. Následujícím příkazem provedeme
tzv. rychlé vymazání CD:
# cdrecord -v speed=x dev=/dev/hdc blank=fast
Za "x" pochopitelně dosadíme rychlost tak aby ji naše mechanika zvládla (mělo by to fungovat i bez
uvedení parametru speed) a případně upravíme cestu k zařízení vypalovačky, pokud to není /dev/hdc.
Pro vymazání DVD+-RW disku použijeme příkaz:
# dvd+rw-format -blank /dev/hdc
Jméno souboru zařízení může být v závislosti na typu systému také /dev/dvd.
Vypálení ISO obrazu
Předem připravený obraz máme někde na disku, médium je připravené, můžeme tedy vypalovat.
Vypálení iso obrazu na CD:
# cdrecord -v speed=x dev=/dev/hdc -data /cesta/k/jmeno.iso
A na DVD:
# growisofs -Z /dev/dvd=/cesta/k/image.iso
--use-the-force-luke=dao
(zadat v
jediném příkaze)
Parametr --use-the-force-luke mi není moc jasný, v manuálové stránce k programu
growisofs popsán není, nicméně bez něj mi to nejelo.
Vypálení DVD "ON THE FLY"
Vypálení DVD tzv "za letu", bez vytváření ISO obrazu je také možné, a to příkazem:
# growisofs -Z /dev/dvd -R -J -speed=2.0 --use-the-force-luke=dao /neco/k/paleni
Parametry -R, -J a -speed mají stejný význam jako při pálení CD. Nicméně, tímto způsobem můžeme vypálit
jen celý obsah vstupního adresáře.
Proto, chceme-li vypálit jen některé podadresáře ze vstupního
adresáře, musíme použít program mkisofs s parametrem -x. Aby bylo možné i takto pálit
DVD "za letu", musíme si vytvořit tzv. "pojmenovanou rouru". Pojmenovaná roura je, jednoduše
řečeno, uzel v souborovém systému, kterým spojíme činnost dvou programů, mkisofs a growisofs.
Program mkisofs tvoří obraz disku ze zadaných adresářů k pálení a "sype" data do této
roury. Paličský program growisofs tato data čte a pálí. Mimo jiné to má ten efekt, že
na disku nemusíme vytvářet soubor velký víc než 4 GB, ale současně, pokud z nějakého důvodu v
rouře "dojdou" data (mkisofs je nestihne dodávat), palič zkolabuje a zničenou placku si můžeme
položit pod hrnek. Chce to po dobu pálení trochu opatrnosti se zatěžováním stroje.
Pojmenovanou rouru v systému vytvoříme jednoduše:
# mknod jmeno_roury p
"p" jako pipe - roura
Vypálení DVD s využitím roury provedeme takto:
(celý příkaz musí být zadán na jediném řádku)
# mkisofs -v -J -R -o /cesta/k/rouře -x /co/se/ma/vynechat
-x /co/taky/vynechat /co/se/ma/vypalit | growisofs
-Z /dev/dvd=/cesta/k/rouře --use-the-force-luke=dao
Znak "|" uprostřed mezi příkazy je znak označující rouru.
Využití pálení CD a DVD v příkazovém řádku
Jak již bylo uvedeno na začátku, hlavním cílem bylo zautomatizovat zálohování dat v počítači tak,
abych tím strávil co nejméně času. To co je výše popsáno to umožňuje téměř dokonale. Stačí
jednotlivé příkazy poskládat do skriptu spustitelného v příkazovém řádku. Jeden takový jsem si
napsal:
#! /bin/bash
echo Kopíruji adresář /etc...
cp -R -a -f -p -u /etc /home/michal/Dataapl/Nastaveni
sleep 2
echo Kopíruji adresář /boot...
cp -R -a -f -p -u /boot /home/michal/Dataapl/Nastaveni/jadro
sleep 2
echo Vytvářím pojmenovanou rouru /home/michal/fifo.iso...
mknod /home/michal/fifo.iso p
sleep 2
echo Mažu DVD...
dvd+rw-format -blank /dev/hdc
echo DVD smazáno
sleep 2
echo Vypalování
mkisofs -v -R -J -o /home/michal/fifo.iso -x /home/michal/MyMusic -x /home/michal/MyVideo -x /home/michal/Zaloha /home/michal | growisofs -Z /dev/dvd=/home/michal/fifo.iso -use-the-force-luke=dao
echo Palič skončil...
sleep 2
echo Mažu rouru fifo.iso...
rm /home/michal/fifo.iso
sleep 2
Skript je velmi primitivní, znalci namítnou, že neobsahuje žádné mechanismy například pro
ošetření situací, kdy se data nevejdou na médium, nebo kdy jej nespustím s právy roota apod. To
je pravda, ale jedná se o účelovou záležitost pro jeden konkrétní stroj s předem známými
podmínkami provozu a v této situaci tedy docela postačí. Prostě po práci vložím přepisovatelné DVD do
mechaniky a spustím s právy roota příkaz zalohuj a jdu domů. Ráno placku vytáhnu a
je to. Abych pojistil i situace, kdy počítač po mém odchodu třeba vybuchne i se všemi bajty v něm
obsaženými, mám tato DVD dvě - jedno doma a jedno v práci a zálohuji tímto způsobem průběžně na
obě, podle toho, kde zrovna Elizabeth (jméno mého počítače :-) je.
Připojení ISO obrazu do adresářového stromu
Na závěr už jen maličkost. Někdy se může hodit, že v linuxu si můžeme připojit obraz disku ve
formátu ISO 9660 do adresářového stromu a pracovat s ním jako by se jednalo o soubory na
vypáleném CD nebo na disku.
Dělá se to takhle:
# mount /cesta/k/obrazu.iso /kam/pripojit -o loop
Využití tento příkaz najde v situaci, kdy máme na disku třeba obraz instalačního disku operačního
systému a potřebujeme z něj vytáhnout nějaký soubor, třeba ovladač. Obraz připojíme a soubor si
zkopírujeme.
No a to je vše. Snad to bude k užitku.
V Praze 10.11.2006.