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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1

Użytkownik


Witam oto mój skrypt do wykonywania kopii:
#!/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_TW 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
| 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

Użytkownik


Już się dokształciłem :), w cronie dodałem
30 22 * * * nazwaskryptu.sh 2>&1 | mail -s "MEDREK: kopia_okresowa.sh" admin@mojafirma.pl
. Właśnie sprawdzam wynik tej zmiany.
Offline
Strony: 1