Przejdź do treści
Powrót do bloga

Opublikowano 2 września 2026 · 4 min czytania

Kopia zapasowa ważyła 945 GB. Kodu moich aplikacji nie było w niej wcale

Kopia zapasowa działała codziennie od maja. Zielony status, 41 kopii w historii, ani jednego błędu. Wyglądała na zdrową.

Zajrzałem do niej nie z powodu awarii, tylko dlatego, że kończyło mi się miejsce na dysku. Przy okazji zobaczyłem, że kopia waży 945 GB przy limicie 1,15 TB. Dysk, który kopiowała, miał wtedy zajęte 537 GB.

Kopia była grubsza od tego, co kopiowała. To był pierwszy sygnał.

Co się właściwie stało

Sprawdziłem, co zajmuje miejsce w katalogu domowym:

113 GB  modele Ollama
 55 GB  modele LM Studio
 38 GB  modele generatora obrazów
 18 GB  modele ComfyUI
 19 GB  symulatory iOS

Ponad 220 GB modeli językowych i graficznych. Plików, które pobiera się jednym poleceniem i które w kopii zapasowej nie mają żadnej wartości — po awarii ściągnąłbym je z internetu szybciej, niż odtworzyłbym z sieciowego dysku.

Potem sprawdziłem, co jest z kopii wykluczone. Odpowiedź: praktycznie tylko systemowy katalog cache. Wszystko inne szło do kopii każdego dnia.

Przyczyna

Projekty trzymam na osobnym dysku zewnętrznym. Sprawdziłem jego status:

[Excluded]  /Volumes/<dysk_z_projektami>

Wykluczony. Nie przez pomyłkę — system domyślnie pomija dyski zewnętrzne, a ja tego nigdy nie zmieniłem.

Sprawdziłem, co to znaczy dla trzech aplikacji, nad którymi pracuję:

Projekt Zdalne repozytorium Niezacommitowane
A tak 0 plików
B brak 13 plików
C brak 20 plików

Projekty B i C istniały w jednej kopii, na jednym dysku. W projekcie C poza gitem był cały silnik aplikacji — modele, kontrolery, widoki, testy. Jedyny commit nazywał się „Initial Commit" i miał półtora miesiąca.

Nie zaprojektowałem tej kopii. Ona narosła. Włączyłem backup, wskazałem dysk sieciowy, kliknąłem „dalej" — a potem przez cztery miesiące instalowałem narzędzia, z których każde odkładało dziesiątki gigabajtów. Kopia posłusznie zabierała wszystko, bo nikt jej nie powiedział, żeby tego nie robiła.

Czego nie zrobiłem

Najprostszym wyjściem było podniesienie limitu. Miejsca na dysku sieciowym zostawało 2,4 TB, więc jedno pole w ustawieniach rozwiązywało problem „kopia się nie mieści" w piętnaście sekund.

Nie zrobiłem tego, bo to nie był ten problem. Kopia nie była za duża — była wypełniona niewłaściwymi danymi. Podniesienie limitu sprawiłoby, że objaw zniknie, a przyczyna zostanie: kod dalej byłby poza kopią, modele dalej w środku, a za pół roku ta sama rozmowa przy większych liczbach.

Naprawa

Najpierw kod, bo to było jedyne nieodwracalne ryzyko. Zacommitowałem wiszące zmiany, założyłem prywatne repozytoria dla B i C, wypchnąłem. Potem usunąłem dysk z projektami z wykluczeń — razem z nim do kopii weszło dwadzieścia jeden pozostałych projektów, które repozytoriów nie mają.

Potem wykluczenia. Siedemnaście ścieżek, około 286 GB: modele, cache menedżerów pakietów, symulatory, obrazy kontenerów, symbole debugowania.

Tu trafiłem na rzecz, której nie przewidziałem: wykluczenie nie działa wstecz. Mówi „od teraz tego nie kopiuj", nie „usuń to, co skopiowałeś". Modele siedziały w kopiach z maja, czerwca i lipca i miały tam zostać jeszcze miesiącami.

Skoro przez cztery miesiące ani razu nie sięgnąłem po starą wersję pliku, a kopia miała mnie chronić przed awarią sprzętu, nie przed własną pomyłką sprzed kwartału — odstawiłem starą historię na bok jako archiwum i zbudowałem kopię od zera.

Liczby

Przed Po
Rozmiar kopii 945 GB 157 GB
Wykorzystanie limitu 82% 16%
Kod bez zabezpieczenia 2 projekty 0

Sześciokrotna redukcja przy tych samych danych. Pełna kopia od zera zajęła trzydzieści minut.

Potem otworzyłem gotową kopię i policzyłem w niej pliki źródłowe: 127, 44 i 44. Zgadzało się z dyskiem po odjęciu plików, które powstają przy kompilacji.

Co z tego wynika poza moim dyskiem

Kopia, która działa, i kopia, która chroni, to dwa różne pytania. Mój backup przez cztery miesiące nie zgłosił ani jednego błędu i przez cały ten czas nie zabezpieczał kodu. Zielony status odpowiada na pytanie „czy się wykonał", nie „czy jest w nim to, co trzeba".

Domyślne ustawienia mają swoje zdanie na temat Twoich danych. Dyski zewnętrzne są domyślnie poza kopią. To rozsądne założenie producenta — i błędne w każdej konfiguracji, w której na dysku zewnętrznym trzyma się pracę.

Backup, którego się nie zaprojektowało, projektuje się sam. Bez decyzji, co ma być w środku, w kopii ląduje wszystko, co zainstalowałeś w ostatnim kwartale. Piętnaście minut nad listą wykluczeń jest warte więcej niż każde kolejne zwiększenie limitu.


Liczby pochodzą z diagnozy i przebudowy przeprowadzonej 16 sierpnia 2026. Rozmiary kopii odczytane z konfiguracji systemu backupu przed zmianą i po pierwszej pełnej kopii na nowej konfiguracji.

Patryk Piecyk

Patryk Piecyk

Warszawa · junior konsultant wdrożeniowy · dostępny od zaraz

Przez 7,5 roku pracowałem w niemieckiej firmie, pięć lat prowadząc jej biuro: zamówienia, faktury, reklamacje, ERP. Od czerwca 2026 buduję własne narzędzia do tej samej roboty — nie jestem programistą z wykształcenia, kod powstaje w parze z asystentem AI, a projekt, decyzje i testy są moje. Te notatki opisują, co się w tych systemach zepsuło i co z tego wyszło.

Masz pytanie do tego tekstu?

Napisz do mnie