Na wstępie wyjaśnienie, skąd ten wpis. Na forum Blox co jakiś czas pojawiają się osoby, które straciłydorobek paru lat życia. Znaczy takie, których blog – z różnych przyczyn – przestał być dostępny. I zniknęły cenne wpisy (pół biedy, bo to ludzie czasem mają zapisane lokalnie) oraz jeszcze cenniejsze komentarze. Widziałem narzekania na administrację Blox, gorzkie żale, próby wyciągania treści z cache Google itp. hardcore, na dodatek nie zawsze skuteczny. Wszystko niepotrzebnie, bo ww. opisanym tragediom[1] można w prosty sposób zapobiec robiąc backup bloga. Oczywiście problem nie dotyczy tylko Blox, tak samo może zdarzyć się na innych platformach.
Trzeba uświadomić sobie dwie rzeczy. Po pierwsze, blog, a dokładnie jego zawartość jest treścią tworzoną samodzielnie, przez długi okres czasu, trudno odtwarzalną. Szczególnie, jeśli uwzględnimy komentarze. Po drugie, żaden serwis, a już na pewno nie darmowy, nie daje specjalnych gwarancji na to, że dane nie znikną. Jasne, zwykle nie znikają. Co więcej, jeśli nawet znikną, to zwykle administracja serwisu ma backup, który może przywrócić. Jednak awarie i błędy ludzkie (samodzielne skasowanie notatki lub bloga) się zdarzały, zdarzają i będą zdarzać.
Przed takimi sytuacjami można w prosty sposób się zabezpieczyć robiąc samemu backup swojego bloga. Szansa, że nastąpi awaria krytyczna awaria w dwóch różnych miejscach, jest pomijalna. Tak naprawdę samo jednorazowe skopiowanie to jedno polecenie, jeśli chcemy zautomatyzować, warto skorzystać z prostego skryptu. Wybrałem wariant najprostszy, z użyciem programu wget, dostępnego w każdej dystrybucji Linuksa[2], który powinien działać na każdej platformie blogowej (udostępniającej wszystkie wpisy bez logowania), a tworzy backup, który można bezpośrednio wgrać na dowolny serwer WWW i treść będzie od razu dostępna i wyglądająca praktycznie identycznie, jak na blogu. Oczywiście po takim przywróceniu działać będzie tylko odczyt, bez możliwości dodawania komentarzy itp. Co prawda średnio da się z tego automatycznie przywrócić w pełnej formie czy przenieść na inny silnik blogowy, ale najważniejsza rzecz, czyli treść, jest zachowana.
Backupowane są strony z wpisami (i oczywiście komentarzami), hostowane lokalnie zdjęcia i skrypty JS. W przypadku Blox także te strony statyczne, do których jest „przejście” przy pomocy linków. Nie są bacupowane strony, do których nie ma przejścia, linkowane strony, materiały umieszczone na zdalnym hostingu (np. muzyka umieszczona na soundcloud). Najlepiej i najprościej uruchomić i samemu sprawdzić, co się pobrało. Przy zmianie szablonu i linkowań może rzecz jasna dojść do zmiany zawartości nowych backupów.
Koniec tego przydługiego, ale koniecznego moim zdaniem wstępu. Prawda jest taka, że najsłabszym ogniwem jest człowiek i jeśli nie uruchomi się automatycznego backupu, to w najpotrzebniejszym momencie danych nie będzie. A samo się nie włączy. Czyli klasyczne ludzie dzielą się na tych, którzy robią backupy i tych, którzy będą je robić.
Do rzeczy. Aby zrobić automatyczny backup bloga korzystam z polecenia:
wget -q -m -p -E -k http://rozie.blox.pl
Opcje (krótko): q – brak wyświetlania wyjścia, m – mirror, p – ignorowanie poziomu rekursji, E – konwersja plików do HTML niezależnie od rozszerzenia, k – konwersja linków na lokalne. Bardziej szczegółowy opis każdej opcji w pomocy programu.
Cały skrypt dla Linuksa, który można dodać do crona, żeby raz na jakiś czas się uruchamiał – poniżej. Wersja moja, trzeba sobie dostosować. Łatwo daje się przerobić na backupowanie kilku blogów.
Mam nadzieję, że będzie parę tragedii mniej. Chętnie usłyszę uwagi do tego sposobu i propozycje poprawy. Jakby ktoś chciał popełnić dokładny opis dla Windows, to zapewne ludziom się to bardziej przyda.
Przydatne linki (stąd wiem, że działa także dla Blogspot i WordPress, a także podpatrzyłem kilka opcji):
Automatyzacja backupu bloga Blogspot
Automatyzacja backupu bloga WordPress
[1] Tak, nabijam się. Zawartość bloga, konta na FB czy µbloga nie jest dla mnie tak ważna. Ale wiem, że niektórzy podchodzą do tego inaczej.
[2] Jest też wersja wget dla Windows, kiedyś używałem i działała. Oczywiście cały skrypt wymaga przepisania na platformę Windows, co nie jest trudne. Przydadzą się zapewne gzip dla Widnows oraz tar dla Windows, chyba, że od razu skorzysta się z jakiegoś natywnego archiwizera plików typu rar, zip itp.
UPDATE Przy okazji zrobieniu backupu starego bloga (zamknięcie Joggera) wyszła pewna wada – przynajmniej w przypadku Joggera braku http:// na początku URLi całość się nieprzyjemnie pętli i puchnie. Pewnie da się to obejść nie robiąc -m, tylko limitując poziom rekursji. Ja wolałem poprawić URLe. Wadliwe wpisy można prosto namierzyć po wielkości katalogów.
Swego czasu popełniłem Blox Exportera code.google.com/p/kosciak-misc/wiki/BloxExporter – powinno być łatwiej przeparsować później wpisy i przygotować do eskportu na inną platformę.
Jako, że postanowiłem wykorzystać majowy weekend do zrobienia porządków z moimi projektami, więc duża szansa, że dodam jeszcze pobieranie komentarzy (na razie pobiera tylko samą treść wpisów). Pewnie trzeba by też dodać obsługę tagów, wtedy ich jeszcze chyba nie było.
@kosciak Napisz proszę 3 słowa więcej. Nie uruchamiałem Twojego skryptu, ale jeśli chodzi o strukturę, to wygląda bardzo podobnie: rozie.blox.pl/2012/04/tytuł-notki.html Plus, są wszystkie obrazki itp. od razu. I po wrzuceniu na serwer WWW sporo rzeczy działa od kopa (wpisy, nawigacja między nimi, kategorie, obrazki). Nie działa kalendarz i nie do końca działają tagi – po wybraniu tagu pierwsza strona jest OK, kolejne mają skopane kodowanie pl-znaków i ogólnie wygląd. Przypuszczam, że w razie czego nie bawiłbym się w przenoszenie (może niektóre wpisy…) tylko po prostu serwowałbym statycznie to co było. Komentarzy przy starych wpisach jakoś specjalnie nie przybywa, więc strata niewielka.
Na pewno Twój sposób nada się do blogów niepublicznych na Blox. Natomiast ten jest bardziej uniwersalny i może być używany praktycznie na dowolnej platformie. Jeśli chodzi o eksport na inną platformę czy przywrócenie w pełni funkcjonalnej wersji, to wydaje mi się, że mało kto to robi. A nawet jeśli, to przeklikanie wpisów ręcznie jest niczym w porównaniu z wyszukiwaniem ich w cache itp.
Mój skrypt pobiera dane przez API Bloxa. Zapisuje posty zachowując strukturę BLOG_NAME/MONTH/DAY/POST_TITLE.html i generując prostą stronę html. Głównym celem było uzyskanie łatwo parsowalnej struktury, a nie kopii którą można by od razu gdzieś statycznie hostować. Równie dobrze można by przerobić skrypt by wrzucać to od razu do jakiejś bazy, czy do formatu importowalnego przez inną platformę.
Dodatkowo zrzuca do pliku listę plików wysłanych do zasobów bloxa, które można ściągnąć np wgetem.
Stron statycznych i tagów chyba jeszcze wtedy nie było (albo uznałem za nieistotne). Jeśli chodzi o pobieranie komentarzy to musiałbym użyć kod parsujący z comment-trackera
Jestem sceptyczny co do tego, że userzy będą przerabiać skrypt. Tzn. ci, którzy mogliby przerobić pewnie bez problemu wyciągną potrzebne dane z plików HTML. Ale rozumiem ideę.
Zarówno strony statyczne, jak i tagi chyba już były, ale to nieistotne. Z tego co widzę, API nie daje w ogóle dostępu do stron statycznych. Za to pobranie i zapis tagów jest trywialne – wygląda na dodatkowe 2-3 linie.
Cześć. Mam pytanko. Kiedyś korzystałem z programu Blex3 do eksportu bloga, ale on już nie działa z nowym kodem, więc spróbowałem Twojego sposobu. Ściągnąłem zawartość bloga na dysk, na pierwszy rzut oka bez problemu, ale… jednak jest jedna sprawa. Większość wpisów jest w wersji mobilnej, przez co wpis jest niekompletny, brakuje polskich znaków itp. Próbowałem wykluczyć adres „h[[p://nazwamojegobloga.blox.pl/html?mobile=yes” poprzez parametr –exclude-domains , ale nie pomogło. Próbowałem wykluczyć samo słowo „mobile”, ale mimo wszystko nadal pobiera mi wpisy w wersjach mobilnych. Wiesz może co należałoby zrobić, aby pobierał normalne wpisy, zamiast wersji mobilnych??
U mnie pobiera pełną wersję. A dokładniej obie. Być może (ale to już gdybanie) ma to związek z tym, że z IP z którego robię backup normalnie korzystam z Blox w pełnej wersji, więc Blox pamięta, że dane IP „chce” pełną wersję? Daj adres bloga, który backupujesz, zobaczę jak u mnie pobierze.