CodeGym /Kursy /Docker SELF /Kopiowanie zapasowe z użyciem rsync i scp

Kopiowanie zapasowe z użyciem rsync i scp

Docker SELF
Poziom 6 , Lekcja 5
Dostępny

Kopiowanie zapasowe z użyciem rsync i scp

1. Dlaczego kopia zapasowa jest ważna?

Dziś pogadamy o jednym z najważniejszych zadań dla każdego, kto działa w świecie IT i programowania — tworzeniu kopii zapasowych danych. Jeśli kiedykolwiek straciłeś ważne dane przez awarię dysku lub błąd, to wiesz, jak istotne to jest. A jeśli nie straciłeś — to jesteśmy tutaj, żeby tego uniknąć!

Wyobraź sobie: pracowałeś nad projektem przez kilka miesięcy, aż pewnego pięknego dnia twój dysk twardy postanowił strzelić focha. Tak, to jest równie frustrujące, jak zapomnieć o średniku na końcu zapytania SQL, tylko tysiąc razy gorzej. Systemy potrafią być zawodne, ludzie popełniają błędy, a pliki się gubią. Kopia zapasowa pozwala wcześniej przygotować się na takie przykre niespodzianki.

W Linux znajdziesz kilka potężnych narzędzi do tworzenia kopii zapasowych. Dziś poznamy dwa z nich: rsync i scp.


2. Komenda rsync: szybkie i sprytne narzędzie do kopiowania danych

rsync — to jedno z najpopularniejszych narzędzi do kopiowania i synchronizacji danych. Jego główną siłą jest szybkość i efektywność. Zamiast kopiować wszystko, jak leci, rsync kopiuje tylko zmienione pliki. Dzięki temu idealnie nadaje się do regularnego tworzenia kopii zapasowych dużych ilości danych.

Składnia rsync

Oto podstawowy format komendy:

rsync [opcje] źródło cel

Gdzie:

  • źródło — ścieżka do pliku lub katalogu, które chcesz skopiować.
  • cel — miejsce, gdzie te dane mają trafić.

Najważniejsze opcje i ich funkcje

Oto kilka często używanych opcji:

  • -a (archive): włącza kopiowanie wszystkich metadanych (prawa dostępu, znaczniki czasu, itd.).
  • -v (verbose): włącza szczegółowe informacje o procesie, abyś widział, co się dzieje.
  • --progress: pokazuje postęp kopiowania (bardzo przydatne przy dużych plikach).
  • --delete: usuwa po stronie docelowej pliki, których nie ma już po stronie źródłowej. Przydatne do pełnej synchronizacji.
  • -z (compress): kompresuje dane przed ich przesłaniem, co przyspiesza działanie (szczególnie ważne przy operacjach sieciowych).

Przykład: kopiowanie lokalnych danych

Utworzymy katalog /backup do przechowywania kopii zapasowych.

mkdir /backup

Kopiujemy całą zawartość katalogu /home do /backup:

rsync -av /home /backup

Rozłóżmy ten przykład na części:

  • -a zachowuje strukturę oraz prawa dostępu plików.
  • -v daje informacje o przebiegu procesu.

Jeśli uruchomisz tę komendę ponownie, skopiuje tylko zmienione lub nowe pliki.

Przykład: zdalne tworzenie kopii zapasowej

Teraz załóżmy, że chcesz przesłać kopię zapasową na zdalny serwer. Do tego rsync obsługuje użycie SSH.

rsync -av /backup user@remote_server:/remote_backup

Gdzie:

  • user — nazwa użytkownika na zdalnym serwerze.
  • remote_server — adres twojego zdalnego serwera (np. adres IP lub nazwa domeny).
  • /remote_backup — ścieżka na serwerze, gdzie chcesz zapisać dane.

Jeśli masz klucz SSH do autoryzacji, proces przesyłania będzie jeszcze prostszy (i bezpieczniejszy).


3. Komenda scp: prosto i skutecznie

scp (Secure Copy Protocol) — to narzędzie do kopiowania plików między lokalnym a zdalnym systemem. Jest trochę prostsze niż rsync i nadaje się do przypadków, gdy pełna synchronizacja nie jest potrzebna.

Składnia scp

Podstawowy format komendy wygląda tak:

scp [opcje] źródło cel

Gdzie:

  • źródło — ścieżka do pliku, który chcesz skopiować.
  • cel — adres, gdzie plik ma zostać dostarczony.

Podstawowe opcje i ich funkcje

Niektóre przydatne opcje:

  • -r: rekursywne kopiowanie folderów.
  • -C: kompresuje pliki przed przesyłaniem.
  • -P: określa port SSH, jeśli różni się od standardowego (22).

Przykład: kopiowanie pliku na zdalną maszynę

Chcesz przesłać pliki z lokalnego komputera na serwer. Załóżmy, że plik nazywa się document.txt.

scp document.txt user@remote_server:/remote_folder

Jeśli plik znajduje się w folderze /home/user/documents, komenda będzie wyglądać tak:

scp /home/user/documents/document.txt user@remote_server:/remote_folder

Teraz plik będzie dostępny na zdalnym systemie w folderze /remote_folder.

Przykład: kopiowanie plików z serwera na lokalną maszynę

Proces działa w drugą stronę:

scp user@remote_server:/remote_folder/document.txt /home/user/documents

W tym przypadku plik document.txt znajdzie się w Twoim lokalnym folderze.


4. Różnice między rsync a scp

Chociaż oba polecenia umożliwiają kopiowanie plików, mają swoje wyjątkowe cechy.

Cechy rsync scp
Prędkość Kopiowanie jedynie zmienionych danych, szybsze dla dużych wolumenów Kopiuje wszystko, nawet jeśli plik się nie zmienił
Synchronizacja Pełne wsparcie synchronizacji Brak wsparcia dla synchronizacji
Kompresja danych Opcja -z Opcja -C
Łatwość użycia Bardziej skomplikowana konfiguracja Prosty interfejs

Więc, jeśli potrzebujesz szybko przesłać plik — użyj scp. Jeśli chodzi o regularną synchronizację i duże ilości danych — zdecydowanie rsync.


5. Praktyczny przykład: konfiguracja kopii zapasowej

Oto zadanie praktyczne: chcesz skonfigurować pełny proces tworzenia kopii zapasowych swojego projektu na zdalnym serwerze.

  1. Załóżmy, że Twoje pliki projektu są przechowywane w folderze /home/user/project. Chcesz, aby były zapisywane na serwerze backup.server.com w folderze /backups/project.

  2. Aby przyspieszyć kopiowanie, użyjemy rsync.

Konfiguracja skryptu do kopii zapasowej

Utwórz plik backup.sh:

#!/bin/bash

SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"

# Wykonujemy kopię zapasową za pomocą rsync
rsync -av --delete "$SOURCE" "$DESTINATION"

# Wyświetlamy komunikat o zakończeniu
echo "Kopia zapasowa zakończona!"

Zrób plik wykonywalnym:

chmod +x backup.sh

Teraz możesz uruchomić ten skrypt ręcznie:

./backup.sh

Lub dodać go do cron w celu automatycznego wykonania (o cron porozmawiamy później w kursie).


6. Typowe błędy i jak ich unikać

  1. Nieprawidłowe ścieżki w konsoli. Jeśli podasz niepoprawną ścieżkę do plików, rsync lub scp niczego nie skopiują. Używaj komend ls lub pwd, żeby upewnić się, że ścieżki są poprawne.

  2. Brak klucza autoryzacji. Jeśli korzystasz z SSH i nie masz skonfigurowanego klucza, za każdym razem system będzie prosił o hasło. Skonfiguruj klucze SSH, żeby uprościć ten proces.

  3. Przerwanie kopiowania zapasowego. Jeśli sieć jest niestabilna, rsync dokończy transfer przy kolejnym uruchomieniu. Natomiast scp będzie wymagał rozpoczęcia procesu od nowa.

Dzięki rsync i scp możesz z łatwością kopiować i synchronizować swoje dane zarówno na lokalnym komputerze, jak i na serwerach zdalnych. Te narzędzia to niezawodni pomocnicy, jeśli chodzi o ochronę ważnych plików.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION