Kopie zapasowe przyrostowe na VPS przy użyciu rsync i cron | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Kopie zapasowe przyrostowe na VPS przy użyciu rsync i cron

Wprowadzenie

Kopie zapasowe są niezbędne dla każdego VPS. Chronią przed przypadkowymi usunięciami, błędami konfiguracji, uszkodzeniem danych lub naruszeniem bezpieczeństwa serwera.

Ten podręcznik wyjaśnia, jak skonfigurować kopie zapasowe przyrostowe za pomocą:

  • rsync — efektywne narzędzie do kopiowania plików
  • twardych linków — aby uniknąć duplikacji danych w każdej kopii zapasowej
  • cron — do planowania automatycznych kopii zapasowych

Rezultat: każda migawka wygląda jak pełna kopia zapasowa, ale tylko zmienione pliki zajmują dodatkowe miejsce. To podejście jest proste, niezawodne i odpowiednie dla większości typowych konfiguracji VPS.

Jak działają kopie zapasowe przyrostowe z rsync

rsync oferuje dwie kluczowe funkcje:

  1. Synchronizacja tylko zmienionych plików
  2. Opcja --link-dest: tworzy twarde linki dla niezmienionych plików, umożliwiając posiadanie wielu katalogów "pełnych" kopii zapasowych bez zajmowania dodatkowego miejsca.

Przykład struktury katalogów:

/backups/ daily.0/ - dzisiejsza kopia zapasowa daily.1/ - wczorajsza kopia zapasowa daily.2/ - kopia zapasowa sprzed 2 dni

Każdy folder wygląda jak pełna kopia zapasowa, ale tylko różnice zajmują miejsce.

Wymagania wstępne

Na VPS:

  • Instalacja Linuxa
  • Dostęp jako root lub użytkownik z sudo
  • Wystarczająca ilość miejsca na dysku na migawki kopii zapasowych
  • Opcjonalnie: zdalna pamięć masowa, jeśli kopia zapasowa jest tworzona na innym serwerze

Zainstaluj rsync, jeśli to konieczne:

sudo apt update

sudo apt install rsync

Info

Ostrzeżenie: Zatrzymaj serwery baz danych lub wyklucz ich katalogi danych z kopii zapasowej. Kopia zapasowa bazy danych online za pomocą rsync może spowodować uszkodzenie kopii zapasowej bazy danych.

Tworzenie katalogów kopii zapasowych

Wybierz lokalizację dla kopii zapasowych. Zwykle:

  • System plików lokalny: /backups/
  • Dysk zewnętrzny: /mnt/storage/backups/
  • Zdalny serwer przez SSH: user@backup-server:/data/backups/

Przykład (lokalny):

sudo mkdir -p /backups

sudo chmod 700 /backups

Podstawowe polecenie rsync dla kopii zapasowych przyrostowych

Poniżej znajduje się kluczowe polecenie rsync:

rsync -a --delete \ --link-dest=/backups/daily.1 \ /source/data/ \ /backups/daily.0/

Wyjaśnienie:

  • -a — tryb archiwum (zachowuje uprawnienia, właścicieli, znaczniki czasu, dowiązania symboliczne)
  • --delete — usuwa pliki usunięte w źródle
  • --link-dest — tworzy twarde linki do niezmienionych plików w poprzedniej migawce
  • /source/data/ — katalog, który chcesz zarchiwizować
  • /backups/daily.0/ — dzisiejsza migawka

Skrypt rotacji dla dziennych migawek

Utwórz skrypt do:

  1. Rotacji istniejących kopii zapasowych
  2. Tworzenia nowej kopii zapasowej przyrostowej
  3. Przechowywania N dni (przykład: 7)

Utwórz plik:

sudo nano /usr/local/bin/backup_daily.sh

Wklej:

#!/bin/bash BACKUP_DIR="/backups/" SOURCE="/" EXCLUDE="/etc/backup-exclude.txt" DAYS="7" #REMOTE_USER="<YOUR_REMOTE_USER>" #REMOTE_SERVER="<YOUR_REMOTE_SERVER>" REMOTE_DIR="/backups/" # Rotacja for ((i=DAYS-1; i>=0; i--)); do if [ -d "$BACKUP_DIR/daily.$i" ]; then rm -rf "$BACKUP_DIR/daily.$((i+1))" mv "$BACKUP_DIR/daily.$i" "$BACKUP_DIR/daily.$((i+1))" fi done # Przygotowanie katalogów kopii zapasowych mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Wykonanie kopii zapasowej przyrostowej rsync -a --delete \ --link-dest="$BACKUP_DIR/daily.1" \ --exclude-from="$EXCLUDE" \ "$SOURCE" "$BACKUP_DIR/daily.0" if [ -n "$REMOTE_USER" ] && [ -n "$REMOTE_SERVER" ] && [ -n "$REMOTE_DIR" ]; then rsync -azv --delete "$BACKUP_DIR" "$REMOTE_USER@$REMOTE_SERVER:$REMOTE_DIR" fi

Zapisz i wyjdź. Uczyń go wykonywalnym:

sudo chmod +x /usr/local/bin/backup_daily.sh

Możesz zmienić zmienne na początku skryptu, aby dostosować go do swoich potrzeb. Zmień SOURCE na konkretny katalog, jeśli nie potrzebujesz pełnej kopii zapasowej systemu plików root, na przykład.

Wykluczanie niepotrzebnych katalogów

Utwórz plik wykluczeń:

sudo nano /etc/backup-exclude.txt

Typowe wykluczenia:

  • /proc
  • /sys
  • /tmp
  • /run
  • /dev
  • /mnt
  • /media
  • /var/cache
  • /backups

Planowanie kopii zapasowych za pomocą cron

Edytuj crontab:

sudo crontab -e

Dodaj (kopia zapasowa o 03:00 codziennie):

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

To zapewnia regularne automatyczne migawki.

Tworzenie kopii zapasowej na zdalnym serwerze (opcjonalnie)

Jeśli chcesz mieć kopię zapasową poza miejscem, wykonaj następujące kroki. Utwórz folder docelowy na serwerze docelowym:

mkdir -p /backups

Upewnij się, że klucze SSH są skonfigurowane. Wykonaj następne polecenie, aby wygenerować klucz SSH:

ssh-keygen

Zamień <YOUR_REMOTE_USER> na swoją nazwę użytkownika na zdalnym serwerze, <YOUR_REMOTE_SERVER> na nazwę domeny zdalnego serwera i wykonaj następujące polecenie, aby skopiować klucz SSH na zdalny serwer:

ssh-copy-id <YOUR_REMOTE_USER>@<YOUR_REMOTE_SERVER>

Odkomentuj zmienne REMOTE_USER, REMOTE_SERVER na początku pliku backup_daily.sh, zamień <YOUR_REMOTE_USER> na swoją nazwę użytkownika na zdalnym serwerze, <YOUR_REMOTE_SERVER> na nazwę domeny zdalnego serwera i zapisz backup_daily.sh, aby włączyć zdalną kopię zapasową.

Przesyłanie kopii zapasowych do INTROSERV CloudBox

INTROSERV oferuje pamięć online, która pozwala automatycznie lub ręcznie zapisywać bezpieczne kopie ważnych plików i danych na zdalnych serwerach. Aby użyć jej jako zdalnej pamięci kopii zapasowej, zaloguj się do interfejsu webowego CloudBox i dodaj swój publiczny klucz ssh do profilu. Ustawienia profilu znajdują się w prawym górnym rogu.

Ustawienia profilu CloudBox

Wstaw swój publiczny klucz SSH w sekcji "Public keys", aby przesłać klucz na serwer.

Sekcja publicznego klucza SSH CloudBox

Odkomentuj zmienne REMOTE_USER, REMOTE_SERVER na początku pliku backup_daily.sh, zamień <YOUR_REMOTE_USER> na swoją nazwę użytkownika na serwerze CloudBox, <YOUR_REMOTE_SERVER> na nazwę domeny serwera CloudBox i zapisz backup_daily.sh, aby włączyć zdalną kopię zapasową.

Testowanie kopii zapasowych

Zanim zaczniesz polegać na swoim systemie, przetestuj kopie zapasowe.

  1. Uruchom skrypt ręcznie: sudo /usr/local/bin/backup_daily.sh
  2. Sprawdź rozmiary: du -sh /backups/*. Powinna być tylko jedna duża kopia zapasowa.
  3. Zweryfikuj integralność plików: ls -l /backups/daily.0/etc/

Przywracanie danych

Możesz przywrócić dowolny pojedynczy plik:

cp /backups/daily.2/etc/nginx/nginx.conf /etc/nginx/

Lub przywrócić wszystko:

sudo rsync -a /backups/daily.0/ /

Info

Ostrzeżenie: Przywracanie katalogów systemowych nadpisuje bieżące pliki.

Rozważania dotyczące bezpieczeństwa

  • Używaj ścisłych uprawnień na katalogach kopii zapasowych (chmod 700).
  • Jeśli używasz SSH, wyłącz logowanie hasłem, używaj tylko kluczy.
  • Nie przechowuj kopii zapasowych na tym samym dysku co serwer, jeśli to możliwe.
  • Szyfruj zdalne kopie zapasowe za pomocą LUKS lub zaszyfrowanej pamięci, jeśli to konieczne.

Monitorowanie i logowanie

Logowanie jest już dodane w cron: /var/log/backup.log

Sprawdzaj regularnie:

tail -f /var/log/backup.log

Podsumowanie

Użycie rsync z cron oferuje:

  • Szybkie kopie zapasowe przyrostowe
  • Efektywne wykorzystanie dysku dzięki twardym linkom
  • Prosty proces przywracania
  • W pełni zautomatyzowane planowanie

Ta metoda jest niezawodna i łatwa dla początkujących administratorów i działa doskonale na konfiguracjach VPS z systemem Linux.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA