
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-serverna maszynie głównej. - Zainstaluj klienta
urbackup-clientna 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:
- Średnia infrastruktura z wieloma serwerami, chcesz centralne zarządzanie → Bacula / Bareos
- Backup plików + skrypty, prosta konfiguracja, deduplikacja → Restic lub Borg
- Potrzebujesz GUI / web UI / łatwości obsługi → Duplicati lub UrBackup
- Backup całego systemu / obrazów + restore bare metal → UrBackup (dla plików + obrazów) lub Clonezilla (gdy offline)
- Chcesz samodzielnie komponować backupy do chmury / zróżnicowane backendy → Duplicati, Rclone + skrypty
- Duże środowisko, integracja z bazami danych / aktywne wsparcie → Bacula / 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/resticz uprawnieniami dostosowanymi do użytkownika backupowego. - Użytkownik
backupuserna 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.
