Fórum Ubuntu CZ/SK

Ostatní => Tipy a triky pro Linux => Téma založeno: existpierre 02 Února 2008, 21:25:46

Název: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: existpierre 02 Února 2008, 21:25:46
Zlozku /home mam na tom istom oddieli ako cely system. Podla Wiki navodu (http://wiki.ubuntu.cz/Z%C3%A1loha_a_obnova_syst%C3%A9mu?highlight=%28z%C3%A1loha%29%7C%28a%29%7C%28obnova%29) som si spravil skript pre zalohovanie, o ktory by som sa chcel s Vami podelit.

Najprv si vytvorte povedzme na plochu prazdny subor mybackup

pravym mysitkom na plochu - vytvorit dokument - prazdny subor

Klik nan pravym mystikom - prava - povolit spusenie suboru ako programu.

Otvorte ho a do neho vlozte tento kod:

Kód: [Vybrat]
#!/bin/bash

trap Prerusene INT

Prerusene()
{
echo
echo "Zalohovanie bolo prerusene uzivatelom!"
echo
exit
}

extractZnakVerzia()
{
najvacsieCislo=0
posunVerzia=$(($dlzkaStrFile - 4))
txtKon=${file:0:posunVerzia}
verzia=${txtKon:19}
}

extractZnakDatum()
{
posunZnak=$(($dlzkaStrFile - 17))
posunVerzia1=$(($dlzkaStrFile - $posunZnak))
txtKon1=${file:0:posunVerzia1}
extrDatum=${txtKon1:7}
}

NajvyssiaVerzia()
{

cislo=0
inc=0

for file in *.tgz; do
dlzkaStrFile=${#file}

case $dlzkaStrFile in
24 )
extractZnakVerzia
extractZnakDatum
if [ $extrDatum = $1 ]
then
inc=$(($inc + 1))
pVers[$inc]=$verzia
fi
;;
25 )
extractZnakVerzia
extractZnakDatum
if [ $extrDatum = $1 ]
then
inc=$(($inc + 1))
pVers[$inc]=$verzia
fi
;;
26 )
extractZnakVerzia
extractZnakDatum
if [ $extrDatum = $1 ]
then
inc=$(($inc + 1))
pVers[$inc]=$verzia
fi
;;
esac

done

dlzkaPoleVer=${#pVers[@]}

j=0

while [ $j -lt $dlzkaPoleVer ]; do
j=$(($j + 1))

    if [ ${pVers[$j]} -gt $najvacsieCislo ]  ; then
       najvacsieCislo=${pVers[$j]}
    fi


done


}

Titulok()
{
echo "##################################################"
echo "##################################################"
echo "##                                              ##"
echo "##         Zálohovanie systému   v2.1           ##"
echo "##                                              ##"
echo "##  Pred inštaláciou vypnite všetky aplikácie   ##"
echo "##                                              ##"
echo "##          created by existPierre              ##"
echo "##                                              ##"
echo "##                02.02.2008                    ##"
echo "##                                              ##"
echo "##################################################"
echo "##################################################"
echo
}

Zalohovat()
{
vCislo=1
txtZaloha="backup_"
suborDatum="`date +%d`_`date +%m`_`date +%Y`"
pripona=".tgz"

NajvyssiaVerzia $suborDatum

cVerzia="_v$najvacsieCislo"
celySuborNazov="$txtZaloha$suborDatum$cVerzia$pripona"
if test -e $celySuborNazov
then
echo -n "Najvyssia verzia je $najvacsieCislo, inkrementujem a vytvaram novu zalohu "
najvacsieCislo=$(($najvacsieCislo + 1))
cVerzia="_v$najvacsieCislo"
celySuborNazov="$txtZaloha$suborDatum$cVerzia$pripona"
echo $celySuborNazov
echo
echo -n "Proces zálohovania sa začne za: "
odpocit=5
for x in 1 2 3 4 5; do
echo -n "$odpocit "
odpocit=$(($odpocit - 1))
sleep 1.5
done
echo
 if sudo tar czf $celySuborNazov --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/sys --exclude=$cestaSkript$celySuborNazov /
 then
 echo
 echo  "Zálohovanie úspešne dokončené!"
 else
echo
echo  "Zálohovanie sa neskončilo korektne!"
 fi
else
echo -n "Neexistuje zaloha pre den $suborDatum, vytvaram "
najvacsieCislo=1
cVerzia="_v$najvacsieCislo"
celySuborNazov="$txtZaloha$suborDatum$cVerzia$pripona"
echo $celySuborNazov
echo
echo -n "Proces zálohovania sa začne za: "
odpocit=5
for x in 1 2 3 4 5; do
echo -n "$odpocit "
odpocit=$(($odpocit - 1))
sleep 1.5
done
echo
 if sudo tar czf $celySuborNazov --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/sys --exclude=$cestaSkript$celySuborNazov /
 then
echo
echo  "Zálohovanie úspešne dokončené!"
 else
echo
echo  "Zálohovanie sa neskončilo korektne!"
 fi

fi
}

clear
cestaSkript="Sem vlozte cestu k priecinku, kde sa ma zaloha ukladat"

if test -d $cestaSkript
then

cd $cestaSkript

if [ $# -eq 0 ]; then
Titulok
echo -n "Prajete si zálohovať systém?[a/n]: "
read zadanie
k=1
while [ $k -eq 1 ]; do
    case $zadanie in
      a | ano )
Zalohovat
k=0
;;
      n | nie )
k=0
exit
;;
      * )
echo -n "Napíš a/ano alebo n/nie: "
read zadanie
k=1
;;
    esac
done

else
case $* in
      --a | --ano )
Zalohovat
;;
      --n | --nie )
exit
;;
      --h | --help )
Titulok
echo "--a alebo --ano pre okamzite zalohovanie"
echo "--n alebo --nie pre zrusenie zalohovania"
echo "--h alebo --help pre pomoc"
echo "ctrl+c pre zrusenie zalohovania pocas jeho vykonavania "
echo
esac
fi
else
echo "Zadana cesta nebola najdena, program konci!"
exit 0
fi

Potom na 168. riadku si navolte cestu, kam sa ma ta zaloha ukladat

Kód: [Vybrat]
cestaSkript="Sem vlozte cestu k priecinku, kde sa ma zaloha ukladat"
Tento skript si pod rootom presunte do /bin zlozky

Kód: [Vybrat]
sudo mv ~/Plocha/mybackup /bin/mybackup
Potom uz len staci v konzole zadat

Kód: [Vybrat]
mybackup
Pre vsetky info mozte zadat

Kód: [Vybrat]
mybackup --help
Tak ako je to aj v title napisane, je odporucane mat pocas zalohovania vsetky aplikacie vypnute, koli korektnemu ukonceniu

Je to robene presne podla prikazu na wiki, takze ak mate ine vynimky, ktore nechcete zalohovat, doplne v prikaze. pozor je to tam dvakrat

enjoy :)
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: vlasto 21 Dubna 2008, 21:30:42
Jak se provede obnova této zálohy.?
Děkuji
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: existpierre 21 Dubna 2008, 21:40:41
Jak se provede obnova této zálohy.?
Děkuji

Ta je uz podla postupov, ktore sa nachadzaju na hore zmienenej wiki. Pretoze pustas liveCD, na ktorom sa ten skript nenachadza.
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: vlasto 22 Dubna 2008, 11:52:38
Potřebuji poradit.Mám Home jinde,dal jsem exclude na home a ono ho to stejně zálohovalo.Kde je prosím problém.
Děkuji
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: truhlik 22 Dubna 2008, 12:46:51
Poslete prikaz jakym jste zalohoval.
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: existpierre 22 Dubna 2008, 14:50:36
Potřebuji poradit.Mám Home jinde,dal jsem exclude na home a ono ho to stejně zálohovalo.Kde je prosím problém.
Děkuji

Bud nespravne zadany --exclude, alebo bol zadany len do jedneho prikazu v skripte, pricom som upozornoval, ze treba upravit oba. Pokial neexistuje v navolenom priecinku ziadna zaloha, spusti sa ten prvy prikaz, ktory ho pomenuje verziou 1. Ked uz daka verzia v tom dni existuje, spusti sa ten druhy, kde pred tym verziu inkrementuje. Tie prikazy su na riadku 132 a 155.
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: vlasto 22 Dubna 2008, 18:29:17
1.     if sudo tar cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/sys --exclude=/home --exclude=/backup.tgz /

2.     if sudo tar cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/sys--exclude=/home --exclude=/backup.tgz / 

Kde je prosím chyba?
Děkuji
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: truhlik 22 Dubna 2008, 19:01:02
1.     if sudo tar cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/sys --exclude=/home --exclude=/backup.tgz /

2.     if sudo tar cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/sys--exclude=/home --exclude=/backup.tgz / 

Kde je prosím chyba?
Děkuji
Chybi Vam tam mezera mezi slovama.
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: vlasto 22 Dubna 2008, 20:45:45
OK už to jede.Děkuji
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: 1x23 23 Dubna 2008, 06:40:43
na konci mi to hodi chybu,  :-[
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: existpierre 23 Dubna 2008, 21:31:47
myslis, to ze sa to neskoncilo korektne? Ak jo, tak si povypinaj pocas zalohovania vsetko. Ja mam vtedy zapnutu len online music a pidgina, najlepsie je zalohovat po restarte. Vtedy je najistejsie, ze sa to ukonci korektne. Pokial mas debian, mal by si ten mybackup pustit asi pod rootom, neviem ci idu zalohovat subory, na ktore nemas pravo pristupovat. Na toto by som chcel aj ja odpoved.

btw este som trosku upravil ten prikaz

     if sudo tar cvpzf $celySuborNazov --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/sys --exclude=$cestaSkript$celySuborNazov /

to pre istotu, aby nezalohoval zalohu (este rano tu bol prispevok ohlade tohoto)
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: existpierre 14 Září 2008, 23:29:07
Este male upozornenie, aj ja som si to vsimol po dlhsiej dobe co som niekolkokrat bol na wiki navode. V navode je spomenute, ze ked vrati script :

Kód: [Vybrat]
tar: Za behu programu nastala chyba

u mna

Kód: [Vybrat]
tar: Za behu programu nastala chyba

Zálohovanie sa neskončilo korektne!

mozte tu chybu odignorovat
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: nettezzaumana 15 Září 2008, 00:13:05
4 eXistPierre <<

ad.1) sudo ve skriptu? ehm ehm .. no nic .. v ubuntu je to asi nutne ..

ad.2) naprosto neprehledne .. ve jmenech promennych a funkci se pouziva podtrzitko // "_"
take se nekombinuje nahodile upper a lower case .. ve jmenech promennych se pouziva upper one a ve fcich lower ::

MAIN_VAR=$1;

main_fce() {
    # neco
}

ad.3) *vse* co testujeme je vhodne "$uvozovkovat"

ad.4) man echo

echo -e '\ntoto je to same aka\n';

echo
echo toto je to same aka
echo

cat << EOF;

toto je to same aka

EOF

ad.5) k cemu inicializovat promenne aka a=x; b=y; c=z abychom je pouzili via $a$b$c  ??? nestaci potom a=xyz ???

ad.6) nac presouvat skript do /bin, kdyz na nej potrebujeme rootovska prava ?? nedela se nahodou na zacatku jednou ::

if [ "$UID" -ne "0" ]; then
    echo "sorry kid ..";
    exit;
fi

ad.6) +tisic drobnych vychytavek aka for((x=0;x<10;x++)) { echo $x; }, mezer mezi bloky kodu, pouzivani a inicializovani promenych na oznaceni vyskoku z cyklu apod ..

rad bych skript vyzkousel, ale minimalne pro me je to naprosto neprehledny spaghetti code (http://en.wikipedia.org/wiki/Spaghetti_code), kterej chce heslo roota, takze ..

ad.x) kdyz uz teda zalohujes metodou "vypust jenom co je receno" (a ne opacne, tedy zalohuj co je receno), tak proc tam nejni excludnute treba /dev ???
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: nettezzaumana 15 Září 2008, 00:19:38
ad.y) ps. eXistPierre neber si to osobne, ale fandim vsem snazivym hochum a devcatum, a u Tebe si moc dobre pamatuju, ze jsi tady nekde resil i veci jako c/c++ a vubec .. to jsou me pripominky a nemyslim to konfrontacne .. kdybys to nebyl Ty, ale nejaky noname prispivatel, tak u takovehleho kodu nestravim ani minutu ..

zdravi ntz
Název: Re: [HOWTO] - Skript na zalohovanie systemu podla wiki
Přispěvatel: existpierre 15 Září 2008, 00:39:40
ad.y) ps. eXistPierre neber si to osobne, ale fandim vsem snazivym hochum a devcatum, a u Tebe si moc dobre pamatuju, ze jsi tady nekde resil i veci jako c/c++ a vubec .. to jsou me pripominky a nemyslim to konfrontacne .. kdybys to nebyl Ty, ale nejaky noname prispivatel, tak u takovehleho kodu nestravim ani minutu ..

zdravi ntz

robil som to podla wiki, bol to moj prvy skript a funguje to. co sa tyka upper a lower case, uz som si na taky zvykol. Ale ked budem mat cas, tak sa na to kuknem a skusim to cele zprehladnit. Aj ked uzivatelovi to moze byt sumafuk, ked to funguje tak ako ma. Viem ze sudo by malo byt pocas spusatnia app, ale ja som nejak lenivy a chcel som si to dat len ako mybackup a potom uz len zadat heslo.  ::)

neberiem si to osobne, skor dakujem za kritiku a tipy ;)