Witaj na blogu.
Czytaj bez spiny.
Szybki sposób na automatyczny backup n8n w chmurze

Szybki sposób na automatyczny backup n8n w chmurze

2 marca 2026

Jeżeli masz swoje instalacje n8n – nieważne, czy to chmura, czy lokalny Docker – to słuchaj uważnie. Robienie kopii zapasowych to nie jest opcja, to instynkt przetrwania. Bardzo często zdarza się, że przy aktualizacji online albo nieprawidłowym zamknięciu kontenera tracisz wszystko. Niezależnie od tego, czy to projekt produkcyjny, czy piaskownica, szkoda czasu, który poświęciłeś na budowanie flow. Jeśli jeszcze nie straciłeś danych, to gratuluję – wszystko przed Tobą. Ale uwierz mi, taki widok potrafi doprowadzić do zawału.

Flow do backupu to absolutnie pierwszy proces, jaki powinieneś stawiać na nowej instalacji n8n. Bez dyskusji.

Poniżej opisuję, jak to działa u mnie. Zero lania wody, same fakty. To instrukcja dla kogoś, kto zna n8n na poziomie średniozaawansowanym, ale tłumaczę to jak koledze, który dopiero zaczyna i nie chce obudzić się z ręką w nocniku.

Zmuś n8n do pilnowania własnego tyłka na Google Drive

Cel jest prosty: automatycznie raz w miesiącu (lub na żądanie) workflow robi backup wszystkich aktywnych procesów i wysyła je na Google Drive. Nazwa pliku to backup_{ID}_{nazwa-workflow}.json. Dlaczego tak? ID gwarantuje unikalność, a nazwa pozwala Ci się połapać w tym śmietniku plików.

Logika działania jest pancerna: jeśli plik już jest na dysku, system go usuwa i wrzuca świeżą wersję. Jeśli go nie ma – po prostu tworzy nowy. Wszystko dzieje się powoli, po jednym workflow na raz z 3-sekundowymi przerwami, żeby nie dostać bana od Google za zbyt agresywne API.


Instrukcja budowy: Krok po kroku do świętego spokoju

1. Fundamenty i wyzwalacze

Zacznij od stworzenia nowego workflow o nazwie Backup aktywnych workflowów → Google Drive. Musisz mieć dwa sposoby na jego start:

  • Manual Trigger: Żebyś mógł odpalić kopię "teraz", bo masz złe przeczucia.
  • Schedule Trigger: Twój cyfrowy dozorca. Ustaw go na Cron Expression: 0 3 1 * *. To oznacza 1. dnia każdego miesiąca o 3:00 rano, kiedy normalni ludzie śpią.

2. Pobieranie danych i pętla

Dodaj węzeł n8n. Ustaw Resource na Workflow, Operation na Get Many i koniecznie wyfiltruj tylko aktywne (Active Workflows = true). Nie ma sensu trzymać kopii śmieci, których nie używasz.

Następnie wrzuć Split In Batches z rozmiarem 1. To klucz do stabilności. Nie pchaj wszystkiego naraz, bo system się zadławi.

3. Przygotowanie danych (Code Node)

Musisz sformatować dane tak, żeby Google Drive wiedział, co z nimi zrobić. Użyj poniższego kodu:

const wf = $input.item.json;

// Nazwa zawiera ID (niezmienne) + nazwę (czytelna)
const safeName = wf.name.replace(/[/:*?"<>|]/g, -).trim();
const fileName = `backup_${wf.id}_${safeName}.json`;

return [{
json: {
workflowId: wf.id,
workflowName: wf.name,
fileName: fileName,
jsonContent: JSON.stringify(wf, null, 2)
}
}];

4. Operacje na Google Drive

Teraz robi się ciekawiej. Użyj węzła Google Drive (Search), aby sprawdzić, czy plik już istnieje. W Query String wpisz:

={{ "name='" + $json.fileName + "' and 'TU_WSTAW_ID_FOLDERU' in parents and trashed=false" }}

Ważne: Po wyszukiwaniu musisz dodać kolejny Code Node, który "wyprostuje" wynik. Jeśli Google nic nie znajdzie, n8n potrafi zatrzymać cały flow. Ten mały skrypt zapewni, że proces pójdzie dalej niezależnie od wyniku:

const results = $input.all();
const prepared = $('Przygotuj dane backupu').item.json;
const found = results.length > 0 && results[0].json && results[0].json.id;

return [{
json: {
fileExists: found ? true : false,
driveFileId: found ? results[0].json.id : '',
fileName: prepared.fileName,
workflowId: prepared.workflowId,
workflowName: prepared.workflowName,
jsonContent: prepared.jsonContent
}
}];

5. Logika IF i finał

Dodaj węzeł IF sprawdzający czy fileExists jest true. Rozgałęź to na dwie drogi:

  1. Jeśli istnieje (TRUE): Najpierw węzeł Google Drive Delete (usuń stary plik po driveFileId), a potem Create from Text (zapisz nowy).
  2. Jeśli nie istnieje (FALSE): Od razu Create from Text.

Na końcu każdej ścieżki dodaj Wait (3 sekundy) przed powrotem do pętli. To Twoja polisa ubezpieczeniowa przeciwko limitom API.


Parametry techniczne setupu

Element Ustawienie / Wymaganie
Częstotliwość 1. dzień miesiąca, 03:00
Metoda autoryzacji OAuth2 (Google) + n8n API Key
Format pliku JSON (Indented 2 spaces)
Bezpieczeństwo Pauza 3s między operacjami

Bonus dla leniwych (Prompt do Claude)

Jeśli nie chcesz klikać tego ręcznie, wykorzystaj potęgę AI. Jeżeli czytałeś mój wpis o konfiguracji n8n-MCP z Claude, to poniższy prompt wygeneruje Ci gotowy plik JSON do zaimportowania:

Stwórz czysty workflow n8n do backupu wszystkich aktywnych workflowów na Google Drive (dla lokalnego n8n w Dockerze).
Logika dokładnie taka sama:
Triggery: Manual Trigger + Schedule Trigger (cron: 0 3 1 * *)
Pobierz tylko aktywne workflowy
Przetwarzaj po jednym (SplitInBatches = 1)
Dla każdego workflowu:
Przygotuj plik backup_{workflowId}_{bezpieczna_nazwa}.json
Wyszukaj czy istnieje na Google Drive w folderze backupów
Jeśli istnieje → usuń stary + zapisz nowy
Jeśli nie istnieje → zapisz nowy
Po każdym zapisie dodaj Wait 3 sekundy
Dodaj Sticky Note z krótkim opisem po polsku
Użyj placeholder TU_WSTAW_ID_FOLDERU dla folderu na Drive.
Zwróć tylko gotowy JSON w bloku json.
Jak przywrócić workflow z takiego backupu?
To banalnie proste. Otwierasz plik .json z Google Drive, pobierasz plik JSON z workflow na dysk, wchodzisz do n8n, klikasz ... w prawym górnym rogu i wybierasz opcję "Import from file". Zaciągasz pobrany plik i wszystko wraca na swoje miejsce w sekundę.
Dlaczego muszę usuwać stary plik zamiast go nadpisać?
Google Drive API przy operacji "Create" często tworzy duplikaty o tej samej nazwie zamiast wersji. Usunięcie starego pliku przed wgraniem nowego to najpewniejsza metoda na utrzymanie porządku w folderze backupów.
Widzisz błąd, masz uwagę albo chcesz coś dodać?
Napisz tutaj →
Wsparcie Warsztatu

Allegro Pay: Kupuj bez blokowania kasy

Czasem trafia się świetna promocja na dysk czy narzędzia, a budżet akurat się nie spina. Allegro Pay to prosta opcja: zamawiasz dzisiaj, a płacisz za miesiąc. Zero stresu i elastyczne rozbicie wydatków, kiedy tego potrzebujesz.

Aktywuj Allegro Pay →

Mój nastrój

Od autora: Czasami to, co kryje się pod spodem tych wszystkich narzędzi, trochę przeraża. Warto wiedzieć, w co się klika. Wiesz co robić.

Postaw mi kawę →
BEZ SPINY • MYŚLĘ • BEZ SPINY • ROBIĘ • BEZ SPINY • PISZĘ • BEZ SPINY • DZIELĘ SIĘ • BEZ SPINY • ZERO NADĘCIA • BEZ SPINY • ZERO POZERKI • BEZ SPINY • KONKRETNE RZECZY • BEZ SPINY • NORMALNY BLOG • BEZ SPINY • UCZĘ SIĘ • BEZ SPINY • BUDUJĘ • BEZ SPINY • SPRAWDZAM • BEZ SPINY • WYCIĄGAM WNIOSKI • BEZ SPINY • SERWER • BEZ SPINY • SEO • BEZ SPINY • AUTOMATYZACJE • BEZ SPINY • ŻYCIE ONLINE • BEZ SPINY • BLOG JAK DAWNIEJ • BEZ SPINY • RÓŻNE TEMATY • BEZ SPINY • PRAWDZIWE PROBLEMY • BEZ SPINY • PRAWDZIWE ROZWIĄZANIA • BEZ SPINY • UCZĘ SIĘ PUBLICZNIE • BEZ SPINY • TESTUJĘ I OPISUJĘ • BEZ SPINY • CZASEM TECHNICZNIE • BEZ SPINY • CZASEM ŻYCIOWO •
Antoni Fic - O mnie

O Mnie

To nie jest blog. To narzędziownia. Odrzucam SaaS-owe abonamenty, marketingowy bełkot i cyfrowy szum. Sam stawiam serwery, tnę czysty kod i zmuszam sztuczną inteligencję do odwalania czarnej roboty.

Nie sprzedaję kursów, nie buduję zasięgów i nie owijam w bawełnę. Zrzucam tu gotowe, zweryfikowane w boju systemy.