Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2012-12-21 10:18:48

  bonus - Użytkownik

bonus
Użytkownik
Zarejestrowany: 2009-11-12

Weryfikacja poprawności wykonania kopii za pomocą skryptu ...

Witam oto mój skrypt do wykonywania kopii:

Kod:

#!/bin/bash
# skrypt kopi pelnych i roznicowych
# utworzony 22 pazdz 2012
# ostatnia zmiana 06.12.2012
# Bazuje na skrypcie Daniel O'Callaghan

#testowanie
#set -x 

#Dopasuj zmienne

DIRECTORIES="/root /etc /var"                   # katalogi do skopiowania
BACKUPDIR=/mnt/wesolek_medrek                          # miejsce przechowywania kopii
TIMEDIR=${BACKUPDIR}/last-full                  # folder z informacjami o czasie ostatniej pelnej kopii
TAR=/bin/tar                                # nazwa i lokalizacja tar'a
HOSTNAME=medrek                    # nazwa hosta
WYLACZ="--exclude=/var/run/* --exclude=/var/cache/*"
EMAIL=admin@mojafirma.pl

DOW=`date +%u`                      # Dzien tygodnia np. 1 = pon
DOM=`date +%d`                      # Dzien miesiaca np. 22 
DM=`date +%d.%m`                 # Dzien miesiaca np. 22.10

# Pierwszego dnia miesiaca zawsze wykonywana jest pelna kopia
# W kazda niedziele wykonywana jest pelna kopia nadpisujaca ostatnia niedzielna kopie
# Oprocz powyzszych wykonywana jest roznicowa kopia
# Kazda roznicowa kopia nadpisuje roznicowa kopie z poprzedniego tygodnia o tej samej nazwie
#
# jesli NOWSZE = "" wtedy tar kopiuje wszystkie pliki w katalogu
# w przeciwnym razie backupuje pliki nowsze niz NOWSZE 
# pobiera ich date z pliku zapisanego w kazda niedziele

mkdir -p ${TIMEDIR}

function FULL_M {
# Miesieczna pelna kopia
if [ ${DOM} = "01" ]; then
        NOWSZE=""
        ${TAR} ${NOWSZE} -cjpf ${BACKUPDIR}/${HOSTNAME}-${DM}.tar.bz2 ${DIRECTORIES} ${WYLACZ}
fi
}

function FULL_T {
# Tygodniowa pelna kopia
if [ ${DOW} = "7" ]; then
        NOWSZE=""
        TERAZ=`date "+%Y%m%d"` 
        # Zaktualizuj date pelnej kopii
        echo ${TERAZ} > ${TIMEDIR}/${HOSTNAME}-full-date
        ${TAR} ${NOWSZE} -cjpf ${BACKUPDIR}/${HOSTNAME}-${DOW}.tar.bz2 ${DIRECTORIES} ${WYLACZ} 

# Roznicowa kopia zapasowa - nadpisz poprzedni dzien tygodnia
else

        # Ustal date ostatniej pelnej kopii
        NOWSZE="--newer `cat ${TIMEDIR}/${HOSTNAME}-full-date`"
        ${TAR} ${NOWSZE} -cjpf ${BACKUPDIR}/${HOSTNAME}-${DOW}.tar.bz2 ${DIRECTORIES} ${WYLACZ} 
fi
}

FULL_M
FULL_T

W jaki sposób sprawdzić czy kopia wykonała się poprawnie? Powiem szczerze, że nie wiem jak korzystać z opcji walidacji  programu tar, może ktoś poda przykładową składnię bo jak próbowałem to zawsze jakiś błąd typu (nie znaleziono ...). W cron'ie obecnie mam zrobione przekierowanie wyjścia skryptu do

Kod:

| mail -s "MEDREK: kopia_okresowa.sh" admin@mojafirma.pl

. Jednak w tym przypadku standardowe wyjście błędów jest przekierowane na ekran, a nie do mail. Mógłbym wynik skryptu z błędami przekierować np. do pliku /tmp/logskryptu i odczytać go mail'em wysyłając sobie zawartość, ale czy można inaczej? Ponadto dla każdej funkcji miałem if'em weryfikacje wyniku echo $?, ale w przypadku gdy archiwizowany plik zmienił się podczas wykonywania polecenia tar to uzyskiwałem informacje o błędzie (a plik został chyba po prostu pominięty).

Ostatnio edytowany przez bonus (2012-12-21 10:40:11)

Offline

 

#2  2012-12-21 10:46:11

  bonus - Użytkownik

bonus
Użytkownik
Zarejestrowany: 2009-11-12

Re: Weryfikacja poprawności wykonania kopii za pomocą skryptu ...

Już się dokształciłem :), w cronie dodałem

Kod:

30 22 * * * nazwaskryptu.sh 2>&1 | mail -s "MEDREK: kopia_okresowa.sh" admin@mojafirma.pl

. Właśnie sprawdzam wynik tej zmiany.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)