Martwisz się kiedyś o utratę danych lub masz dość ręcznego tworzenia kopii zapasowych codziennie lub co tydzień? Użyj rsync
polecenia i automatycznie synchronizuj pliki lokalne ze zdalnym serwerem tak często, jak to konieczne, bez ręcznej interwencji. Pamiętaj, że ten przewodnik wymaga dostępu do zdalnego serwera Linux (np. AWS) i jest napisany pod Ubuntu 20.04, chociaż każda dystrybucja Linuksa powinna działać poprawnie.
Zainstaluj rsync
Przede wszystkim sprawdź, czy rsync
jest zainstalowane. Na lokalnym komputerze i serwerze WWW uruchom to polecenie:
rsync --wersja
Jeśli otrzymasz w zamian aktualną wersję rsync, wszystko jest gotowe do następnej sekcji. W przeciwnym razie, jeśli otrzymasz nie znaleziono polecenia błąd, możesz zainstalować rsync
za pomocą tego polecenia:
sudo apt-get -y zainstaluj rsync
Wygeneruj klucz SSH
Użyjemy a Klawisz SSH do uwierzytelnienia połączenia między naszym lokalnym komputerem a zdalnym serwerem. Aby wygenerować nowy klucz SSH na lokalnym komputerze w terminalu, uruchom polecenie:
Chcesz uzyskać zdalny dostęp do komputera lub serwera z systemem Linux? Oto jak skonfigurować i skonfigurować SSH w systemie Linux, Windows i na urządzeniach mobilnych.
ssh-keygen -t rsa -b 4096 -f ~/.ssh/rsync.key
Po wyświetleniu monitu o hasło pozostaw je puste i dwukrotnie naciśnij klawisz Enter. Spowoduje to wygenerowanie dwóch nowych plików w twoim ~/.ssh/
katalog o nazwie rsync.key
który jest kluczem prywatnym, i rsync.key.pub
, klucz publiczny.
Skonfiguruj zdalny serwer
Chociaż nie jest to wymagane, w tym przewodniku stworzymy nowy użytkownik na zdalnym serwerze dla połączeń rsync i do przechowywania wszystkich plików kopii zapasowych. Zaloguj się do zdalnego serwera przez SSH i uruchom to polecenie:
sudo useradd -m rsync
Powyższy przykład używa nazwy użytkownika rsync, ale możesz to zmienić na cokolwiek chcesz. ten -m
opcja po prostu mówi Linuksowi, aby utworzył katalog domowy dla naszego nowego użytkownika.
Aby umożliwić uwierzytelnianie komputera lokalnego, publiczny klucz SSH, który został wygenerowany w poprzedniej sekcji, należy skopiować na serwer zdalny. Otworzyć /~.ssh/rsync.key.pub
plik w a Edytor tekstu i zobaczysz jedną dużą linię, która wygląda jak.
sz-rsa użytkownik@host
Ta długa linia to publiczny klucz SSH. Skopiuj go do schowka i na swoim zdalnym serwerze uruchom te polecenia:
sudo su rsync
mkdir -m 0700 $HOME/.ssh
echo "ssh-rsa AAAAB... użytkownik@host" > $HOME/.ssh/authorized_keys
chmod 0644 $HOME/.ssh/authorized_keys
W przedostatnim poleceniu zastąp tekst między cudzysłowami tym długim publicznym wierszem klucza SSH. To wszystko, twój lokalny komputer będzie teraz mógł uwierzytelnić się na twoim zdalnym serwerze.
Skonfiguruj plik konfiguracyjny ssh
Dla uproszczenia dodaj wpis do ~/.ssh/config
plik na lokalnym komputerze, aby łatwo połączyć się ze zdalnym serwerem. Otwórz plik na lokalnym komputerze za pomocą polecenia.
nano $HOME/.ssh/config
W pliku dodaj wpis dotyczący zdalnego serwera, taki jak:
host_serwer_zapasowy
nazwa hosta 192.168.0.24
rsync użytkownika
Plik tożsamości ~/.ssh/rsync
Zmień nazwę hosta na adres IP zdalnego serwera, a jeśli użyłeś nazwy użytkownika innej niż „rsync”, zmień ją również. Możesz użyć wszystkiego, co chcesz dla hosta, ale w tym przykładzie użyto "serwer_zapasowy". Zapisz i zamknij plik, naciskając Ctrl + X, a następnie klawisze „Y” i Enter.
Przetestuj połączenie SSH ze zdalnym serwerem za pomocą polecenia.
ssh serwer_kopii_zapasowej
Zakładając, że wszystko jest poprawnie skonfigurowane, powinieneś być teraz zalogowany do zdalnego serwera przez SSH. Zamknij połączenie za pomocą polecenia.
Wyjście
Synchronizuj swoje pliki
Teraz przetestuj rsync
funkcjonalność i na przykład, aby zsynchronizować katalog dokumentów na lokalnym komputerze, uruchom polecenie:
rsync -avz --progress ~/Dokumenty/serwer_kopii_zapasowej:~/Dokumenty
Pierwsze wystąpienie ~/Dokumenty/
określa lokalny plik lub katalog do synchronizacji, serwer_zapasowy
odpowiada wpisowi dodanemu do ~/.ssh/config
plik i zakończenie :~/Dokumenty
po prostu określa, aby przesłać wszystko do katalogu /Documents na serwerze zdalnym względem katalogu domowego.
Zaloguj się do zdalnego serwera i powinieneś zobaczyć nowy katalog Dokumenty, który jest zsynchronizowany z katalogiem lokalnego komputera. Za każdym razem, gdy uruchomisz powyższe polecenie, przesłane zostaną tylko pliki, które zostały zmodyfikowane od ostatniego razu, więc nie przesyłasz stale całej zawartości katalogu.
Automatyzacja przez Crontab
Teraz, gdy wszystko jest przetestowane i działa poprawnie, możemy łatwo zautomatyzować cały proces, dodając zadanie crontab do naszego lokalnego komputera. Aby automatycznie synchronizować folder lokalny ze zdalnym serwerem co 15 minut, w terminalu uruchom polecenie.
(crontab -l; echo "*/15 * * * * rsync -avz --progress ~/Dokumenty/ backup_server:~/Dokumenty > /dev/null 2>&1";) | crontab
Możesz otrzymać komunikat „brak crontab dla użytkownika” i możesz go po prostu zignorować. Zmienić Dokumenty
do dowolnego katalogu, który chcesz wykonać, ale upewnij się, że pozostawiłeś ukośnik dla katalogów, w przeciwnym razie nie będą one poprawnie tworzyć kopii zapasowej.
Sprawdź, czy zadanie crontab zostało pomyślnie dodane za pomocą polecenia.
crontab -l
Jeśli widzisz właśnie dodane zadanie crontab, wszystko jest na swoim miejscu. Poczekaj 15 minut, sprawdź serwer zdalny, a wszystkie niezbędne pliki powinny tam być. Od teraz wszystkie zmiany dokonywane w Twoich plikach będą automatycznie przesyłane na zdalny serwer co 15 minut.
Pobierz ze zdalnego serwera
Możesz również użyć rsync
aby pobrać pliki ze zdalnego serwera i zsynchronizować je z lokalnym komputerem. Korzystając z powyższego przykładu katalogu /Documents, w terminalu uruchom polecenie:
rsync -chavzP serwer_kopii_zapasowej:~/Dokumenty/ ~/Dokumenty
ten ~./Dokumenty
katalog na lokalnym komputerze powinien być teraz lustrzanym odbiciem zdalnego serwera.
Uwzględnij i wyklucz wzorce
Jeśli kiedykolwiek będziesz potrzebować synchronizować tylko pliki, które pasują do określonego wzorca, na przykład zakończ na .html
możesz użyć --włączać
wzór. W terminalu uruchom polecenie.
rsync -avz --include "*.html" --progress ~/mojastrona/serwer_kopii_zapasowej:~/public_html
Sprawdź serwer zdalny, a zobaczysz, że tylko pliki z rozszerzeniem .html z lokalnego katalogu /mysite/ zostały przesłane do katalogu zdalnego /public_html/. Podobnie możesz również zsynchronizować wszystko z wyjątkiem niektórych plików za pomocą --wykluczać
opcja. Na przykład następujące polecenie zsynchronizuje wszystkie pliki z wyjątkiem tych z .tekst
rozbudowa.
rsync -avz --exclude "*.txt" --progress ~/mojastrona/serwer_kopii_zapasowej:~/public_html
Synchronizuj dwa katalogi lokalne
W razie potrzeby możesz również zsynchronizować dwa katalogi lokalne za pomocą polecenia.
rsync -zvr ~/źródło/katalog ~/docelowy/katalog
To polecenie działa dokładnie tak samo, jak podczas synchronizacji ze zdalnym serwerem, jedyną różnicą jest to, że są to dwa katalogi lokalne.
Odpocznij spokojnie
Możesz teraz odetchnąć z ulgą, wiedząc, że szanse na utratę danych są teraz znacznie mniejsze. W tym artykule dowiedziałeś się czego rsync
jest, jak wygenerować i zainstalować klucz SSH, zdefiniować serwer w obrębie ~./.ssh/config
pliku, zsynchronizuj katalog lokalny i zdalny oraz zautomatyzuj cały proces za pomocą crontab. W przyszłości wszystkie niezbędne pliki będą zawsze synchronizowane z serwerem zdalnym z zaledwie 15-minutowym opóźnieniem.
Chcesz sklonować dysk twardy lub partycję z systemem Linux? Użyj jednego z tych narzędzi do klonowania dysków, aby sklonować dysk z systemem Linux.
- Linux
- Backup danych
- Linux
- Kopia zapasowa w chmurze
- Sieć domowa
Zapisz się do naszego newslettera
Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Jeszcze jeden krok…!
Potwierdź swój adres e-mail w e-mailu, który właśnie do Ciebie wysłaliśmy.