Kopiowanie i tworzenie kopii zapasowych plików i folderów przy użyciu narzędzia Rsync

Więcej o Rsync

Rsync to szybkie i wszechstronne narzędzie do kopiowania plików i folderów. Narzędzie może kopiować dane zarówno lokalnie, jak i do innych hostów, w tym Cloud Storage od Introserv.
Opcje narzędzia pozwalają kontrolować wiele aspektów kopiowania danych i tworzenia kopii lustrzanych.
Jedną z głównych funkcji jest możliwość kompresji danych podczas wysyłania, co pozwala przyspieszyć proces kopiowania między serwerami.
Kolejną zaletą jest wyjątek podczas kopiowania identycznych plików. W związku z tym kopiowane lub przesyłane będą tylko różne pliki, co niewątpliwie pozwoli zaoszczędzić czas synchronizacji dużych katalogów.

Opcje narzędziowe

Przyjrzyjmy się przykładom użycia Rsync do kopiowania plików i katalogów do zdalnego Cloud Storage z Introserv przy użyciu protokołu SSH. Ważne! Podobne polecenia, określające jedynie serwer docelowy, pozwalają kopiować katalogi i pliki na dowolny serwer zdalny za pośrednictwem SSH.

Przyjrzyjmy się niektórym z głównych opcji narzędzia, które będą najczęściej używane. Bardziej szczegółowa lista dostępnych opcji dostępna jest w dokumentacji man( polecenieman rsync ):

-v - wyświetlanie szczegółowych informacji o procesie
-c - sprawdzanie sum kontrolnych plików
-q - minimalne informacje
-a - tryb archiwizacji
-R - ścieżki względne
-y - nie nadpisuj nowszych plików
-b - tworzenie kopii zapasowej
-l - kopiowanie dowiązań symbolicznych
-L - kopiowanie zawartości linków
-H - kopiowanie twardych linków
-g - zachowaj grupę
-p - zachowanie uprawnień do plików
-t - zachowaj czas modyfikacji
-x - działa tylko w tym FS
-e - użyj innego protokołu transportowego (na przykład ssh)
-z - skompresuj pliki przed przesłaniem
--delete - usuwa pliki, których nie ma w źródle
--exclude - wyklucza pliki
--recursive - wylicza katalogi rekurencyjnie
--no-recursive - wyłącza rekurencję
--progress - wyświetla postęp transferu plików
--stat - wyświetla statystyki transferu
--max-size - maksymalny rozmiar przesyłanego pliku
--bwlimit - ograniczenie prędkości transferu plików

Krótkie wyjaśnienie składni

rsync -az -- progress /home/user/test.file boxxxx@boxxxxx.introserv.cloud:/remote_folder/

-az --progress opcje, które wskazują, że konieczne jest zarchiwizowanie przesyłanego pliku, skompresowanie go przed przesłaniem, a także wyświetlenie postępu kopiowania na ekranie;

/home/user/test.file jest to ścieżka do pliku i sam plik, który ma zostać przesłany;

boxxxx@boxxxxx.introserv.cloud: jest to zasób docelowy (w naszym przykładzie jest to pamięć masowa w chmurze, ale może to być również serwer zdalny) boxxxx to nazwa użytkownika, po znaku @ jest to nazwa zasobu lub adres IP serwera zdalnego;

/remote_folder/ to folder na zdalnym zasobie. W naszym przykładzie - w Introserv Cloud Storage.

Kopiowanie jednego pliku do folderu w zdalnej pamięci masowej

rsync -az --progress /home/user/Desktop/test.file boxxxxx@boxxxxx.introserv.cloud:/remote_folder/

Zostaniesz poproszony o podanie hasła do połączenia z pamięcią masową:

Wprowadź hasło i kontynuuj, zobaczysz postęp i prędkość transferu plików:

Kopiowanie folderu do folderu w zdalnej pamięci masowej

Zwróć uwagę na ukośniki w wierszach folderu źródłowego i folderu docelowego. Brak ukośnika w folderze źródłowym wskazuje, że chcemy rekurencyjnie przenieść lokalny folder Desktop z całą jego zawartością do folderu remote_folder.

rsync -azr --progress /home/user/Desktop boxxxx@boxxxx.introserv.cloud:/remote_folder/

Zobaczysz, że katalog i wszystkie znajdujące się w nim pliki zostaną przeniesione:

Kopiowanie zawartości folderu lokalnego do folderu w zdalnej pamięci masowej

Zwróć uwagę na ukośnik na końcu folderu źródłowego. Jego obecność wskazuje, że narzędzie powinno skopiować zawartość folderu lokalnego do folderu na zdalnej pamięci masowej

rsync -avzr --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Zobaczysz postęp i szybkość kopiowania:

Kopiowanie folderu ze zdalnej pamięci masowej do folderu na serwerze lokalnym

Za pomocą Rsync można zainicjować kopiowanie folderu ze zdalnego magazynu. Polecenie wygląda następująco:

rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder /home/user/Desktop/

Zobaczysz postęp i szybkość kopiowania zdalnego folderu do folderu na serwerze lokalnym:

Kopiowanie zawartości folderu ze zdalnego magazynu do folderu na serwerze lokalnym

W tym miejscu warto również zwrócić uwagę na ukośnik na końcu ścieżki folderu źródłowego. Jego obecność wskazuje, że tylko zawartość folderu musi zostać skopiowana

rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder/ /home/user/Desktop/

Kopiowanie zawartości folderu z wyłączeniem i/lub uwzględnieniem plików

Narzędzie pozwala wyraźnie określić, które pliki mają zostać przesłane, a które powinny zostać wykluczone. W tym celu należy użyć opcji --include i --exclude.

rsync -azr --progress --include 'test.file' --exclude 'test.file2' /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Zobaczysz, że przesyłany jest tylko jeden plik, określony przez opcję --include. Należy pamiętać, że opcje include i exclude mogą być używane niezależnie od siebie

Kopiuj tylko pliki, które różnią się od plików w folderze docelowym

Aby anulować kopiowanie identycznych plików, należy użyć opcji -c w celu sprawdzenia sum kontrolnych plików. Pozwoli to wykluczyć z procesu kopiowania te pliki, które już znajdują się w folderze docelowym.

rsync -azrс --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Zobaczysz, że tylko 3 pliki zostały skopiowane do zdalnego folderu, z wyjątkiem pliku test.odt, który jest już w zdalnej pamięci masowej:

Używanie Rsync przez SSH z niestandardowym portem SSH

Aby przesłać pliki z/do serwera ze zmienionym portem SSH, należy użyć opcji -e 'ssh -p port_numer'

Polecenie kopiowania pliku na serwer, na którym port SSH został zmieniony na 44, będzie wyglądać następująco:

rsync -azrс --progress -e 'ssh -p44' /home/user/Desktop/ user@server_ip:/remote_folder/