How Can We Help?
< All Topics
Print

V-SMART instalacja partycje i tworzenie kopii

Kopia bezpieczeństwa to podstawa spokojnego snu informatyka. Pierwszym etapem instalacji v-smart jest instalacja debiana. W celu wykonania obrazu systemu dobrze jest w trakcie instalacji podzielić nasz dysk na partycje. Należy zwrócić uwagę :

  • najpierw tworzymy partycję główną od początku , flaga boot, punkt podłączenia / , więcej niż 20 GB
  • partycja swap od końca dysku, rozmiar 1 GB
  • partycja backup w środku dysku, reszta , preferuję typ fat32

Na obrazach poniżej przedstawiłem istotne elementy podziału na partycje.

Do tworzenia kopii użyjemy system rescue. Za pomocą komend startx lub wizard uruchamiamy środowisko graficzne ( bardziej zaawansowani użytkownicy mogą wykonać kopie w środowisku tekstowym ). Za pomocą narzędzia gparted możemy zobaczyć w sposób graficzny podział dysku.

Często jest tak, że mamy już gotową instalację linuxa i nie mamy partycji na wykonanie kopii zapasowej. Za pomocą gparted możemy pozmieniać rozmiary partycji i wstawić partycje backup

Gdy już nasz dysk jest odpowiednio przygotowany uruchamiamy nowy terminal , podłączamy partycję i za pomocą partimage wykonujemy obraz systemu.

Trzeba jednak pamiętać , że jest to kopia utworzona na dysku lokalnym , który oczywiście może się uszkodzić. Do komputera podłączamy ( jeśli nie był podłączony wcześniej ) zewnętrzny dysk USB. Znów uruchamiamy partimage. Aby partimage zobaczył dołączony dysk USB musimy odświeżyć urządzenia ( refresh devices ). W przypadku USB 1.1 operacja ( i potem kopiowanie ) może być trochę czasochłonne. Na dysku USB powinniśmy mieć partycję fat32 na nasze kopie. Znajdujemy jej nazwę w systemie linux

Do wykonania kopii na zewnętrznym dysku musimy mieć podłączoną partcyję backup z dysku w komputerze oraz partcyję docelową za pomocą komendy mount. W terminalu uruchamiamy Midnight Commander ( mc ) i kopiujemy nasz obraz.


Kopia bezpieczeństwa wykonana według powyższego opisu jest związana z określonym komputerem i konfiguracją. Aby odtworzyć tą konfigurację na innym komputerze lub innej konfiguracji sieciowej należy zwrócić uwagę na pliki :

plik zawiera kiedy zmieniać
/etc/network/interfaces podstawowe zewnętrzne łącze, łącze wewnętrzne przy zmianie konfiguracji sieci (adresy IP)
/etc/rc.local pozostałe łącza przy zmianie konfiguracji sieci (adresy IP)
/etc/hostname nazwa komputera przy zmianie całej instalacji
/etc/hosts dane domeny przy zmianie całej instalacji
/etc/udev/rules.d/70-persistent-net.rules dane kart sieciowych ( mac ) przy zmianie kart sieciowych

Automatyczny backup bazy i istotnych katalogów można wykonywać sposobem opisanym na forum v-smart. Poniżej zmodyfikowany opis tej procedury.

Łączymy się z naszym serwerem przez putty i wprowadzamy :

wget http://files.v-smart.pl/features/backupsys.tar.gz
tar -xf backupsys.tar.gz --directory=/home

Modyfikujemy tabelę zadań crona

nano /etc/cron.d/vsmart

 i dopisujemy

23 5 * * *       root    /home/backupsys/scripts/backup.sh

!!! Uwaga przed i po słowie root musi być tabulator !!!

W pliku /home/backupsys/scripts/db.conf ustalamy parametry połączenia z bazą danych.

LMS przechowuje swoje kopie bezpieczeństwa w /var/www/backups .

Standardowo LMS nieprawidłowo zapisuje kopie zewnętrzne.Aby rozwiązać ten problem poprawiamy plik /var/www/modules/dbview.php

Zamieniamy

header('Content-Length: '.$filename);

na :

header('Content-Length: '.filesize($filename));

Zgodnie z obowiązującymi przepisami providerzy internetowi mają obowiązek zapisywać w logach ruch ip. Funkcję tę możemy włączyć w v-smart. Ruch sieciowy będzie zapisywany do plików syslog. Pliki syslog na serwerze v-smart są przechowywane w /var/log i mają nazwy

  • syslog
  • syslog1
  • syslog2.gz
  • syslog3.gz
  • syslog4.gz
  • syslog5.gz
  • syslog6.gz
  • syslog7.gz

Jak widać logi 2-7 są kompresowane, dlatego skrypt ściągający logi może np. ściągać codziennie syslog2.gz

W pliku /serwer/skrypty/firewall.sh po limitach połączeń dodajemy zaznaczoną linię

# limit polaczen na portach powyzej 1024
$IPTABLES -A FORWARD -s $INTNET1 -p tcp --dport 1024: -m connlimit --connlimit-above $CONNLIMIT --connlimit-mask 32 -j REJECT --reject-with tcp-reset
$IPTABLES -A FORWARD -s $VPNNET1 -p tcp --dport 1024: -m connlimit --connlimit-above $CONNLIMIT --connlimit-mask 32 -j REJECT --reject-with tcp-reset
$IPTABLES -A FORWARD -o $EXTDEV -s $INTNET1 -p tcp -m state --state NEW -j LOG --log-level info --log-prefix "SYN-INTNET1 "

Ale plik syslog jest po 7 dniach usuwany. Dlatego należy ten ruch zapisywać na naszym lokalnym komputerze.


W celu przygotowania tej kopii niezbędne jest wykonanie opisanej w poprzedniej części konfiguracji kopii.

Na początek tworzymy katalog : /home/backupsys/arch_lastdbs . W katalogu tym będzie zapisywana najnowsza kopia bazy danych. Kopia ta będzie automatycznie pobierana przez komputer zewnętrzny. W celu ograniczenia rozmiaru do bazy nie będą dołączane kopie statystyk.

Modyfikujemy plik /home/backupsys/scripts/config.conf ( dodajemy konfigurację APATH_lastdbs , zmienną APATH_lastdbs ustawiamy na utworzony krok wcześniej katalog )

 

# basic config
GROUP=root
DEBUG=0
BTIME=14
APATH=/home/backupsys/arch
DIRS=/home/backupsys/scripts/dirs.conf
DBS=/home/backupsys/scripts/dbs.conf
APATH_lastdbs=/home/backupsys/arch_lastdbs

Modyfikujemy skrypt  /home/backupsys/scripts/backup.sh , ustawiamy aby katalog ostatniej bazy był czyszczony a następnie aby do tego katalogu zapisywała się ostatnia kopia, ustawiamy tworzenie kopii tak , aby pomijało statystyki.

#!/bin/bash
## by v-smart.pl of koz xD
. /home/backupsys/scripts/config.conf
# check what to remove
j=1;
for i in `ls -t $APATH`; do
if [ ${j} -ge ${BTIME} ]; then
if [ ${DEBUG} = '1' ]; then
echo "removing directory ${APATH}/${i}";
fi
rm -frd ${APATH}/${i};
fi
j=$(($j + 1));
done
rm ${APATH_lastdbs}/*
# let's back it up!
DATE=`date +'%F'`;
DATELONG=`date +'%F.%H.%M'`
if [ ${DEBUG} = '1' ]; then
echo "making directory ${APATH}/${DATE}/dir";
echo "making directory ${APATH}/${DATE}/db";
fi
mkdir -p ${APATH}/${DATE}/dir;
mkdir -p ${APATH}/${DATE}/db;
# directory backup
grep "^[^#]" ${DIRS} | while read DIR; do
FILE=dir`echo $DIR | tr '/' '-'`_${DATELONG}.tar.gz
tar --directory=${DIR}/.. -pzcf ${APATH}/${DATE}/dir/${FILE} `basename ${DIR}` 1> /dev/null 2> /dev/null
done
# database backup
grep "^[^#]" ${DBS} | while read DBNAME DBUSER DBPASS; do
/usr/bin/mysqldump -d -u ${DBUSER} --password=${DBPASS} --add-drop-table --add-locks ${DBNAME} > ${APATH}/${DATE}/db/${DBNAME}_${DATELONG}.sql
/usr/bin/mysqldump -u ${DBUSER} --password=${DBPASS} --add-drop-table --add-locks ${DBNAME} --ignore-table=lms.stats >> ${APATH}/${DATE}/db/${DBNAME}_${DATELONG}.sql
# nazwa rozumiana przez lms : ${DBNAME}-"$(date +%s)"-2011032500.sql , jednak przy probie odtworzenia przez lms nie dziala, nalezy odtwarzac np. przez phpmyadmin lub bezposrednio z poziomu shella
gzip ${APATH}/${DATE}/db/${DBNAME}_${DATELONG}.sql 1> /dev/null 2> /dev/null
cp ${APATH}/${DATE}/db/*.gz $APATH_lastdbs
done
chown -R ${USER}.${GROUP} ${APATH}

W systemie windows tworzymy skrypt backup.bat , który będzie się łączył przez psftp ( jeśli nie mamy psftp można je pobrać ze strony putty , zalecam instalację całego pakietu putty ) z serwerem vsmart i pobierał najnowszą wersję bazy. Załóżmy , że nasz serwer znajduje się pod adresem 192.168.20.1 Skrypt powinien wyglądać następująco :

F:
del /Q "F:\Backup\my_network\LMS_ARWAL\*"
"C:\Program Files (x86)\PuTTY\psftp.exe" 192.168.20.1 -l root -pw mypassword -b D:\FTP\LMS_backup.txt
move /Y "F:\Backup\my_network\syslog.2.gz" "F:\Backup\my_network\syslog\syslog_%date%_odejmij1.gz"

Na początku tego skryptu kasujemy zawartość katalogu my_network. Nie kasujemy jednak podkatalogów. W rzeczywistości jest kasowana ostatnia baza lms ściągnięta z serwerem. Następnie uruchamiany jest  skrypt który wywołuje psftp z komendami zawartymi w  D:\FTP\LMS_backup.txt. Skrypt ściąga aktualną kopię bazy oraz ostatni plik syslog2.gz ( historia ruchu sieciowego ). Historia ruchu sieciowego ma zmienianą nazwę i jest przenoszona do podkatalogu syslog

Plik komend psftp wygląda następująco :

cd /home/backupsys/arch_lastdbs
lcd F:\Backup\my_network\my_LMS
mget *.gz
cd /var/log
mget syslog.2.gz
bye

Skrypt pobiera z serwera kopię .gz oraz plik syslog2.gz i zapisuje je w katalogu kopii zapasowej. Kopię zapasową można tak rozbudować aby dotyczyła wszystkich dostępnych  serwerów VSMART i mikrotik ( więcej informacji o kopii bezpieczeństwa dla systemu mikrotik ).

 

 

Table of Contents