OVH Community, your new community space.

Backup serwera na ftp.


seal
06-05-2012, 10:07
Jest taka stosunkowo prosta aplikacja backup-manager - tam można zdefioniwac co backupujemy z jaka czestotliwoscia i bazuje na tar z wykorzystaniem incrementów. Polecam do prostych spraw

rufus1987
06-05-2012, 00:47
Ja używam do tego virtualmina i zaplanowanych backupów gdzie mogę sobie ustawić co ma mi dokładnie wrzucić na backup ftp w jakich godzinach i po jakim czasie usunąć.

Można zrobić backup np samych plików lub plików i baz danych.

Linux admin
05-05-2012, 21:47
Dodatkowe pytanie to co zrobić aby backup był spójny czyli jak poradzić sobie z plikami, które sa modyfikowane w czasie backupu? Tu można np. użyć snapshotów LVM lub oddzielnie robić backup bazy danych dedykowanym narzędziem np. mysqldump aby backup nadawał się do odtworzenia. To oczywiście zależy czy serwer ma LVM i czy tego potrzebujemy, może np. nie być bazy danych na serwerze.

Rozwiązanie gotowego więc nie podam, bo każdemu potrzebne jest coś innego. Generalnie jednak używam tar do zrobienia backupu inkrementalnego.

Sprowadza się to więc do:

Stworzenia na potrzeby curl pliku /root/.netrc aby nie podawać hasła w linii poleceń co nie byłoby bezpieczne. Jego zawartość to:

machine NAZWA_SERWERA_FTP
login LOGIN_FTP
password HASŁO

Teraz robimy pełny backup np. katalogu home mniej więcej tak:

tar --one-file-system -g /root/home.snar -C /home -cj | curl -s -S -T - -n ftp://NAZWA_SERWERA_FTP/home-`date +'%Y-%m-%d_%H-%M-%S'`.tar.bz2
Kolejne wydanie tego polecenia zrobi backup inkrementalny (tylko zmienione pliki). Aby zrobić kolejny pełny należy usunąć plik /root/home.snar.

Czemu tak?
- --one-file-system nie wchodzi do innych systemów plików. Np. dla katalogu / nie zrobiłby backupu /proc
- -j - pakujemy za pomocą bzip2. Serwery backup FTP najczęściej są powolne, więc możemy ten czas przeznaczyć na lepsza kompresję i zaoszczędzić miejsce. Można też próbować z -J (format xz)
- curl - umożliwia przesłanie backupu bez tworzenia plików tymczasowych.

W praktyce polecam:
- Użycie snapshotów LVM aby backupy były spójne i nie było niespodzianki przy odtwarzania. Stwarza to jednak pewne ryzyko przy backupach inkrementalnych robionych poleceniem tar - zmiany niektórych plików mogą pozostać niewykryte.
- Bazy danych np. MySQL backupować ich narzędziami np. mysldump. Spowoduje to, że w czasie backupu baza zablokowana dla zapytań modyfikujących, ale odtwarzania bazy jest łatwiejsze. Możemy np. odtworzyć tylko jedną bazę, bez problemu odtworzymy backup na innej wersji MySQL itd.
- Włączyć binlog MySQL i backupować z mysqldump --master-data=2 co umożliwi odtworzenie bazy w dowolnym punkcie w czasie w razie pomyłkowego wydania np. DELETE FROM table bez WHERE - zdarza się

Moje skrypty dodatkowo umożliwiają kasowanie starego backupu dość inteligentnie - uwzględniając inkrementale backupy, monitoring backupów do systemu Zabbix (czy backup istnieje, czy nie jest za stary, czy nie jest podejrzanie mały, czy miejsce na FTP się nie kończy). Są więc robione pod specyficzne potrzeby i konfigurację, więc nie ma sensu ich podawać.

taken
05-05-2012, 21:02
Witam
Jak pewnie każdy z właścicieli dedyka w OVH zastanawiam się w jaki sposób robić backup serwera.
Na szczęście jest darmowa usługa "backup FTP" tylko pytanie jak....
Podchodząc logicznie przydał by się backup całego serwera - ale wiadomo dużo danych i katalogi /proc /dev nie są potrzebne, więc podstawa skryptu to aby był jakiś exclude odpowiednich katalogów których nie trzeba backupować. Dodatkowo dobrze by było aby za każdym razem nie pchał wszystkich danych przez sieć, lecz tylko nowe pliki bądź te które się zmieniły... bo oczywiście prosto spakować sobie /home /etc itd do plik.tar.gz/bz2 i pchac przez sieć, ale odzyskanie pojedynczego pliku to pchanie dużej ilości danych plus czas.
Koledzy podpowiedzieli mi aby zainteresować się fuse i curlftpfs - wszystko ładnie pięknie ftp pojawia się jako lokalny dysk twardy i można ślicznie rsync robić - ale niestety mój entuzjazm zniknął gdy dowiedziałem się, że to rozwiązanie jest MOCNO niestabilne i często zrywa sesje....

Czy ktoś z Państwa ma jakiś skrypt/rozwiązanie które można użyć produkcyjnie i mógłby się podzielić oczywiście spełniające warunki które podałem powyżej.

Pozdrawiam
TaKeN