Zarejestruj się na BitBay.net
Home > Linux > Prosty backup danych

Prosty backup danych

Korzystając na co dzień z scentralizowanych zasobów danych szczególnie w erze tzw. „cloud computing”, zdajemy sobie sprawę z tego jak ważnym zagadnieniem jest backup danych. W prawdzie istnieje wiele programów zapewniających bezpieczny backup np. świetny Yosemite Technologies Backup and Recovery Software lub HP Backup and Recovery Manager, nie mniej jednak nie są to rozwiązania tanie szczególnie dla firm stawiających pierwsze kroki na rynku. Przedsiębiorstwa te potrzebują znacznie prostszych i tańszych rozwiązań, które można osiągnąć w bardzo prosty sposób, a wszystko dzięki dobrodziejstwu open source. Stawiając w firmie na otwarte technologie praktycznie od razu wyposażeni jesteśmy w proste mechanizmy zapewniające możliwość wykonywania kopii zapasowych. Poniżej bardzo prosty skrypt dla linuxa realizujący następujące zadania:

  • wykonuje kopię wybranego katalogu wraz z całą zawartością
  • ma możliwość wykluczenia (exclude) wybranych typów plików które nie muszą znajdować się w kopii np. pliki tymczasowe tmp itd.
  • kompresuje dane za pomocą popularnego zip’a
  • zakłada bardzo proste zabezpieczenie w postaci hasła na archiwum
  • trzyma 3 ostatnie kopie wstecz
#!/bin/bash

in='/dane/program';
out='/mnt/sdb1/backup';

##########################
# Tworzenie archiwum ...  #
##########################
echo ''
echo "Godzina "`date +%R`". Tworzenie archiwum ..."
echo ''

cd $out

#Rotacja kopii

if test -f dzien3.zip
then rm -f dzien3.zip
fi

if test -f dzien2.zip
then mv dzien2.zip dzien3.zip
fi

if test -f dzien1.zip
then mv dzien1.zip dzien2.zip
fi

#Kompresja danych
zip -9 -P JakiesHaslo -r $out/dzien1.zip $in -x@/$out/exclude.lst

W pliku exlclude.lst zamieszczamy listę plików które nie mają być kopiowane np:

*.cdx
*.sem
*.pak
*.pri
*.tmp

Dodatkowo skrypt możemy uzupełnić o kilka linijek realizujących kopiowanie danych na dowolnie udostępniony zasób w sieci.

#!/bin/bash

in='/dane/program';
out='/mnt/sdb1/backup';

##########################
# Tworzenie archiwum ...  #
##########################
echo ''
echo "Godzina "`date +%R`". Tworzenie archiwum ..."
echo ''

cd $out

#Rotacja kopii
if test -f dzien3.zip
then rm -f dzien3.zip
fi

if test -f dzien2.zip
then mv dzien2.zip dzien3.zip
fi

if test -f dzien1.zip
then mv dzien1.zip dzien2.zip
fi

#Kompresja danych
zip -9 -P JakiesHaslo -r $out/dzien1.zip $in -x@/$out/exclude.lst

################################
# Kopiowanie danych na inny komputer #
################################

#montowanie zasobu
mount -t cifs -o username="Jan",password="HasloJana" //192.168.1.5/kopie /mnt/Jan

cd /mnt/Jan

#Rotacja kopii na zdalnym komputerze
if test -f dzien3.zip
then rm -f dzien3.zip
fi

if test -f dzien2.zip
then mv dzien2.zip dzien3.zip
fi

if test -f dzien1.zip
then mv dzien1.zip dzien2.zip
fi

#kopiowanie najnowszej kopii
cp $out/dzien1.zip /mnt/Jan

#odmontowywanie zasobu
cd /
umount /mnt/Jan

echo ''
echo "Godzina "`date +%R`". koniec tworzenia archiwum ..."
echo ''

Tym sposobem mamy 3 ostatnie kopie na severze, plus 3 ostatnie kopie na innym komputerze w sieci na wypadek awarii servera.

Ostatnią rzeczą jaką należy zrobić jest dodanie skryptu do crona celem automatycznego wykonywania o określonych dniach i godzinach. Można to zrobić na kilka różnych sposobów. Poniżej zmodyfikowany plik /etc/crontab z Fedory:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=Jan@costam.pl
HOME=/root

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
35 1 * * * root /mnt/sdb1/backup/backup.sh

Ostatnia linijka odpowiada za wywołanie skryptu codziennie o 1:35 w nocy. Dodatkowo na naszego e-maila zostanie wysłany raport z przebiegu wykonywanych zadań. Bardzo ważne jest pozostawić wolną linijkę pod ostatnią instrukcją w pliku /etc/crontab, inaczej masze zadanie nie będzie działać.

Pewnie zadacie pytanie a, co w przypadku kopii na systemach Windows? Tutaj oprogramowanie Opne Source także przychodzi nam z pomocą. Najlepszym znanym mi i udostępnionym na licencji GNU programem do sporządzania kopii pod windowsa jest Cobian Backup. Cobian Backup to darmowy program do synchronizacji oraz archiwizacji danych na całym dysku twardym lub w konkretnych folderach. Program umożliwia tworzenie kopii danych na serwerach FTP, możliwe jest wysyłanie i odbieranie plików. Aplikacja wspiera kompresję danych oraz kodowanie (RSA-Rijndael).

Podobne: Prosty backup MySQL z pomocą PHP lub Basha

Kategorie:Linux Tagi:,
  1. Tomasz
    Styczeń 11th, 2010 at 16:43 | #1

    Era „could computing”, to co prawda „cloud computing”, ale artykuł ok. Są jakieś open source’owe podejścia do tematu w przypadku platformy Windows? Przydałoby mi się 🙂

  2. Listopad 18th, 2010 at 19:06 | #2

    W przypadku Windowsa, stosujemy jakiś Opne Source’owy soft na „Cobian Backup”, lub piszemy skrypty BAT. Można też po prostu doinstalować basha i korzystać z rozwiązania powyżej.

  1. Listopad 18th, 2010 at 19:10 | #1

*