zalohovani adresare spustene v cronu

Pavel Janík Pavel na Janik.cz
Pátek Duben 5 22:06:53 CEST 2002


   From: "Kozlik Roman, Ing." <kozlik na hour.sk>
   Date: Wed, 3 Apr 2002 10:19:40 +0200

Zdravím,

   > P.S. Prosim vsetkych linux-guruov o zhovievavost pri kritike, je to
   > moj prvy script a spachal som ho na prvom skoleni :) Pre moje potreby
   > vsak funguje spolahlivo, aj ked existuju efektivnejsie sposoby zalohy.

:-)) Velmi si vážím Vaší otevřenosti. Myslím, že se nemáte za co
stydět, právě naopak. Ne všichni lidé jsou toho schopni. Prosím neberte to
jako kritiku, ale jako návod k tomu, jak tento skript udělat jinak. Je to
prostě jenom jiný názor:

   > # vymaz povodny subor ak existuje
   > if [ -f $zalozny_subor ]; then
   > rm -rf $zalozny_subor
   > fi

Příkaz rm jste použil se dvěma parametry. Parametr -r slouží
k rekurzivnímu výmazu obsahu adresáře. Zde tedy není nutný (ale nic
nezkazí, tedy alespoň pokud $zalozny_soubor není adresář). Parametr -f
slouží (kromě jiného, podrobněji viz info rm) i k tomu, aby nechyboval na
neexistujících souborech. Tyto čtyři řádky potom můžete nahradit řádkem
jedním (komentář už u jednoho řádku jistě potřebovat nebudete):

   rm -f $zalozny_soubor

Na konci tohoto skriptu máte příkaz exit 0. Ten není nutné ve skriptech
uvádět, protože jím vlastně ukončíte instanci příkazového interpretu
spuštěnou právě pouze pro vykonání tohoto skriptu. Nicméně příkaz exit je
posledním příkazem, který by byl proveden, proto je jeho efekt pouze ten,
že zahodíte návratovou hodnotu programu mail. Myslím tedy, že jej klidně
můžete vypustit.

Takže po první iteraci bude tento soubor vypadat takto:

--- cut here ---
#!/bin/sh

zalozny_subor=/home/dark/zalohy/zaloha`date +%y%m%d`.tar.gz
rm -f $zalozny_subor

tar --exclude-from ~/zaloha-excludes -czf $zalozny_subor /etc /var/safe /var/neomail/neomail.conf
uuencode $zalozny_subor $zalozny_subor | mail user
--- cut here ---

Co tedy můžeme udělat s takovým souborem nyní? Mažeme soubor a pak ho zase
vytváříme. To je zbytečné. Program tar naprosto suverénně již existující
soubor $zalozny_subor klidně vytvoří znovu, jako by neexistoval a nemusíme
jej tedy mazat. Zůstane nám tedy:

--- cut here ---
#!/bin/sh

zalozny_subor=/home/dark/zalohy/zaloha`date +%y%m%d`.tar.gz

tar --exclude-from ~/zaloha-excludes -czf $zalozny_subor /etc /var/safe /var/neomail/neomail.conf
uuencode $zalozny_subor $zalozny_subor | mail user
--- cut here ---

Pokud byste ten soubor přímo na disku nikdy nepotřeboval (stačí-li kopie
e-mailem), můžete ještě pokračovat dále:

--- cut here ---
#!/bin/sh
tar --exclude-from ~/zaloha-excludes cO /etc \
                                        /var/safe \
                                        /var/neomail/neomail.conf |
   uuencode /home/dark/zalohy/zaloha`date +%y%m%d`.tar.gz | mail user
--- cut here ---

Atd.
-- 
Pavel Janík

MS: a debilitating and surprisingly widespread affliction that renders
the sufferer barely able to perform the simplest task.
                  -- Mel White in private e-mail


Další informace o konferenci Linux