Jak używać polecenia rsync do kopiowania danych lokalnie i przez SSH


Kopiowanie plików z jednej lokalizacji do drugiej jest dość podstawowym zadaniem i można je łatwo wykonać za pomocą polecenia cp. Czasami jednak musisz zrobić coś więcej. W tym miejscu pojawia się polecenie rsync, szczególnie podczas przesyłania większych plików. Rsync (Remote Sync) to narzędzie wiersza polecenia oparte na systemie Linux, którego można używać do synchronizacji i kopiowania plików między serwerami lokalnymi i zdalnymi. Umożliwia synchronizację plików między dwoma katalogami na tym samym komputerze, między katalogami na dwóch różnych komputerach w tej samej sieci, między dwoma katalogami w systemie zdalnym.

Główną zaletą rsync jest to, że zamiast ślepo kopiować całą zawartość, zamiast tego analizuje i przesyła tylko różnice między źródłem a miejscem docelowym, co może oszczędzić zasoby systemowe i przepustowość. Niektóre inne zalety rsync są następujące:

  • Kompresuje pliki przed przesłaniem
  • Może wyświetlić pasek postępu podczas przesyłania danych
  • Proces kopiowania można wstrzymać i wznowić później
  • Pozwala na transfer przez połączenie SSH

W tym artykule będziemy wyjaśnić, jak używać rsync do kopiowania danych w systemie Linux. Użyjemy Debiana 10 do opisania procedury wspomnianej w tym artykule.

Instalacja Rsync

Rsync jest domyślnie instalowany w większości systemów operacyjnych Linux. Jeśli jednak nie jest zainstalowany, możesz go zainstalować, wykonując następujące kroki:

Uruchom aplikację Terminal w swoim systemie, przechodząc do karty Działania w lewym górnym rogu pulpitu Debiana. Następnie w pasku wyszukiwania wpisz terminal . Gdy pojawi się ikona Terminala, kliknij ją, aby ją uruchomić.

Teraz uruchom poniższe polecenie w Terminalu, aby zainstalować narzędzie rsync:

$ apt install rsync

Korzystanie z Rsync

Każde polecenie rsync zaczyna się od rsync , a następnie opcja, w której możesz określić różne parametry. Rsync zapewnia szereg opcji, które dają ci kontrolę nad kształtowaniem specyfikacji transferu. Następnie jest źródło i miejsce docelowe, które zależy od tego, czy jest to maszyna zdalna czy lokalna.

Podstawowa składnia rsync to:

$ rsync [option] [source] [destination]

Niektóre ogólne opcje używane z poleceniami rsync:

  1. -v : verbose
  2. -a : tryb archiwizacji, pozwala na rekurencyjne kopiowanie plików i zachowuje dowiązania symboliczne, uprawnienia do plików, własność użytkowników i grup oraz znaczniki czasu
  3. -z : kompresuje dane
  4. -h : czytelny dla człowieka, generuje liczby w formacie czytelnym dla człowieka
  5. –max-size = ROZMIAR, przesyłaj pliki z określonym minimalnym ROZMIAREM
  6. –min-size = ROZMIAR, przesyłaj pliki z określonym maksymalnym ROZMIAREM

Teraz wyjaśnimy kilka przykładów użycia rsync z tymi opcjami.

Kopiuj pliki i katalogi na lokalny serwer

Kopiuj pliki lokalnie

Możesz skopiować pojedynczy lub wiele plików z katalogu źródłowego do katalogu docelowego na tym samym komputerze. Przykładem może być skopiowanie wszystkich .Pliki jpg z katalogu ~ / Downloads do katalogu ~ / Documents przy użyciu następującego polecenia:

$ rsync -zvh /home/tin/Downloads/*.jpg /home/tin/Documents

Po uruchomieniu powyższego polecenia wszystkie pliki .jpg w katalog źródłowy / home / tin / Downloads zostanie skopiowany do katalogu docelowego / home / tin / Documents .

W powyższym przykładzie użyliśmy opcji takich jak -z dla kompresji, -v dla pełnego wyjścia i -h dla wyjścia czytelnego dla człowieka.

Kopiuj katalogi lokalnie

Podobnie jak pliki, możesz także skopiować cały folder i pliki zawarte w katalogu za pomocą polecenia rsync. Przykładem może być skopiowanie wszystkich plików z katalogu ~ / Downloads do katalogu ~ / Documents za pomocą następującego polecenia:

$ rsync -zavh /home/tin/Downloads/ /home/tin/Documents

Skopiuj pliki na zdalny serwer

Możesz skopiować pojedynczy lub wiele plików z katalogu źródłowego do katalogu docelowego na zdalnym komputerze. Na przykład, aby skopiować pliki z lokalnego na komputer zdalny, użyj następującej składni polecenia:

$ rsync [options] [local path] [user]@[remote server]:[remote path]

Kopiowanie plików na podstawie maksymalnego rozmiaru

Można również określić maksymalny rozmiar pliku, który można skopiować ze źródła do miejsca docelowego za pomocą rsync. Aby to zrobić, użyj następującej składni komendy:

$ rsync --max-size=”” [source] [destination]

Przykładem może być skopiowanie plików o maksymalnym rozmiarze 4000 K ze źródła ~ / Downloads do katalogu docelowego ~ / Documents . W takim przypadku pliki o rozmiarze większym niż 4000k nie zostaną skopiowane do miejsca docelowego.

$ rsync --max-size=4000k /home/tin/Downloads/*.iso /home/tin/Documents/

Kopiowanie plików na podstawie minimalnego rozmiaru

Podobnie, można również określić minimalny rozmiar, który można skopiować ze źródła do miejsca docelowego za pomocą rsync. Aby to zrobić, użyj następującej składni komendy:

$ rsync --min-size=”” [source] [destination]

Przykładem może być skopiowanie plików o maksymalnym rozmiarze 2M ze źródła ~ / Downloads do katalogu docelowego ~ / Documents . Pliki o rozmiarze mniejszym niż 2M nie zostaną skopiowane przy użyciu rsync.

$ rsync --min-size=2M /home/tin/Downloads/*.iso /home/tin/Documents/

Przeglądaj postęp

Możesz również wyświetlić postęp podczas kopiowania plików za pomocą rsync. Dodaj flagę –progress zgodnie z poleceniem rsync, jak pokazano poniżej:

$ rsync --progress [source] [destination]

Przykładem może być przeglądanie postępów podczas kopiowania pliku ze źródła ~ / Pobieranie do miejsca docelowego ~ / Dokumenty katalog:

$ rsync --progress /home/tin/Downloads/VTS_03_1.VOB /home/tin/Documents

Wyklucz pliki

Można również wykluczyć niektóre pliki podczas kopiowania plików ze źródła do miejsca docelowego za pomocą rsync. Przykładem może być wykluczenie wszystkich plików .pdf podczas kopiowania plików ze źródła ~ / Downloads do katalogu docelowego ~ / Documents .

rsync -zavh --exclude="*.pdf" /home/tin/Downloads/ /home/tin/Documents

Po wprowadzeniu następującego polecenia wszystkie pliki zostaną skopiowane ze źródła do miejsca docelowego, z wyjątkiem plików .pdf .

To wszystko. Wyjaśniliśmy podstawowe użycie narzędzia rsync do kopiowania plików między różnymi katalogami lokalnie i zdalnie. Wyjaśniliśmy również kilka typowych i przydatnych opcji rync. Jest tak wiele opcji innych niż te, których można użyć do kontrolowania każdego aspektu zachowania transferu. Aby użyć tych opcji, zobacz strony podręcznika rsync.

Komentarze
bez sensu tytuł

"przez ssh" a nic na ten temat nie ma