GitHub backup

Od dłuższego czasu poruszany jest w różnych miejscach temat niezależności technologicznej od firm z… innych obszarów prawnych, że tak to ujmę. W szczególności chodzi o firmy spoza Europy. Jest też – nieco niezależny, choć w praktyce często zbieżny – temat uniezależnienia się do wielkich korporacji. Bo jakoś tak się złożyło, że wielkie korporacje nie są europejskie.

Przyznaję, że kibicuję obu tematom. I o ile nie czuję, że muszę koniecznie już teraz przenieść wszystkie zabawki do Europy, to… chcę mieć w razie czego taką możliwość. Pomału się rozglądam, wykonuję pewne drobne – póki co – ruchy. W szczególności jeśli z jakiegoś powodu rezygnuję z jakiejś usługi, to szukam alternatywy w Europie.

Tyle kontekstu, ale przecież miało być o backupie GitHub. Jak powszechnie wiadomo, jest to usługa Microsoftu, czyli podlegająca prawu USA. I w dodatku należąca do jednej z największych korporacji na świecie. Znaczy mogą zrobić z kodem co chcą, w tym… zniknąć go. Zamknąć dowolne konto. Usunąć dowolne repozytorium (i wszystkie jego forki). Bo tak.

Zapewne się to nie wydarzy, jeśli chodzi o moje repozytoria ale… Nie wiadomo. Bo już różne rzeczy były z GitHub usuwane. Więc ktoś kiedyś może wpaść na pomysł, że np. bruteforce PESELi to groźne narzędzie i trzeba repozytorium – albo i całe konto – usunąć. Wolę więc mieć możliwość przywrócenia swojego kodu z backupu. Backup serwerów i tak robię, wiele własnego kodu nie mam. Więc zrobienie kopii repozytoriów do katalogu, który jest objęty backupem wygląda jak proste, lekkie rozwiązanie.

Jeśli chodzi o ewentualne zastępstwo dla GitHuba, wybrałem popularną alternatywę w postaci europejskiego Codeberg.org[1]. Na którym i tak założyłem już wcześniej konto z uwagi na pewien pull request, który chciałem zrobić.

Repozytoriów trochę mam, są one publiczne, więc postanowiłem zautomatyzować robienie backupu, żeby nie musieć pamiętać o dodaniu każdego nowego repozytorium do skryptu robiącego backup. Po prostu robię backup wszystkich publicznych repozytoriów należących do danego użytkownika GitHub. Oczywista konsekwencja – i wada rozwiązania – jest taka, że jeśli zrobię fork jakiegoś większego projektu, to także on trafi do backupu. Jednak nie jest to częsta sytuacja, a nawet te większe projekty nie są aż tak duże, żeby mi to przeszkadzało.

Skrypt github-backup jest – jak widać – bardzo prosty. Wymaga zewnętrznego programu git i tylko jednej biblioteki – requests. Zasada działania skryptu github-backup jest prosta. Przechodzimy do katalogu ze skryptem. Podajemy usera jako parametr. W katalogu, w którym jest uruchamiany skrypt, najpierw tworzony jest katalog o takiej nazwie, jak nazwa użytkownika[2]. Następnie pobierana jest lista publicznych repozytoriów użytkownika. A w końcu dla każdego z nich tworzona jest kopia przy pomocy zewnętrznego polecenia git clone –mirror. I tyle. Tak utworzone kopie można przywrócić na innym serwerze przy pomocy git push –mirror. Przykład w readme.

Skrypt ma wady, których nie potrzebowałem poprawiać. Po pierwsze, robi mirror do bieżącej lokalizacji. Nie jest to problem przy planowanym użyciu, czyli z użyciem cron – po prostu wcześniej trzeba zmienić katalog. Po drugie, nie obsługuje prywatnych repozytoriów. Cóż, trochę nie miałem takiej potrzeby. Poza tym, o ile dodanie klucza, który ma do nich dostęp w trybie odczyt nie jest problemem, to nad listowaniem musiałbym się zastanowić[3]. Może kiedyś, bo jak wspomniałem, obecnie nie mam takiej potrzeby.

Plany rozwoju skryptu? Dodanie obsługi innych platform przydało by się najbardziej, bo żaden dostawca ani jurysdykcja nie dają gwarancji, że konto czy repozytorium nie zniknie. Przy czym pewnie w najbliższej przyszłości skończy się na Codeberg, bo tylko tego aktualnie używam i będę miał jak przetestować. Może jednak dodanie obsługi prywatnych repozytoriów?

W każdym razie jeśli rozwiązanie komuś się przyda, to zachęcam do używania. I oczywiście robienia backupów, w tym przypadku własnego kodu. Niezależnie od metody.

UPDATE: To naprawdę prosty skrypt i główną zaletą jest brak potrzeby jakiegokolwiek uwierzytelniania, jeśli ktoś potrzebuje więcej, to istnieje np. ghorg.

[1] Ogólnie jest to serwis godny rozważenia, choć community o wiele mniejsze.
[1] Uwaga, najpierw jest usuwana cała zawartość katalogu o takiej nazwie, jeśli istnieje!
[2] No dobra, sprawdziłem, wystarczy dodać obsługę PAT (personal access token) i stosownie skonfigurować ich uprawnienia.

Serial Stranger Things

Gdyby nie Dark, może bym się nie dowiedział o Stranger Things… Oglądając Dark nie znałem Stranger Things, więc trudno mi było zauważyć ew. podobieństwa, o których wspominano w recenzji. Zresztą, po obejrzeniu pierwszego sezonu Stranger Things nadal nie wydawały mi się podobne. Nawiasem, po pierwszym sezonie stwierdziłem, że tyle wystarczy i nie mam ochoty na więcej[1].

https://www.youtube.com/watch?v=wp43OdtAAkM

Czasy się zmieniają, muzyka się zmienia, nawet gusta filmowe się zmieniają[2]. Zacząłem oglądać drugi sezon Stranger Things i… stwierdziłem, że nie jest złe. Może kwestia braku oczekiwań? Bo przy pierwszym sezonie liczyłem na coś podobnego do Dark. W każdym razie oglądam i… jest nieźle. Choć zupełnie inaczej, niż w Dark.

A jeśli chodzi o podobieństwa Dark i Stranger Things:

  • producentem obu jest Netflix,
  • premierę miały w podobnym czasie (odpowiednio 2017 i 2016),
  • aktualnie oba mają na IMDB ocenę 8,7,
  • IMDB poleca Stranger Things na stronie Dark w sekcji more like this (ale w drugą już nie!),
  • bohaterami w obu są dzieci,
  • oba nawiązują do lat ’80-tych,
  • akcja seriali dzieje się w niewielkich miasteczkach,
  • w obu serialach wykorzystano piosenki śpiewane przez wokalistki w latach ’80-tych jako istotny motyw muzyczny.

Tyle znalazłem. Coś jeszcze?

Czy polecam Stranger Things? To trudne pytanie. Jeśli ktoś lubi horrory, nie przeszkadzają mu tanie zabiegi typu budowanie napięcia przez migające światło w ciemnościach[3], jest w stanie zawiesić logikę i nie oczekuje wysublimowanej rozrywki intelektualnej, to jest to całkiem dobry serial, z niezłą dramaturgią i humorem. I mnóstwem nawiązań, jak mi się wydaje[4], choć z racji nieznajomości gatunku nie widzę wszystkich. Jeśli za horrorami nie przepadasz, hmm… nie wyklucza to dobrej zabawy, więc można obejrzeć, choć niekoniecznie całość.

Piszę to po obejrzeniu czwartego – póki co ostatniego – sezonu. Zapowiedziany jest jeszcze ostatni, piąty sezon, który pewnie obejrzę. Raczej z rozpędu, bo wg mnie z sezonu na sezon jest coraz słabiej. Odrobinę, ale jednak.

Jeszcze jedna rzecz, o której nie znalazłem wzmianek na IMDB. Może nadinterpretuję, ale przygody bohaterów kojarzyły mi się z rozgrywką Dungeons & Dragons, gdzie każdy sezon to kampania. Szczegółów nie będzie, bo spoilery, ale jest przynajmniej kilka podobieństw, poczynając od tego, że tworzą drużynę. Spotkałem nawet przypisywanie bohaterom odpowiednich klas postaci. Raczej ciekawostka, bez wpływu na fabułę i mogłem się zasugerować, bo sami bohaterowie jak najbardziej grają w tę grę. Zresztą ilość stron poświęconych przypisywaniu klas D&D bohaterom serialu wydaje się potwierdzać to spostreżenie.

Więc pierwsze dwa sezony[5] warto zobaczyć, żeby wiedzieć, czy Stranger Things nam pasuje i nie mieć braków kulturowych. No i w sumie po dwóch sezonach poznamy też chyba wszystkich głównych bohaterów. Czyli warto przynajmniej zacząć oglądać.

[1] Nie tylko ja tak mam, patrz komentarz Borysa w tym wpisie.
[2] Że tak odwołam się do cytatu z pewnego filmu.
[3] Mnie męczy, tym bardziej, że stosowane nagminnie. Zresztą w ogóle masa zabiegów jest wykorzystywana wielokrotnie.
[4] IMDB potwierdza.
[5] Czemu dwa, a nie jeden? Bo pierwszy jest trochę inny i kończy się… specyficznie. Dopiero drugi pokazuje w pełni z czym będziemy mieli do czynienia.