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 ).