Kopiowanie i tworzenie kopii zapasowych plików i folderów przy użyciu narzędzia 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 na inne hosty, w tym do Cloud Storage od Introserv. Opcje narzędzia pozwalają kontrolować wiele aspektów kopiowania i tworzenia kopii lustrzanych danych. Jedną z głównych funkcji jest możliwość kompresji danych podczas wysyłania, co pozwala przyspieszyć proces kopiowania między serwerami. Kolejną zaletą jest pomijanie identycznych plików podczas kopiowania. Dzięki temu kopiowane lub przesyłane będą tylko różniące się pliki, co niewątpliwie pozwoli zaoszczędzić czas synchronizacji dużych katalogów.
Opcje narzędzia
Przyjrzyjmy się przykładom użycia Rsync do kopiowania plików i katalogów do zdalnego Cloud Storage od Introserv przy użyciu protokołu SSH. Ważne! Podobne polecenia, z określeniem serwera docelowego, pozwolą kopiować katalogi i pliki na dowolny zdalny serwer przez SSH.
Przyjrzyjmy się niektórym głównym opcjom narzędzia, które będą używane najczęściej. Bardziej szczegółowa lista dostępnych opcji znajduje się w dokumentacji man (polecenie man rsync):
-v – wyświetlanie szczegółowych informacji o procesie
-c – sprawdzanie sum kontrolnych plików
-q – minimalna ilość informacji
-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 dowiązań
-g – zachowanie grupy
-p – zachowanie uprawnień do plików
-t – zachowanie czasu modyfikacji
-x – praca tylko w tym systemie plików
-e – użycie innego protokołu transportowego (np. ssh)
-z – kompresja plików przed przesłaniem
--delete – usuwanie plików, których nie ma w źródle
--exclude – wykluczanie plików
--recursive – rekurencyjne przeglądanie katalogów
--no-recursive – wyłączenie rekurencji
--progress – wyświetlanie postępu przesyłania plików
--stat – wyświetlanie statystyk przesyłania
--max-size – maksymalny rozmiar pliku do przesłania
--bwlimit – ograniczenie prędkości przesyłania plików
Krótkie wyjaśnienie składni
rsync -az --progress /home/user/test.file boxxxx@boxxxxx.introserv.cloud:/remote_folder/
-az --progress – opcje wskazujące, że należy zarchiwizować przesyłany plik, skompresować go przed przesłaniem, a także wyświetlić postęp kopiowania na ekranie
/home/user/test.file – ścieżka do pliku i sam plik, który ma zostać przesłany
boxxxx@boxxxxx.introserv.cloud: – zasób docelowy (w naszym przykładzie jest to cloud storage, ale może to być również zdalny serwer). boxxxx to nazwa użytkownika, po znaku @ znajduje się nazwa zasobu lub adres IP zdalnego serwera
/remote_folder/ – folder na zdalnym zasobie. W naszym przykładzie – w Introserv Cloud Storage.
Kopiowanie jednego pliku do folderu na zdalnym storage
rsync -az --progress /home/user/Desktop/test.file boxxxxx@boxxxxx.introserv.cloud:/remote_folder/
Zostaniesz poproszony o podanie hasła do połączenia ze storage. Wprowadź hasło i kontynuuj – zobaczysz postęp i prędkość przesyłania pliku.
Kopiowanie folderu do folderu na zdalnym storage
Zwróć uwagę na ukośniki w liniach folderu źródłowego i folderu docelowego. Brak ukośnika w folderze źródłowym oznacza, ż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 katalog i wszystkie pliki wewnątrz niego podczas przesyłania.
Kopiowanie zawartości lokalnego folderu do folderu na zdalnym storage
Zwróć uwagę na ukośnik na końcu folderu źródłowego. Jego obecność oznacza, że narzędzie powinno skopiować zawartość lokalnego folderu do folderu na zdalnym storage.
rsync -avzr --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/
Zobaczysz postęp i prędkość kopiowania.
Kopiowanie folderu ze zdalnego storage do folderu na lokalnym serwerze
Za pomocą Rsync możesz zainicjować kopiowanie folderu ze zdalnego storage. Polecenie wygląda następująco:
rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder /home/user/Desktop/
Zobaczysz postęp i prędkość kopiowania zdalnego folderu do folderu na lokalnym serwerze.
Kopiowanie zawartości folderu ze zdalnego storage do folderu na lokalnym serwerze
Tutaj również warto zwrócić uwagę na ukośnik na końcu ścieżki folderu źródłowego. Jego obecność oznacza, że należy skopiować tylko zawartość folderu.
rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder/ /home/user/Desktop/
Kopiowanie zawartości folderu z wykluczeniem i/lub włączeniem plików
Narzędzie pozwala jawnie określić, które pliki mają być przesyłane, a które powinny być 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 przesłany został tylko jeden plik, określony przez opcję --include. Pamiętaj, że opcje include i exclude mogą być używane oddzielnie.
Kopiowanie tylko plików różniących się od plików w folderze docelowym
Aby anulować kopiowanie identycznych plików, należy użyć opcji -c do sprawdzania sum kontrolnych plików. Pozwoli to wykluczyć z procesu kopiowania te pliki, które już znajdują się w folderze docelowym.
rsync -azrc --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/
Zobaczysz, że do zdalnego folderu skopiowane zostały tylko różniące się pliki, z wyjątkiem plików, które już znajdują się na zdalnym storage.
Używanie Rsync przez SSH z niestandardowym portem SSH
Aby przesłać pliki z/do serwera ze zmienionym portem SSH, użyj opcji -e 'ssh -p numer_portu'.
Polecenie kopiowania pliku na serwer, na którym port SSH został zmieniony na 44, będzie wyglądać następująco:
rsync -azrc --progress -e 'ssh -p44' /home/user/Desktop/ user@server_ip:/remote_folder/