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.
Załóżmy, że Twoje pliki projektu są przechowywane w folderze
/home/user/project
. Chcesz, aby były zapisywane na serwerzebackup.server.com
w folderze/backups/project
.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ć
Nieprawidłowe ścieżki w konsoli. Jeśli podasz niepoprawną ścieżkę do plików,
rsync
lubscp
niczego nie skopiują. Używaj komendls
lubpwd
, żeby upewnić się, że ścieżki są poprawne.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.
Przerwanie kopiowania zapasowego. Jeśli sieć jest niestabilna,
rsync
dokończy transfer przy kolejnym uruchomieniu. Natomiastscp
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.
GO TO FULL VERSION