Portál AbcLinuxu, 10. května 2025 03:06

Dotaz: zaloha adresare: tar

17.3.2008 23:36 Petr L.
zaloha adresare: tar
Přečteno: 1988×
Odpovědět | Admin
Zdarek.Vytvoril jsem si "skriptik" na zalohu /etc. Ale je to vrchol amaterismu, tak bych potreboval od Vas rady co a jak predelat a vylepsit. Tady je:
#!/bin/sh

CIL="/zaloha"
ZDROJ="/etc"
NAZEV="`date +'%Y%m%d%M'`.tar.bz2"

tar cfj $CIL/$NAZEV $ZDROJ

find $CIL -mmin +30 -print0 | xargs -0 rm -f

echo Zaloha $ZDROJ byla provedena...

Je to zkusebni verze, takze v cronu mam nastaveno spousteni kazdych 10 minut ( */10 * * * * /usr/local/scripts/zaloha > /var/log/zaloha.log ). Soubory starsi 30 minut se mi automaticky mazou. To je fajn. Ja bych ale potreboval:

1. aby mi hlaska zaloha /etc byla provedena... nesla jen do /var/log/zaloha.log, ale odeslala se i mailem.

2. jak do logu dostanu datum a cas zapisu?

3. aby me pro zmenu mailem nechodila hlaska tar: Removing leading `/' from member names .

4. aby mi hlaska z bodu 1 nechodila a stare soubory se nesmazaly, kdyz neco selze a nova zaloha se neprovede. Ale aby me treba prislo Zaloha se neprovedla..bla bla

5. a jeste se mi, prosim, podivejte, jestli by prikaz tar atd.. nesel nejak vylepsit..

Mockrat Vam dekuju.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.3.2008 00:31 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Odpovědět | | Sbalit | Link | Blokovat | Admin
1. příkaz mail, popř. sendmail nebo něco takového.

2. echo `date` ?

3. Google je dnes vypnutý? :-)

4. tar ... && find ... Ty dva ampersandy jsou takovým logickým and, viz man bash. Logickým or jsou dvě trubky: ||

5. Je to celkem dobrý - prostě to bude balit. Zato u toho findu je zbytečný xargs (zas tolik těch souborů tam nebude).

BTW. opravdu nechcete rdiff-backup? :-)
18.3.2008 06:51 cronin | skóre: 49
Rozbalit Rozbalit vše Re: zaloha adresare: tar
0. Zakladne citanie na dlhe vecery pre autora otazky: man sh

1. Mohla by stacit premenna prostredia MAIL na zaciatku crontab-u, ak je ziaduce ci akceptovatelne zapnut odosielanie vystupov mailom pre vsetky cron joby; viac man crontab.

2. Hadam by stacil aj samotny date, nie? :-)

3. Som rad, ze aj niekto iny ako ja dal takuto odpoved. Ale pozor na to, niektorych lenivcov takato odpoved tak znechuti, ze Ti ju budu najblizsich par mesiacov vykrikovat vo vsetkych diskusiach; to budes mat ako vdaku za to, ze si urobil pracu za nich.

5. Ten xargs mozno neriesi pocet suborov, ale nazvy suborov s medzerami a pod.; aj ked ak su tam len tie zalohy, tento pripad by nemal nastat. Akokolvek, riesenie s find a xargs je prenositelne a robustne.
18.3.2008 06:57 cronin | skóre: 49
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vytvoril jsem si "skriptik" na zalohu /etc. Ale je to vrchol amaterismu, tak bych potreboval od Vas rady co a jak predelat a vylepsit.
V principe si urobil spravnu vec: jednoduchy skript na riesenie jednoducheho problemu. Super, len tak dalej! Videl som jednoriadkove skripty, ktore spravne pomenovane a spravne umiestnene boli elegantne a genialne svojou jednoduchostou. Ako napisal Exupery: "Dokonalost je tam, kde nemozno nic odobrat, nie tam, kde nemozno nic pridat."
18.3.2008 09:20 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/bin/sh

CIL="/zaloha"
ZDROJ="/etc"
NAZEV="`date +%Y%m%d%M`.tar.bz2"

tar -cjf ${CIL}/${NAZEV} "$ZDROJ" 2>/dev/null &&
find "$CIL" -mmin +30 -print0 | xargs -0 rm -f

if [[ `echo $?` -eq 0 ]]; then
	echo -e "`date`\nZaloha "$ZDROJ" byla provedena." > /var/log/zaloha.log
	mail -s "zaloha "$ZDROJ"" prijemce@domena.cz <<-MESSAGE
`date`
Zaloha "$ZDROJ" byla provedena.
MESSAGE
	else
		echo -e "`date`\nZaloha "$ZDROJ" skonsila chybou!" > /var/log/zaloha.log
		mail -s "zaloha "$ZDROJ"" prijemce@domena.cz <<-MESSAGE
`date`
Zaloha "$ZDROJ" skonsila chybou!
MESSAGE
fi
18.3.2008 09:30 cronin | skóre: 49
Rozbalit Rozbalit vše Re: zaloha adresare: tar
#!/bin/sh
Si si isty, ze ten skript je shellovsky a nie bashovsky?
18.3.2008 09:37 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Jo máte pravdu, zapomněl jsem to přepsat. Díky za opravení chyby.
18.3.2008 10:59 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: zaloha adresare: tar
if [ "$?" -eq 0 ] ; then
provedena." >> /var/
18.3.2008 11:27 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
to jsem si uz prizpusobil, diky :)
18.3.2008 10:23 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mockrat Vam dekuju za rady. V tom bode 3 jsem si nebyl jisty, google jsem samozrejme pouzil, ale nejak jsem nepochopil, jak mi ten parametr zatoci s absolutnima cestama... Jsem rad i za malou pochvalu (snad jsem si to nevylozil spatne:) od cronina. Ted nevim, jestli se mam ubirat smerem rady od messy (bod 4) nebo pouzit skript od Honzy-S, ktery je urcite funkcni, ale nerad bych ho jen kopcil a nerozumel mu (samozrejme za nej moc dekuju)... No jdu si to jeste poradne procist, snad to nejak rozchodim. Mockrat Vam vsem dekuju, kdyby neco, tak se jeste (samozrejme po hledani:) ozvu...
18.3.2008 10:29 cronin | skóre: 49
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Jsem rad i za malou pochvalu (snad jsem si to nevylozil spatne:) od cronina.
Pochvala bola myslena uplne vazne.
Ted nevim, jestli se mam ubirat smerem rady od messy (bod 4) nebo pouzit skript od Honzy-S, ktery je urcite funkcni,
Tot dilema. Nastastie je tu v zapati riesenie:
ale nerad bych ho jen kopcil a nerozumel mu
Ja osobne uprednostnujem shellovske riesenia pred bashovskymi, uz len preto, ze to, co skriptujem, musi byt casto pouzitelne v Linuxe, BSD aj Solarise. No a napr. v takom FreeBSD defaultne bash nie je.
18.3.2008 11:29 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
dobre.. budu zkouset co se da:)
18.3.2008 10:34 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Chtěl bych jen pro jistotu upozornit, že ve výše uvedeném scriptu je potřeba řádek #!/bin/sh zaměnit za #!/usr/bin/env bash , jinak nebude fungovat.
Uvedený script můžete použít jako návod jak by se to dalo řešit a pomocí manuálových stránek nebo webu si dohledat, proč to tak je :-)
18.3.2008 11:29 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
tady me to fungovalo, i kdyz jsem napsal #!/bin/bash .. ale nevim proc...
18.3.2008 11:34 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Protože env spouští uvedené utitlity/programy v závislosti na nastaveném prostředí. Zatímco #!/bin/bash funguje pouze v případě, že se bash nachází pod uvedenou absolutní cestou.
18.3.2008 12:28 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Aha, dekuju za vysvetleni. Jeste se chci zeptat na jednu blbost, do jakeho adresare je nejlepsi zalohovat? Samozrejme potom zalohy, jednou za cas, vypalim na DVD. Nevim, jestli jsem to psal, ale mam Debian Etch.
Dalibor Smolík avatar 18.3.2008 13:55 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Do jakéhokoliv :-) Například /home/uzivatel/zaloha. Veškerá data, určená k zálohování se soustředí do tohoto adresáře a a celý tento adresář se vypálí na DVD. Pro úsporu místa je možné adresář zabalit (tar, zip, rar) a pak teprve vypálit. Dělám to přesně tak.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
18.3.2008 15:47 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Myslel jsem, jestli neni treba vhodnejsi /var/.... ... Abych nezakladal nove vlakno, chtel bych se jeste zeptat, co mam spatne v radku: find "$CIL" -mmin +120 -print0 | xargs -0m -f. Cron jsem nastavil, aby skript (stale jen zkusebne) provadel kazdou hodinu a mazaly se soubory starsi nez 2 hodiny (120 minut), ale vzdy se mi smazou vsechny a zustane jen posledni zaloha. Kdyz jsem to mel na tech napr. 30 minut, tak vsechno fungovalo bezvadne...
18.3.2008 15:51 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
BERU ZPET! mam v nazvu na konci minuty a nedoslo me, ze ten nazev se vytvoril vzdy stejny a prepsal puvodni - omlouvam se za zbytecnost.
Dalibor Smolík avatar 18.3.2008 16:05 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Ještě k tomu ukládání zálohy do /var ... proč ne, já mám /var v základním oddíle /, takže v případě nutnosti přeinstalace systému bych o data přišel. Tak to posílám kamkoliv do /home.
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
18.3.2008 18:24 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak je to tady s tema uvozovkama? find "$CIL" -mmin +30 -print0 | xargs -0 rm -f. Takhle to funguje, ale kdyz jsem tam dal dve "spojene" promenne nebo cestu /zaloha/etc_* , tak me skript vypsal, ze /zaloha/etc_* neni souborem ani adresarem. Kdyz jsem uvozovky zrusil, tak to slo. Nejak my z toho vyplyva, ze find "$CIL" -mmin +30 -print0 | xargs -0 rm -f je to same jako find $CIL/* -mmin +30 -print0 | xargs -0 rm -f . Nebo se pletu?
18.3.2008 18:51 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Pokud chcete zřetězit dvě a více proměnných nebo proměnnou a řetězec, použijte tuto syntaxi: ${$VAR}${$VAR2} .... nebo /zaloha/${VAR}
18.3.2008 18:54 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: zaloha adresare: tar
:-) takhle jsem to myslel (ale blbě napsal): ${VAR}${VAR2}
18.3.2008 19:07 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
dokonce i ja jsem znejistel :) takhle spravne to ted mam :) (ale asi jsem napsal tu otazku kostrbate, ptal jsem se trosku na neco jineho:)
18.3.2008 20:59 pavel
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Od honza-S je to správně:
[ales@pepa ~]$ ha=trdlo 
[ales@pepa ~]$ echo $ha 
trdlo
[ales@pepa ~]$ echo "$(echo $ha)neco/g"
trdloneco/g
[ales@pepa ~]$ echo "${ha}neco/g"
trdloneco/g

Ale:
[ales@pepa ~]$ echo "$haneco"

[ales@pepa ~]$ echo "$haneco/g"
/g
19.3.2008 09:19 Petr L.
Rozbalit Rozbalit vše Re: zaloha adresare: tar
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem tady zase:) Zalohy adresaru na serveru mi funguji. Tak jsem se pokusil upravit skript pro zalohu jedne win stanice. Vypada to, ze se vyzalohuje, ale do mailu mi prijde hlaska, ze zaloha nebyla provedena. Muzete se mi na to mrknout, kde muze byt chyba?
#!/usr/bin/env bash

# promenne
MOUNT="//jana-pc/D"
CIL="/usr/zaloha"
ZDROJ="/mnt/jana-D"
PREFIX="jana-D_"
POSTFIX=`date +%d%m%y`.tar.bz2
NAZEV=${PREFIX}${POSTFIX}

# primountuje sdilenou slozku Win
mount -t cifs ${MOUNT} ${ZDROJ} -o iocharset=utf8,codepage=1250,username=jana,password=jana

# vyzalohuje adresar $ZDROJ
tar -cjf ${CIL}/${NAZEV} "$ZDROJ" 2>/dev/null &&

# nalezne a smaze zalohy starsi xx dni
find ${CIL}/${PREFIX}* -mtime +7 -print0 | xargs -0 rm -f

# zasle informacni e-mail a zapise stav do logu
if [[ `echo $?` -eq 0 ]]; then
        echo -e "`date` Zaloha "$ZDROJ" byla provedena." >> /var/log/zaloha.log
        mail -s "zaloha "$ZDROJ"" root@example.net <<-MESSAGE

Dobry den,

   Zaloha "$ZDROJ" byla provedena v `date +%H:%M` `date +%d.%m.%Y`
   a je ulozena na serveru v "$CIL/$NAZEV"

                                       Vas zalozni server :)

MESSAGE
        else
                echo -e "`date` Zaloha "$ZDROJ" SKONCILA CHYBOU!" >> /var/log/za
                mail -s "zaloha "$ZDROJ"" root@example.net <<-MESSAGE

Dobry den,

   Zaloha "$ZDROJ" NEBYLA PROVEDENA v `date +%H:%M` `date +%d.%m.%Y`.

                                       Vas zalozni server :(

MESSAGE
fi
# end
Diky..
19.3.2008 10:10 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: zaloha adresare: tar
chyba je zde: find ${CIL}/${PREFIX}* -mtime +7 -print0

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.