Za pomocą polecenia rsync możesz kopiować i synchronizować dane zdalnie i lokalnie między katalogami, dyskami i sieciami, wykonywać kopie zapasowe danych i dublowanie między dwoma maszynami z systemem Linux.
Niektóre zalety i cechy polecenia Rsync
- Skutecznie kopiuje i synchronizuje pliki do lub z systemu zdalnego.
- Obsługuje kopiowanie linków, urządzeń, właścicieli, grup i uprawnień.
- Jest szybszy niż scp ( Secure Copy ), ponieważ rsync używa protokołu zdalnej aktualizacji, który umożliwia przesyłanie tylko różnic między dwoma zestawami plików. Za pierwszym razem kopiuje całą zawartość pliku lub katalogu ze źródła do miejsca docelowego, ale od następnego razu kopiuje tylko zmienione bloki i bajty do miejsca docelowego.
- Rsync zużywa mniej przepustowości, ponieważ używa metody kompresji i dekompresji podczas wysyłania i odbierania danych na obu końcach.
Podstawowa składnia polecenia rsync
# rsync opcje-źródłowe miejsce-docelowe
Niektóre typowe opcje używane z poleceniami rsync
- -v : tryb opisowy
- -r : kopiuje dane rekurencyjnie (ale nie zachowuje sygnatur czasowych i uprawnień podczas przesyłania danych
- -a : tryb archiwum, tryb archiwum umożliwia rekurencyjne kopiowanie plików, a także zachowuje dowiązania symboliczne, uprawnienia do plików, prawa własności użytkowników i grup oraz znaczniki czasu
- -z : kompresuj dane pliku
- -h : czytelne dla człowieka, wyświetlają liczby w formacie czytelnym dla człowieka
Zainstaluj rsync na swoim komputerze z systemem Linux
Możemy zainstalować pakiet rsync za pomocą następującego polecenia:
# apt install rsync
Kopiuj / synchronizuj pliki i katalog lokalnie
Skopiuj / zsynchronizuj plik na komputerze lokalnym
To polecenie zsynchronizuje pojedynczy plik na komputerze lokalnym z jednej lokalizacji do innej. W tym przykładzie nazwa pliku backup.tar musi zostać skopiowana lub zsynchronizowana z folderem /tmp/kopia/ .
# rsync -zvh kopia.tar /tmp/kopia/
Jeśli miejsce docelowe jeszcze nie istnieje, rsync automatycznie utworzy katalog dla miejsca docelowego.
Skopiuj / zsynchronizuj katalog na komputerze lokalnym
Następujące polecenie przeniesie lub zsynchronizuje wszystkie pliki z jednego katalogu do innego katalogu na tym samym komputerze. W tym przykładzie /root/appimage zawiera kilka plików pakietów appimage i chcesz, aby katalog ten został skopiowany do folderu /tmp/kopia/ .
# rsync -avzh /root/appimage /tmp/kopia/
Skopiuj / zsynchronizuj pliki i katalog na lub z serwera
Skopiuj katalog z serwera lokalnego na serwer zdalny
To polecenie zsynchronizuje katalog z komputera lokalnego na komputer zdalny. Na przykład : Na Twoim komputerze lokalnym znajduje się folder „ appimage ”, który zawiera pliki appimage i chcesz, aby zawartość tego katalogu lokalnego była wysyłana na zdalny serwer, możesz użyć następującego polecenia:
$ rsync -avz appimage/ root@192.167.0.1:/home/
Skopiuj / zsynchronizuj katalog zdalny z komputerem lokalnym
To polecenie pomoże Ci zsynchronizować katalog zdalny z katalogiem lokalnym. W tym przykładzie katalog /home/user/appimage, który znajduje się na zdalnym serwerze, jest kopiowany na twój lokalny komputer do /tmp/appimage :
# rsync -avzh root@192.167.0.2:/home/user/appimage /tmp/appimage
Rsync przez SSH
Używając protokołu SSH podczas przesyłania danych możesz mieć pewność, że Twoje dane są przesyłane w formie zaszyfrowanej, aby nikt nie mógł odczytać danych podczas ich przesyłania przez Internet.
Kiedy używamy rsync, musimy podać hasło użytkownika / roota, aby wykonać to konkretne zadanie, więc użycie opcji SSH oznacza że dane dostępowe są przesyłane w postaci zaszyfrowanej.
Skopiuj plik z serwera zdalnego na serwer lokalny za pomocą protokołu SSH
W tym przykładzie użyjemy „ ssh ” z opcją „ -e ” i wykonamy transfer danych.
# rsync -avzhe ssh root@192.167.0.2:/root/install.log /tmp/
Skopiuj plik z serwera lokalnego na serwer zdalny za pomocą protokołu SSH
# rsync -avzhe ssh kopia.tar root@192.167.0.2:/kopia/
Pokaż postęp podczas przesyłania danych za pomocą rsync
Aby pokazać postęp podczas przesyłania danych z jednego komputera na inny, możemy użyć dla niego opcji „ –progress” . Wyświetlają się pliki i czas pozostały do zakończenia transferu.
# rsync -avzhe ssh --progress /home/appimage root@192.167.0.2:/root/appimage
Korzystanie z opcji –include i –exclude
Te dwie opcje pozwalają nam włączać i wykluczać pliki, określając parametry za pomocą tej opcji, co pomaga nam określić te pliki lub katalogi, które chcesz uwzględnić podczas synchronizacji, i wykluczyć pliki i foldery, których nie chcesz przesyłać.
W tym przykładzie polecenie rsync uwzględni tylko te pliki i katalogi, które zaczynają się od litery „ R ”, oraz wykluczy wszystkie inne pliki i katalogi.
# rsync -avze ssh --include 'R*' --exclude '*' root@192.167.0.2:/var/lib/rpm/ /root/rpm
Użycie opcji –delete
Jeśli plik lub katalog nie istnieje w źródle, ale już istnieje w miejscu docelowym, możesz chcieć usunąć ten istniejący plik / katalog w miejscu docelowym podczas synchronizacji.
Możemy użyć opcji „ –delete ”, aby usunąć pliki, których nie ma w katalogu źródłowym.
Źródło i cel są zsynchronizowane. Teraz tworzę nowy plik test1.txt w miejscu docelowym.
# touch test1.txt
# rsync -avz --delete root@192.167.0.2:/var/lib/rpm/
Ustaw maksymalny rozmiar przesyłanych plików
Możesz określić maksymalny rozmiar pliku do przesłania lub synchronizacji. Możesz to zrobić za pomocą opcji „ –max-size ”. W tym przykładzie maksymalny rozmiar pliku to 300 KB , więc to polecenie prześle tylko te pliki, które są równe lub mniejsze niż 300 KB.
# rsync -avzhe ssh --max-size='300k' /var/lib/rpm/ root@192.167.0.2:/root/tmp
Ustaw limit przepustowości i plik transferu
Możesz ustawić limit przepustowości podczas przesyłania danych z jednego komputera na inny za pomocą opcji „ –bwlimit ”. Ta opcja pomaga nam ograniczyć przepustowość we / wy .
# rsync --bwlimit=150 -avzhe ssh /var/lib/rpm/ root@192.167.0.2:/root/tmp/