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

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

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

Wprowadzenie

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

W niniejszym podręczniku wyjaśniono, jak skonfigurować kopie zapasowe przyrostowe przy użyciu:

  • rsync — wydajnego narzędzia do kopiowania plików
  • dowiązania twarde — pozwalające uniknąć powielania danych w poszczególnych kopiach zapasowych
  • cron — do planowania automatycznych kopii zapasowych

Wynik: każda kopia przypomina pełną kopię zapasową, ale dodatkowe miejsce zajmują tylko pliki, które uległy zmianie. To podejście jest proste, niezawodne i odpowiednie dla większości typowych konfiguracji serwerów VPS.

Jak działają przyrostowe kopie zapasowe z wykorzystaniem rsync

rsync oferuje dwie kluczowe funkcje:

  1. Synchronizacja wyłącznie zmienionych plików
  2. Opcja--link-dest: tworzy dowiązania twarde dla niezmienionych plików, umożliwiając korzystanie z wielu katalogów „pełnych” kopii zapasowych bez zajmowania dodatkowej przestrzeni dyskowej.

Przykładowa struktura katalogów:

/backups/ daily.0/ - today's backup daily.1/ - yesterday's backup daily.2/ - backup from 2 days ago

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

Wymagania wstępne

Na serwerze VPS:

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

W razie potrzeby zainstaluj rsync:

sudo apt update sudo apt install rsync

Warning

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

Tworzenie katalogów kopii zapasowych

Wybierz lokalizację dla kopii zapasowych. Zazwyczaj:

  • Lokalny system plików: /backups/
  • Dysk zewnętrzny: /mnt/storage/backups/
  • Serwer zdalny przez SSH: user@backup-server:/data/backups/

Przykład (lokalnie):

sudo mkdir -p /backups sudo chmod 700 /backups

Podstawowe polecenie rsync do tworzenia kopii przyrostowych

Poniżej znajduje się kluczowe polecenie rsync:

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

Objaśnienie:

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

Skrypt rotacji dla codziennych migawek

Utwórz skrypt, który:

  1. rotację istniejących kopii zapasowych
  2. Utworzenie nowej kopii przyrostowej
  3. Zachowanie 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/" # Rotate 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 # Prepare backup directories mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Perform incremental backup 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 zamknij. Nadaj uprawnienia do uruchamiania:

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

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

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
  • /kopie_zapasowe

Planowanie kopii zapasowych za pomocą crona

Edytuj plik crontab:

sudo crontab -e

Dodaj (kopia zapasowa codziennie o godz. 03:00):

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

Zapewni to regularne, automatyczne tworzenie kopii zapasowych.

Tworzenie kopii zapasowej na serwerze zdalnym (opcjonalnie)

Jeśli chcesz utworzyć kopię zapasową poza lokalizacją, wykonaj poniższe kroki. Utwórz folder docelowy na serwerze docelowym:

mkdir -p /backups

Upewnij się, że klucze SSH są skonfigurowane. Wykonaj następujące polecenie, aby wygenerować swój klucz SSH:

ssh-keygen

Zastąp <YOUR_REMOTE_USER> swoją nazwą użytkownika na serwerze zdalnym, a <YOUR_REMOTE_SERVER> nazwą domeny serwera zdalnego, a następnie wykonaj poniższe polecenie, aby skopiować klucz SSH na serwer zdalny:

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

Usuń komentarze ze zmiennych REMOTE_USER i REMOTE_SERVER na początku pliku backup_daily.sh, zastąp <YOUR_REMOTE_USER> swoją nazwą użytkownika na serwerze zdalnym, a <YOUR_REMOTE_SERVER> nazwą domeny serwera zdalnego, a następnie zapisz plik backup_daily.sh, aby włączyć tworzenie kopii zapasowych na serwerze zdalnym.

Przesyłanie kopii zapasowych do INTROSERV CloudBox

INTROSERV zapewnia przestrzeń dyskową online, która pozwala automatycznie lub ręcznie zapisywać bezpieczne kopie ważnych plików i danych na serwerach zdalnych. Aby używać jej jako zdalnej przestrzeni do tworzenia kopii zapasowych, zaloguj się do interfejsu internetowego CloudBox i dodaj swój klucz publiczny SSH do profilu. Ustawienia profilu znajdują się w prawym górnym rogu.

CloudBox profile settings

Wprowadź swój klucz publiczny SSH w sekcji „Klucze publiczne”, aby przesłać klucz na serwer.

CloudBox public SSH key section

Usuń komentarze ze zmiennych REMOTE_USER i REMOTE_SERVER na początku pliku backup_daily.sh, zastąp <YOUR_REMOTE_USER> swoją nazwą użytkownika na serwerze CloudBox, <YOUR_REMOTE_SERVER> na nazwę domeny serwera CloudBox i zapisz plik backup_daily.sh, aby włączyć zdalne tworzenie kopii zapasowych.

Testowanie kopii zapasowych

Zanim zaczniesz polegać na systemie, przetestuj kopie zapasowe.

  1. Uruchom skrypt ręcznie: sudo /usr/local/bin/backup_daily.sh
  2. Sprawdź rozmiary: du -sh /backups/*. Powinna istnieć tylko jedna duża kopia zapasowa.
  3. Sprawdź 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óć wszystko:

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

Warning

Przywracanie katalogów systemowych powoduje nadpisanie bieżących plików.

Kwestie bezpieczeństwa

  • Należy stosować restrykcyjne uprawnienia do katalogów kopii zapasowych (chmod 700).
  • W przypadku korzystania z SSH wyłącz logowanie za pomocą hasła i używaj wyłącznie kluczy.
  • Jeśli to możliwe, nie przechowuj kopii zapasowych na tym samym dysku co serwer.
  • W razie potrzeby szyfruj zdalne kopie zapasowe za pomocą LUKS lub szyfrowanej pamięci masowej.

Monitorowanie i rejestrowanie

Rejestracja została już dodana do crona: /var/log/backup.log

Sprawdzaj regularnie:

tail -f /var/log/backup.log

Wniosek

Korzystanie z rsync w połączeniu z cronem zapewnia:

  • Szybkie kopie przyrostowe
  • Efektywne wykorzystanie miejsca na dysku dzięki dowiązaniom twardym
  • Prosty proces przywracania danych
  • W pełni zautomatyzowane planowanie

Metoda ta jest niezawodna i łatwa w użyciu dla początkujących administratorów oraz doskonale sprawdza się w środowiskach 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