Git for dummies, czyli kolejna ściągawka z gita.

Logo Git

Źródło: http://git-scm.com/downloads/logos

System kontroli wersji git nie jest taki trudny, jak się może wydawać, ale faktem jest, że trochę bardziej skomplikowany niż cvs czy svn. Ponieważ z gita korzystam na tyle rzadko, że zawsze było wymyślanie koła od nowa i szukanie ściągawek, to dla mej pamięci własna szybka ściągawka z gita.

git clone – tworzy lokalną kopię zdalnego repozytorium

git pull – aktualizuje zmiany ze zdalnego repozytorium

git branch rozie – tworzy gałąź o nazwie rozie

git checkout rozie – przechodzi do gałęzi rozie

git add plik – dodaje plik do systemu kontroli wersji w aktualnej gałęzi

git commit plik – zatwierdza (wprowadza do systemu kontroli wersji) zmiany w pliku

git merge rozie – łączy gałąź rozie z bieżącą gałęzią

git status – podaje jaki jest status, czyli co się zmieniło w danej gałęzi

git push – wysyła zatwierdzone lokalnie zmiany do zdalnego repozytorium

git branch -d – usuwa gałąź lokalnie

git branch – wyświetla wszystkie gałęzie

I w zasadzie powyższe polecenia wystarczają, by w podstawowym zakresie korzystać z git. W sumie średnio się to na wpis nadaje (nawet kategorii nie mogę znaleźć) i może kiedyś przeniosę w sensowniejsze miejsce…

Stare projekty.

Mam parę skryptów (oczywiście Perl), albo nawet raczej szkieletów skryptów, których nigdy nigdzie nie publikowałem, bo były w fazie „takie tam niedokończone”. Powodów niedokończenia jest sporo – poczynając od kłód rzucanych pod nogi (tak, patrzę na Blox), poprzez jakieś takie rozmycie mojego zapotrzebowania wewnętrznego, brak czasu[1], po zwykłą zmianę warunków zewnętrznych.

Czasem jest taki miły moment, że okazuje się, że to ma sens i w ogóle się przyda. Przynajmniej potencjalnie. To nic, że pewnie rok czy dwa później. Ogólnie miałem do tego skrypt! jest miłym momentem. Nawet jeśli ów skrypt wymaga lekkiego – albo nie tak lekkiego – tuningu.

Tak czy inaczej jest motywacja do ciągu dalszego zabaw ze słowami. Niestety, skrypt w tego typu wypadkach to tylko wisienka na tort, jest też spora praca do wykonania przez człowieka. Przypomina mi się liceum i konkurs w radio, polegający na tym, by z podanego czteroliterowego słowa utworzyć jak najdłuższy ciąg kolejnych słów w taki sposób, by słowa się nie powtarzały i różniły tylko jedną literą. I jeszcze chyba ograniczenie do rzeczowników było. Czyli lupa -> zupa -> kupa -> kopa… No ale wtedy nie było(?) tyle dobra w sieci. 😉

[1] Doba ma tylko 24h, a tydzień tylko 7 dni. Jakby to było 26 i 8, byłoby znacznie lepiej.

Jak zrobić backup bloga?

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.