Oprogramowanie open-source do robienia backupów na serwerze

systemy open-source do bakcupu serwerów

Zanim przejdziemy do listy narzędzi, warto się zastanowić dlaczego open source to dobry kierunek, zwłaszcza w kontekście serwerów.

Oto kilka kluczowych zalet:

  • Brak opłat licencyjnych – narzędzia open source zwykle są bezpłatne lub obwarowane licencją, która pozwala je używać, modyfikować i rozpowszechniać.
  • Transparencja kodu – można przeglądać kod źródłowy, weryfikować bezpieczeństwo, dostosowywać do własnych potrzeb.
  • Elastyczność i rozszerzalność – społeczność może tworzyć wtyczki, integracje, poprawki bezpieczeństwa.
  • Brak vendor lock-in – nie jesteś uzależniony od jednego producenta, łatwiej zmieniać rozwiązania.
  • Dobre skalowanie i automatyzacja – wiele projektów open source ma lepszą automatyzację, API i elastyczność niż komercyjne odpowiedniki.

Oczywiście są też wyzwania:

  • Czasem trudniejsza konfiguracja, dokumentacja mniej prosta.
  • Brak gwarantowanego wsparcia (choć wiele projektów ma wersje komercyjne lub firmy oferujące wsparcie).
  • W niektórych przypadkach mniejsze wsparcie dla GUI lub analogicznych interfejsów graficznych trzeba działać z linii komend.

Dla serweram gdzie stabilność, bezpieczeństwo i możliwość odtworzenia danych w razie awarii są kluczowe, open source często jest wyśmienitym wyborem.

Lista popularnych (sprawdzonych) narzędzi open-source do backupu serwerów

Poniżej omówię 9 projektów, z podkreśleniem ich mocnych stron, przypadków użycia i potencjalnych minusów. Nie wszystkie narzędzia będą trafiać idealnie do każdego scenariusza, ale wśród nich znajdziesz coś, co będzie pasować do Twojej infrastruktury.

1. Bacula / Bareos

Link do pobrania: https://www.bacula.org/source-download-center

Bacula to klasyka świata open source w dziedzinie backupów sieciowych. Obsługuje środowiska heterogeniczne (Linux, Unix, Windows, macOS).
Jeśli chcesz nowocześniejszej odmiany, Bareos (Backup Archiving Recovery Open Sourced) to fork Baculi z wieloma dodatkami.

Zalety Bacula / Bareos:

  • Architektura klient-serwer – możesz zabezpieczyć wiele hostów.
  • Obsługa różnych backendów (dyski, taśmy, zasoby chmurowe).
  • Szyfrowanie, kompresja, katalog (bazodanowy) do śledzenia backupów.
  • Możliwość integracji z bazami danych, aplikacjami.
  • Wersja komercyjna wspierana przez firmy (np. Bacula Systems), jeśli potrzebujesz wsparcia.

Minusy:

  • Dość złożona konfiguracja, wiele plików konfiguracyjnych.
  • Interfejsy graficzne bywają mniej przyjazne (choć są projekty z Web UI).
  • W mniejszych scenariuszach może być „overkill”.

Kiedy warto użyć: jeśli masz wiele serwerów do zabezpieczenia, chcesz mieć centralne zarządzanie backupami i rozbudowaną automatyzację.

2. Restic

Link do pobrania: https://restic.net/

Restic to stosunkowo „lekkie”, ale potężne narzędzie do backupów z naciskiem na bezpieczeństwo.
Działa jako narzędzie CLI (linia poleceń), ale obsługuje wiele backendów (lokalne, SFTP, S3-kompatybilne, itp.).

Zalety Restic:

  • Szyfrowanie end-to-end (wbudowane).
  • Deduplikacja – unikanie powtarzania danych w backupach.
  • Wydajność i prostota – jedno binarium do wielu systemów operacyjnych.
  • Możliwość automatyzacji przy pomocy skryptów (cron, systemd).

Minusy:

  • Brak natywnych wersji klient-serwer (choć są projekty dodatkowe).
  • Całość zarządzania odbywa się z linii komend – mniej przyjazne GUI.
  • W przypadku dużej skali może brakować funkcji sieciowych, które mają narzędzia klasy Bacula.

Przykład użycia (skrypt backupu katalogu /var/www):

#!/bin/bash

# katalog źródłowy
SRC="/var/www"
# repozytorium backupów (np. na inny serwer via SFTP)
REPO="sftp:user@backup-server:/repozytorium/restic"
# hasło (lub plik z hasłem)
export RESTIC_PASSWORD="moje_haslo_strong"

# inicjalizacja repo (pierwszy raz)
restic init --repo $REPO

# wykonywanie backupu
restic backup $SRC --repo $REPO

# opcjonalnie: usuwanie starych snapshotów, np. zachowaj 30 dni
restic forget --prune --keep-daily 30 --repo $REPO

Możesz ten skrypt dodać do cron, np. uruchamiany codziennie o 2:00:

0 2 * * * /usr/local/bin/backup-www.sh >> /var/log/restic-backup.log 2>&1

3. Duplicati

Link do pobrania: https://duplicati.com/download

Duplicati to ciekawe narzędzie, które działa jako klient do backupów, oferując szyfrowanie, kompresję, backupy przyrostowe i integrację z wieloma zdalnymi magazynami (FTP, SFTP, WebDAV, Amazon S3 i innymi).
Posiada GUI/webowe UI, co ułatwia konfigurację, również na serwerach headless.

Zalety Duplicati:

  • Wygodny interfejs (webowy) do zarządzania kopiami.
  • Możliwość wyboru wielu backendów zdalnych, co daje elastyczne przechowywanie.
  • Szyfrowanie (AES / GPG) oraz kompresja.
  • Backupy przyrostowe, filtrowanie plików.

Minusy:

  • Jako klient, nie jest typowym narzędziem typu klient-serwer (ale można działać w środowisku serwerowym, instalując Duplicati na maszynach klienckich).
  • W bardzo dużych środowiskach może brakować granicznej skalowalności.
  • Czasem mogą występować problemy ze stabilnością lub błędy związane z połączeniami do wielu backendów w jednym zadaniu.

Przykład instalacji Duplicati na Debianie/Ubuntu (skrócony):

# pobierz najnowszą wersję .deb (strona duplicati.com)
wget https://updates.duplicati.com/betas/duplicati_2.X.X.X_beta_amd64.deb
sudo dpkg -i duplicati_2.X.X.X_beta_amd64.deb
sudo apt-get -f install  # aby dokończyć instalację zależności

# uruchom usługi
sudo systemctl enable duplicati
sudo systemctl start duplicati

# Duplicati dostępny pod adresem http://localhost:8200 (web UI)

Potem w UI konfigurujesz zadania backupu, wybierasz foldery, harmonogram, backend.

4. UrBackup

Link do pobrania: https://www.urbackup.org/download.html

UrBackup to rozwiązanie klient-serwer, które obsługuje zarówno backupy plikowe, jak i obrazów dysków (image backup).
Ma interfejs webowy do zarządzania, automatyzację i dobre możliwości odzyskiwania (restore).

Zalety UrBackup:

  • Możliwość wykonywania backupu obrazów (bare metal restore) i plików.
  • Interfejs webowy, prostsza konfiguracja klienta i serwera.
  • Dobrze zoptymalizowane incrementalne backupy, monitorowanie zmian w katalogach.
  • Możliwość backupu przez internet, zdalnie.

Minusy:

  • W dużej skali (setki / tysiące klientów) może być mniej dojrzały niż Bacula.
  • Czasem ograniczenia w plugins / obsłudze aplikacji (np. bazy danych).
  • Mniej elastyczny niż rozwiązania pure CLI w ekstremalnych wdrożeniach.

Przykład:

  • Zainstaluj urbackup-server na maszynie głównej.
  • Zainstaluj klienta urbackup-client na serwerze, który chcesz zabezpieczyć.
  • W interfejsie webowym serwera dodaj klienta, ustaw reguły backupu (co, kiedy).
  • W przypadku restore można użyć bootowalnego nośnika i przywrócić całą maszynę.

5. Amanda

Link do pobrania: https://www.amanda.org/download.php

Amanda (Advanced Maryland Automatic Network Disk Archiver) to klasyczne narzędzie open source do backupów sieciowych.
Serwer Amanda steruje kopiami ze zdalnych hostów, korzystając z klientów.

Zalety Amanda:

  • Działa w modelu klient-serwer, wielu hostów.
  • Obsługa kopii na dyski, taśmy oraz inne media.
  • Rozsądne narzędzia do zarządzania harmonogramami, rotacją, itp.
  • Dojrzały projekt, istnieje długo i jest sprawdzony w praktyce.

Minusy:

  • Interfejs GUI ograniczony lub w wersji komercyjnej.
  • Konfiguracja może być skomplikowana.
  • Współczesne integracje (np. chmurowe backendy) bywają dodane dopiero przez pluginy/trzecie strony.

6. BorgBackup / borg

Link do pobrania: https://www.borgbackup.org/releases

Borg (BorgBackup) to bardzo popularny projekt open source, ceniony za deduplikację, szybkość i bezpieczeństwo.
Jest często rekomendowany jako jeden z najlepszych lekkich rozwiązań do backupów plikowych.

Zalety Borg:

  • Świetna deduplikacja, jeśli masz dużo podobnych plików, oszczędzasz miejsce.
  • Kompresja, szyfrowanie, wszystko wbudowane.
  • Możliwość tworzenia „repozytoriów” backupów i przywracania pojedynczych plików.
  • Lekka architektura i dobra wydajność.

Minusy:

  • Nie jest natywnie klient-serwer (chociaż można wykorzystać SSH + skrypty).
  • Brak natywnego GUI (choć są narzędzia wrapperów, np. borgmatic).
  • W skomplikowanych scenariuszach sieciowych może wymagać dopracowywania integracji.

7. Rsync, Rclone, Rdiff-backup

Link do pobrania: https://rsync.samba.org/download.html

To bardziej „narzędzia budulcowe” niż kompletne systemy backupowe, ale zasługują na uwagę:

  • rsync – klasyczne narzędzie do synchronizacji katalogów; często używane jako podstawa prostych backupów (lokalnych, zdalnych).
  • rdiff-backup – łączy rsync + wersjonowanie.
  • Rclone – idealny do pracy z magazynami w chmurze i synchronizacji plików z nimi.

Te narzędzia często stosuje się w skryptach niestandardowych backupów.

8. FreeFileSync

Link do pobrania: https://freefilesync.org/download.php

FreeFileSync to projekt open source do synchronizacji i backupu plików/folderów, z interfejsem graficznym.
Można go używać na różnych systemach operacyjnych.

Zalety:

  • Intuicyjny GUI, łatwa konfiguracja zadania synchronizacji/backupów.
  • Obsługa wielu systemów (Windows, macOS, Linux).
  • Synchronizacja plików + backup (kopiowanie różnicowe).

Minusy:

  • Nie jest narzędziem klasy klient-serwer (raczej pojedyncze maszyny).
  • Brak rozbudowanych funkcji sieciowych, deduplikacji, itp.

9. Clonezilla

Link do pobrania: https://clonezilla.org/downloads.php

Clonezilla to narzędzie do klonowania dysków / obrazów systemów.
Jest mniej narzędziem do codziennego backupu danych, a raczej do tworzenia obrazów maszyn (np. przed migracją, masowych wdrożeń).

Zalety:

  • Możliwość tworzenia obrazów dysku (cały system) i odtwarzania ich (bare metal).
  • Wydajność i niezależność od struktury plików (działa na poziomie bloków).
  • Można używać w trybie wielomaszynowym (Clonezilla Server Edition).

Minusy:

  • Nie idealny do codziennego backupu plików / zmiennych katalogów.
  • Wymaga przerwy w działaniu, bootowania z LiveCD/USB lub trybu offline.

Porównanie narzędzi – które wybrać dla jakiego scenariusza?

Poniżej sugeruję, jakie narzędzie może być dobrym wyborem w konkretnych scenariuszach:

  1. Średnia infrastruktura z wieloma serwerami, chcesz centralne zarządzanieBacula / Bareos
  2. Backup plików + skrypty, prosta konfiguracja, deduplikacjaRestic lub Borg
  3. Potrzebujesz GUI / web UI / łatwości obsługiDuplicati lub UrBackup
  4. Backup całego systemu / obrazów + restore bare metalUrBackup (dla plików + obrazów) lub Clonezilla (gdy offline)
  5. Chcesz samodzielnie komponować backupy do chmury / zróżnicowane backendyDuplicati, Rclone + skrypty
  6. Duże środowisko, integracja z bazami danych / aktywne wsparcieBacula / Bareos, ewentualnie wersje komercyjne

Oczywiście nic nie stoi na przeszkodzie, by łączyć narzędzia, np. używać Restic do backupów katalogów, a Bacula do zarządzania innymi maszynami.


Przykładowy schemat wdrożenia backupu serwera z Restic + SSH + cron

Pokażę Ci, krok po kroku, jak można zbudować prosty, lecz solidny system backupu plików na serwerze z wykorzystaniem Restic i repozytorium zdalnego przez SSH.

Założenia

  • Serwer produkcyjny: prod.example.com
  • Backup host: backup.example.com
  • Na backup host masz katalog /data/backups/restic z uprawnieniami dostosowanymi do użytkownika backupowego.
  • Użytkownik backupuser na backup host musi mieć uprawnienia SSH (klucz publiczny) do serwera produkcyjnego.
  • Chcesz, by codziennie o 3:00 wykonany był backup katalogu /etc, /var/www, /home.
  • Chcesz zachować kopie dzienne przez 14 dni, tygodniowe przez 8 tygodni i miesięczne przez 3 miesiące.

Krok 1: ustaw klucz SSH

Na serwerze produkcyjnym (prod) jako użytkownik, który będzie robił backup:

ssh-keygen -t ed25519 -f ~/.ssh/restic_backup_key
# zostawiasz puste hasło dla klucza
ssh-copy-id -i ~/.ssh/restic_backup_key.pub backupuser@backup.example.com

Na backup host (backup.example.com), wybierz katalog docelowy i nadaj prawa:

sudo mkdir -p /data/backups/restic
sudo chown backupuser:backupuser /data/backups/restic
chmod 700 /data/backups/restic

Krok 2: instalacja restic

Na serwerze produkcyjnym:

sudo apt update
sudo apt install restic    # lub ściągnij binarium, jeśli dystrybucja nie ma pakietu

Krok 3: skrypt backupu (backup-restic.sh)

Stwórz plik np. /usr/local/bin/backup-restic.sh:

#!/bin/bash
# --- konfiguracja ---
SRC_LIST="/etc /var/www /home"
REMOTE_REPO="ssh://backupuser@backup.example.com//data/backups/restic"
export RESTIC_PASSWORD="ToJestMocneHasłoBackupowe"

# inicjalizacja (wykona się tylko, jeśli repozytorium nie istnieje)
restic -r $REMOTE_REPO snapshots >/dev/null 2>&1 || restic init -r $REMOTE_REPO

# backup
for SRC in $SRC_LIST; do
  restic -r $REMOTE_REPO backup $SRC
done

# usuwanie starych snapshotów
restic -r $REMOTE_REPO forget --prune \
  --keep-daily 14 \
  --keep-weekly 8 \
  --keep-monthly 3

Nadaj plikowi prawa:

chmod +x /usr/local/bin/backup-restic.sh

Krok 4: zaplanuj cron

Dodaj wpis do crona, np. przez crontab -e:

0 3 * * * /usr/local/bin/backup-restic.sh >> /var/log/restic-backup.log 2>&1

Teraz codziennie o 3:00 zostanie wykonany backup.

Krok 5: test przywracania

Aby sprawdzić, że backup działa i że można przywrócić dane:

# wyświetl listę snapshotów
restic -r ssh://backupuser@backup.example.com//data/backups/restic snapshots

# przywróć plik /etc/passwd z ostatniego snapshotu do katalogu testowego
restic -r ssh://backupuser@backup.example.com//data/backups/restic restore latest \
  --target /tmp/restore-test --include /etc/passwd

Jeśli plik /tmp/restore-test/etc/passwd się pojawi, masz dowód, że backup działa.

To jest prosty schemat. Możesz go rozbudować, by uwzględnić bazy danych (dumpy MySQL/PostgreSQL), prostą rotację, powiadomienia e-mail, weryfikację integralności itd.


Jak widzisz istnieje sporo darmowych narzędzi, za pomocą których będziesz mógł robić kopie plików na swoim serwerze VPS czy serwerze dedykowanym. Najważniejsze że wszystkie z listy są w wersji open-source, więc możesz ich używać nawet komercyjnie bez dodatkowych żadnych opłat.