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
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_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
| 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
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