- na unixových serverech patří pravidelné zálohování
dat kompetence systémového administrátora
- běžný uživatel potřebuje uložit aktuální stav
důležitých souborů či připravit data pro distribuci a instalaci
na jiných výpočetních systémech
- nejužívanějšími médii pro zálohování jsou
magnetické pásky, výměnné disky a pro menší
objem dat diskety
- techniky zálohování:
- tar a cpio pro uložení i obnovení
dat. Pokud zařízení (např. DAT) samo nepracuje
s kompresí, je vhodné data zkomprimovat (
compress, pack)
- klasické příkazy backup
a restor
- komerční systémy pro zálohování všech strojů
v síti, založené většinou na některém z uvedených
příkazů
- připojení zformátované diskety s vytvořeným svazkem
souborů (příkaz mkfs) k systému
souborů pevného disku počítače
(příkaz mount)
- pracujeme-li na unixovském stroji z dosovského
počítače, můžeme potřebné soubory zálohovat
ve formátu MS-DOS na našem počítači pomocí
ftp či NFS.
V tomto případě důsledně oddělovat media pro Dos a
Unix, jinak nepříjemná překvapení!
- před použitím je třeba samozřejmě novou disketu
nebo někdy i magnetickou kazetu zformátovat pod
Unixem, příkazy se liší v konkrétních instalacích
(např. format) .
- názvy speciálních datových souborů jsou dány
uzancemi jednotlivých systémů
- zjistí se např v
man tar cpio či
ls /dev
- např. bývá
- /dev/fd0 první disketová jednotka
- /dev/fd1 druhá disketová jednotka
- /dev/rmt0a první magnetická páska s převinutím
(přepíše celý archiv na pásce)
- /dev/nrmt0a první magnetická páska bez převinutím
(přidává další data zakonec existujícího archivu)
- každé externí zařízení musí být přimontováno do
systému souborů
- pevné automaticky při startu systému
- výměnné před použitím a nejsou-li potřeba se
odmontují
- externí zařízení se přimontujek k prázdnému
adresáři svazku souborů pevného disku (bývá
k dispozici adresář /mnt)
- dále se odkazujeme na externí zařízení
jako na tento adresář.
mount [
speciální_soubor adresář]
bez parametrů příkaz vypíše aktuálně přimontovaná
zařízení.
Před odmontováním externího zařízení je třeba
opustit příslušný adresář.
umount [
adresář]
Př.
Přimontování disketové jednotky č. 1, zkopírování
souborů začínajících tečkou na disketu
a její odmontování:
cd
mount /dev/fd0 /mnt
cp .* /mnt
umount /mnt
du -a
vypíše počet bloků (1024kB), které zabírají
soubory v aktuálním adresáři
tar [volby]
[soubor...]
Základní volby:
f zařízení ukládá se
na zařízení
c vytvoření archivu
(starý archiv přepíše)
u pokud soubor neexistuje v archivu
nebo jde o novou verzi, přidá jej do archivu
x extrakce souborů z archivu
t výtisk obsahu archivu
v vydává zprávy o práci na
obrazovku
Uvede-li se jako argument adresář, pracuje se všemi
podřízenými adresáři
Vytvoření nového archivu
- nutné rozlišit účel archivace:
- zadají-li se absolutní jména souborů
tar takto soubory uloží a při extrakci souborů
z archivu obnoví na ve stejných adresářích -
existující bez varování přepíše
- pokud však chceme archivovaná data obnovit v
jiném adresáři bez nebezpečí nežádoucího přepsání
dat původních (doporučuji),
použijeme vždy relativních jmen!
tar cvf /dev/fd0 $HOME
Př.:
Uložení souboru .profile
z našeho domovského adresáře s relativním jménem
(aby si ho mohl extrahovat kdokoliv ve svém adresáři)
cd $HOME
tar cvf /dev/fd0 ./.profile
Výpis archivu
tar tvf /dev/fd0
Extrakce souborů z archivu
Z bezpečnostních důvodů doporučuji archivovat
soubory s relativními jmény a extrahovat je
v dočasném adresáři a pak přesunout
na požadovaná místa.
Př.:
mkdir /tmp/moje
cd /tmp/moje
tar xvf /dev/fd1 ./.profile
more .profile
mv ./profile $HOME
- Příkaz cpio je filtr, který kopíruje vstupní soubory do
jednoho výstupního souboru
- standardně zapisuje a čte
z nich po znacích
- k urychlení vhodné použít
volby -B pro blokové operace
- pro ukládání souborů do archivu je
volba -o
- pro čtení archivu volba -i
- volba -v opíše na obrazovku jména souborů,
s nimiž příkaz manipuluje
- -t vypisuje archiv.
Vytvoření nového archivu
Př.:
Soubory v aktuálním adresáři
(bez souborů, jejichž jména začínají tečkou)
uložíme na disketu takto:
ls | cpio -oB >/dev/fd0
Př.:
Příkaz cpio ukládá pouze soubory v definovaném
adresáři, nikoliv soubory v případných
podadresářích. Chceme-li uložit všechny
soubory aktuálního adresáře
( i soubory s tečkou na začátku jména),
použijeme triku
find . -print | cpio -oB > /dev/fd0
Výpis archivu
cpio -it < /dev/fd0 | more
Extrakce souborů z archivu
cpio -iB < /dev/fd0
- příkazy tar a cpio
ukládají data v původním tvaru do sekvenčního
souboru
- pro větší objemy vhodné archiv zkomprimovat
- k dispozici příkazy
compress/
uncompress
a
pack/unpack
compress název...
zkomprimuje soubor název do
souboru název.Z a původní soubor smaže
Zkomprimované soubory se dekomprimují příkazem
uncompress název...
Př.
Komprimace souborů
hlavni.c, proc.c a hl.h v aktuálním adresáři do
souborů hlavni.c.Z, proc.c.Z a hl.h.Z.
compress *.c *.h
K jejich dekomprimaci se napíše
uncompress *.c *.h
Obdobně (s jiným algoritmem) pracuje dvojice
příkazů pack a
unpack, která pro komprimované
soubory používá příponu z.
Př.:
pack *
unpack *
- shellovské skripty mohou realizovat triviální funkce i složité
programové systémy
- shell využívá a obhospdařuje řadu proměnných prostředí
- akce při přihlášení a nastavení proměnných prostředí lze
zapsat do inicializačních skriptů .profile pro sh, rep. .login pro csh;
csh má ještě skript .logout, který se vykoná při odhlášení.
- shell není jen interpret příkazů, ale i výkonný programovací
jazyk, zde jen zcela triviální minimum
- skript (scénář) je textový soubor do něhož zapíšeme řadu
příkazů, které chceme vyvolávat jedním příkazem
- napíše se v libovolném textovém editoru
- aby mohl být spuštěn, musí mít práva pro čtení a zápis - tj.
např. spustitelný všemi:
chmod a+rx soubor
- má-li být spustitelný v Bournově či Kornově shellu, může ale
nemusí být jeho prvním příkazem významný komentář (# uvozuje
komentář):
#!/bin/sh
- má-li být spustitelný v C shellu, shellu, musí
být jeho prvním příkazem významný komentář
#!/bin/csh
Př.:
Scénář zaloha
, který zálohuje domácí adresář
do souboru darchiv,
a zápis obsahu archivu do
souboru denik.darchiv a archiv posléze zkomprimuje:
#!/bin/sh
#
#Zaloha domaciho a podrizenych adresaru na disketu /dev/fd0
#a pridani zapisu do deniku
#
echo "START ZALOHOVANI"
cd
tar cvf darchiv ./*
echo "Nova zaloha:" >> denik.darchiv
date >> denik.darchiv
tar tvf darchiv >> denik.darchiv
echo ===========================================
compress darchiv
echo "KONEC ZALOHOVANI"
Shell nastavuje a používá řadu proměnných, některé z nich:
- HOME
- domácí adresář
- PATH
- seznam adresářů s příkazy, oddělených dvojtečkou,
jinak je třeba je volat s úplnou cestou, bývá např.:
PATH=/bin:/usr/bin:.
- LOGNAME
- uživatelské jméno
- SHELL
- aktuální shell
- MAIL
- poštovní adresář
- MAILCHECK
- došlá pošta se kontroluje každých MAILCHECK sekund
- TERM
- jméno používaného terminálu
- PS1
- primární výzva shellu, očekává zadání příkazu (standardně
$, % #)
- PS2
- sekundární výzva shellu, očekává pokračování příkazu na dalších
řádkách (standardně > )
- Bournův shell
- nejprve se při každém přihlášení vykoná globální scenář,
vytvořený administrátorem - /etc/profile
- je-li v domovském adresáři soubor .profile, pak se vykoná (uživatel
může měnit standardní nastavení proměnných shellu, vykonat různé
příkazy )
- C shell
- při přihlášení se nejprve vykoná globální scenář,
vytvořený administrátorem - /etc/csh.login
- je-li v domovském adresáři soubor .login, pak se vykoná (uživatel
může měnit standardní nastavení proměnných shellu, vykonat různé
příkazy )
- při narození každé instance C shellu se vykoná scénář .cshrc, pokud
je v domovském adresáři
- navíc je možno definovat akce při odhlášení ze systému scénářem
.logout rovněž v domovském adresáři
Př.:
Napíšeme .profile, který při každém přihlášení:
#!/bin/sh
echo "Dobry den!"
date
cat /etc/motd
calendar
PS1="`uname`:`pwd`>"
umask 022
- Brodský J., Skočovský L. Operační systém UNIX a jazyk C. SNTL Praha, 1989
- Jelen M. UNIX V. Programování v systému. GRADA Praha 1993
- Macur J. X-Window. Grafické rozhraní operačního systému UNIX. SCIENCE, Veletiny 1994
- Skočovský L. Principy a problémy operačního systému UNIX. SCIENCE, Veletiny 1994
- Sova M. UNIX V. Úvod do operačního systému. GRADA Praha 1991
- Norton P., Harley Hahn. Průvodce Unixem. Český překlad UNIS Brno, 1993
- Thomas R., Yates J. A User Guide to the UNIX system. McGraw-Hill, Berkley, 1985
- Welsh M. Linux Installation and Getting Started. Volně na síti Internet. 1996.