= Kopia zapasowa i odtworzenie systemu eDokumenty (DRAFT) = Domyślne skrypty umieszczone są w lokalizacji /etc/cron.daily/backup_db. Przykładowe skrypty znajdują się pod poniższym [http://support.edokumenty.eu/trac/wiki/DeployerGuide/Others/LinuxBackupConfiguration linkiem]. Zrzuty bazy są wykonywane do katalogu /mnt/backup//edokumenty.sql.gz poniższym poleceniem: {{{ # 1 opcja - w kastomowym formacie postgresa su - postgres -c "pg_dump -O -Fc -Z9 edokumenty" > edokumenty.dump # 2 opcja - w formacie SQL (z kompresją gzip) su - postgres -c "pg_dump -c edokumenty -f ${DST}/edokumenty.sql" gzip -f ${DST}/edokumenty.sql }}} Ręcznie zrzut bazy wykonujemy poleceniem: {{{ pg_dump -U postgres -f edokumenty.sql edokumenty }}} gdzie -f edokumenty.sql to nazwa pliku bazy danych a następne edokumenty to nazwa bazy danych z której wykonujemy zrzut. Do odtworzenia systemu w nowej lokalizacji jeśli chcemy odtworzyć całość będziemy potrzebowali zawartości całego katalogu /home/edokumenty/ ze wszystkimi pod katalogami. Do testowego odtworzenia bazy wystarczy nam tylko {{{public_html}}} znajdujący się w powyższej lokalizacji. Spakowanie folderu {{{public_html}}} wykonujemy następującym poleceniem. Polecenie zawiera wykluczenie dla folderu plików tymczasowych, te nie będą nam potrzebne. Zalecane jest czyszczenie folderu plików tymczasowych. {{{ #przechodzimy do katalogu użytkownika su - edokumenty #tworzymy archiwum (bez zawartości katalogu tmp) tar -cvzf plik_archiwum.tar.gz --exclude 'public_html/apps/edokumenty/var/tmp/*' public_html }}} Odtwarzanie będzie zatem wymagało procedury zależnej od formatu: {{{ #1 - dla formatu kastom (można również przez PgAdmin) pg_restore -F c --dbname=edokumenty -U postgres edokumenty.backup #2 - dla formatu sql gzip -d edokumenty.sql.gz psql -U edokumenty -f edokumenty.sql edokumenty }}} = Procedura odtworzenia systemu = Należy wykonywać testowo co przynajmniej rok, w celu weryfikacji. Początkowe etapy zależne od infrastruktury. Procedura zakłada że nośnikiem jest dysk USB widoczny w systemie jako /dev/sdb1 * Montaż nowej maszyny * Instalacja systemu operacyjnego (może być z kopii ghostem) == 1. Podmontowanie nośnika z kopią zapasową == {{{ mount /dev/sdb1 /mnt/usbdisk }}} == 2. Przywrócenie konfiguracji systemu == Kopiujemy wszystkie pliki z katalogu system na system plików: Zawartość /mnt/usbdisk/system/ do głównego systemu plików. Odtwarzamy środowisko bazy danych. {{{ # Tworzenie użytkowników bazy danych (wszyscy z opcjami N) sudo -u postgres createuser --no-superuser --no-createdb --no-createrole http sudo -u postgres createuser --no-superuser --no-createdb --no-createrole edokumenty # Tworzenie baz danych sudo -u postgres createdb -E UTF8 edokumenty -O edokumenty sudo -u postgres createlang -d edokumenty plpgsql }}} Restart usług postgres, apache. == 3. Odtworzenie aplikacji eDokumenty == Kod źródłowy oraz pliki konfiguracyjne są już odtworzone - skopiowane zostały z katalogu system. Pozostaje odtworzyć pliki załączników oraz bazę danych: === 3.1 Odtworzenie plików === cp -rp /mnt/usbdisk/files /home/edokumenty/ === 3.2 Odtworzenie bazy danych === Przechodzimy do katalogu z ostatnią kopią {{{ cd /mnt/usbdisk/db/3 gzip -d edokumenty.sql.gz sudo -u postgres psql -U postgres -f edokumenty.sql edokumenty }}} === 3.3 Przywrócenie repozytorium === {{{ #cp /backup/repos.dump /home/edokumenty/repos.dump #chown www-data /home/edokumenty/repos.dump #su - www-data $cd /home/edokumenty $svnadmin create repos #(jeśli nie zostało założone - czyli brak katalogu repos) $svnadmin load --force-uuid repos < repos.dump }}} == Dodatkowe informacje == Dla długotrwałych czynności, aby nie blokować konsoli i uniknąć rozłączenia należy użyć polecenia screen, które pozwala utworzyć niezależny terminal. {{{ #screen #su - www-data $svnadmin load ... (lub inne długo wykonywalne polecenia) $importowanie ... $plik 1 $plik 2 Ctrl-A D [Detached] }}} W czasie wyświetlania dowolnych komunikatów można użyć sekwencji sterujących: Ctrl-A D (Wcisnąć Control-A, puścić a następnie nacisnąć klawisz D), wyświetlony zostanie komunikat [Detached]. Następnie można zamknąć konsolę główną (np. konsole, putty) bez obawy o przerwanie procesu. Jeżeli chcemy skontrolować proces wówczas w dowolnej innej sesji można użyć polecenia screen -r (ewentualnie screen -ls i screen -r id.host, jeżeli mamy kilka sesji screen) === Komendy dla WIN === Aby stworzyć kopię bazy należy wpisać w konsoli {{{ pg_dump -U postgres -f NazwaPliku.sql NazwaBazyZapisywanej }}} Aby kopię bazy odtworzyć należy wpisać w konsoli {{{ psql -U postgres -f NazwaPliku.sql NazwaBazyWktórąOdtwarzamy }}}