Vypalování v příkazovém řádku

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 CLI 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.


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. 

$ mkisofs -v -J -R -o jmeno.iso /adresar/k/vypaleni

  • -v = ukecaný režim
  • -J = rozšíření Joliet (názvy souborů ve Win)
  • -R = rozšíření Rock Ridge (ostatní normální systémy)
  • -o = output – jméno výstupního ISO obrazu
  • -x = exclude – jména adresářů, které nebudou do obrazu zahrnuty

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ů. 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ě.


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.

V Praze 10.11.2006.

Příspěvek byl publikován v rubrice Linux a jeho autorem je michal. Můžete si jeho odkaz uložit mezi své oblíbené záložky nebo ho sdílet s přáteli.