Backup serwera www na Linuksie

Serwer www na Linuksie np. LAMP Linux Apache MySQL PHP jest najpopularniejszym zestawem oprogramowanie do stworzenia platformy serwerowej pod strony www. Takie środowisko wymaga tworzenia kopii zapasowych w razie wystąpienia awarii. Metod jest kilka. 

I ogólna przykładowa procedura tworzenia backupów serwera www na linuksie

  1. Backup plików - ścieżka to zwykle /var/www/folderstrony tar
  2. Backup bazy danych mysqldump
  3. Kopiowanie backupów na sieciowy serwer ftp i trzymanie 5 ostatnich backupów curl oraz find
  4. Stworzenie skryptu automatyzującego zadania .sh
  5. Stworzenie crona uruchamiającego skrypt crontab
  6. Jeśli serwer www jest zwirtualizowany to można wykonywać kopie całej maszyny

 II Backup plików strony

Założenia: Backup całego folderu zawierającego stronę (jest to jakiś CMS). W linuksie zwykle jest to /var/www/ Archiwizowanie poleceniem Tar do folderu docelowego na razie na tym samym dysku. Dodatkowo zrzucenie wyników sukces lub błąd do odpowiednich plików z logami.

  1. Zarchwiwizowanie folderu /var/www/akademia_xxx do pliku akademia-xxx-files.tar.gz w folderze /var/www/akademia_xxx
    tar cvfzP /home/administrator/backupy_akademia_xxx/akademia-xxx-files.tar.gz /var/www/akademia_xxx
  2. Do powyższego polecenia dodajemy logowanie do plików akademia-xxx-tar-log.log oraz akademia-xxx-tar-error.log
    tar cvfzP /home/administrator/backupy_akademia_xxx/akademia-xxx-files.tar.gz /var/www/akademia_xxx > /home/administrator/backupy_akademia_xxx/log/akademia-xxx-tar-log.log 2> /home/administrator/backupy-akademia-xxx/log/akademia-xxx-tar-error.log
  3. W kolejnym kroku zmieniamy nazwę pliku poleceniem mv aby dodać do niej format daty i czasu. Potrzebujemy tego aby pliki miały różne nazwy inaczej ciągle nadpisywałby się jeden plik. Zatem dodajemy kod `date +%F_%H%M` dołączając go do wynikowej nazwy pliku z przodu.
    mv /home/administrator/backupy_akademia_xxx/akademia-xxx-files.tar.gz /home/administrator/backupy_akademia_xxx/`date +%F_%H%M`_akademia-xxx-files.tar.gz

III Backup bazy danych

Założenia: Stworzenie pełnej kopii bazy danych strony na MySQL

  1. Na początek sprawdzamy nazwę bazy danych. Logujemy się do mysql i wydajemy polecenie SHOW DATABASES;
    mysql -u root -p
    SHOW DATABASES;
  2. Teraz używając polecenia mysqldump stworzymy plik backupu całej bazy. Ogólna składnia jest następująca
    mysqldump -hlocalhost -uroot -ppassword nazwabazy > database_backup.sql
     
  3. Teraz zmodyfikujemy składnię do naszego przykładu
    mysqldump -hlocalhost -uroot -pmojehaslo akademia_xxx > /home/administrator/backupy_akademia_xxx/akademia-xxx-database.sql
     
  4. Tak jak w przypadku polecenia tar zmieniamy stworzone nazwy plików na unikatowe aby się nie nadpisywały - tym samym systemem z dodaniem formaty czasu i daty.
    mv /home/administrator/backupy_akademia_xxx/akademia-xxx-database.sql /home/administrator/backupy_akademia_xxx/`date +%Y%m%d`_akademia-xxx-database.sql
     

IV Kopiowanie backupów na sieciowy serwer ftp

Założenia: kopiowanie stworzonych plików na zewnętrzną lokalizację sieciową. W tym przypadku jest to sieciowy dysk NAS z włączoną usługą FTP.

  1. Poleceniem curt -T wyślemy oba pliki .tar.gz oraz .sql na lokalny dysk sieciowy na serwer ftp. Najpierw plik tr.gz
    curl -T /home/administrator/backupy_akademia_xxx/`date +%Y%m%d`_akademia-xxx-files.tar.gz ftp://admin:This email address is being protected from spambots. You need JavaScript enabled to view it./akademia-xxx-backup/
     
  2. Teraz plik z bazą danych.
    curl -T /home/administrator/backupy_akademia_xxx/`date +%Y%m%d`_akademia-xxx-database.sql ftp://admin:This email address is being protected from spambots. You need JavaScript enabled to view it./akademia-xxx-backup/
     
  3. Polecenie find z odpowiednimi parametrami spowoduje zachowanie ostatnich pięciu plików backupu w lokalizacji źródłowej więc kopiować się będzie zawsze ostatnich 5 najnowszych. Jako, że crone (o czym poniżej) jest ustawiony na wykonanie skryptu 2 razy na dobę plików będzie 20 - po 10 z .sql i 10 tar.gz)
    find /home/administrator/backupy_akademia_xxx -type f -mtime +5 -delete
     

V Stworzenie skryptu automatyzującego zadania

Założenia: Chcemy aby wszystkie powyższe zadania wykonywały się automatycznie. Skrypt przed uruchamianiem z crona należy dokładnie przetestować.

  1. Tworzymy plik np. make-akademia.backup.sh i edytujemy go na edytorem nano
  2. Przykładowy skrypt dla tego konkretnego przypadku będzie wyglądał tak
    tar cvfz /home/administrator/backupy_akademia_xxx/akademia-xxx-files.tar.gz /var/www/akademia_xxx
    
    mv /home/administrator/backupy_akademia_xxx/akademia-xxx-files.tar.gz /home/administrator/backupy_akademia_xxx/`date +%Y%m%d`_akademia-xxx-files.tar.gz
    
    mysqldump -hlocalhost -uroot -ppassword akademia_xxx > /home/administrator/backupy_akademia_xxx/akademia-xxx-database.sql
    
    mv /home/administrator/backupy_akademia_xxx/akademia-xxx-database.sql /home/administrator/backupy_akademia_xxx/`date +%Y%m%d`_akademia-xxx-database.sql
    
    curl -T /home/administrator/backupy_akademia_xxx/`date +%Y%m%d`_akademia-xxx-files.tar.gz ftp://admin:This email address is being protected from spambots. You need JavaScript enabled to view it./akademia-xxx-backup/
    
    curl -T /home/administrator/backupy_akademia_xxx/`date +%Y%m%d`_akademia-xxx-database.sql ftp://admin:This email address is being protected from spambots. You need JavaScript enabled to view it./akademia-xxx-backup/
    
    find /home/administrator/backupy_akademia_xxx -type f -mtime +5 -delete

VI Stworzenie crona uruchamiającego skrypt

  1. W ustawieniu crona bardzo pomocne będzie narzędzie online Crontab Guru https://crontab.guru/
  2. Uruchamiamy narzędzie crontab z uprawnieniami administratora (użytkownika, który ma uprawnienia do uruchamiania crona) sudo crontab -e i dodajemy odpowienie wpisy. W tym przypadku crone będzie uruchamiał skrypt make-akademia-backup.sh dwa razy na dobę o godzinie 00:00 i o 12:00
  3. Sprawdzenie poprawności wykonywania backupów. Jak widać stworzone na serwerze www pliki kopii strony i bazy prawidłowo zostały przekopiowane na dysk sieciowy do foldery FTP.
     

VII Kopia całej wirtualnej maszyny

  1. O wykonywaniu eksportu całej maszyny wirtualnej pisaliśmy w tym artykule: Skrypt eksportu maszyn Hyper-V

 

Nie wiesz jaki hosting wybrać? Polecamy dhosting!

link do strony el12