logo

Polecenie rsync w systemie Linux z przykładami

rsync lub zdalna synchronizacja to narzędzie programowe dla systemów uniksowych, które skutecznie synchronizuje pliki i katalogi między dwoma hostami lub maszynami. Jedno to źródło lub host lokalny, z którego będą synchronizowane pliki, drugie to host zdalny, na którym będzie miała miejsce synchronizacja. Zasadniczo są na to dwa sposoby rsync może kopiować/synchronizować dane:

  • Kopiowanie/synchronizacja do/z innego hosta za pośrednictwem dowolnej zdalnej powłoki, np ssh , rsz .
  • Kopiowanie/synchronizacja poprzez demona rsync przy użyciu protokołu TCP.

Rsync słynie z tego algorytm transferu delta , w którym kopiuje tylko różnice pomiędzy plikami źródłowymi znajdującymi się na hoście lokalnym a plikami istniejącymi na hoście docelowym lub zdalnym.



Przykład:

rsync local-file user@remote-host:remote-file>

Co się tutaj stało:

Rsync najpierw użyje SSH do połączeniauser>do zdalnego hosta i poproszęuser's>hasło. Po nawiązaniu połączenia wywoła rsync zdalnego hosta, a następnie oba programy określą, które części pliku lokalnego należy skopiować, aby plik zdalny pasował do pliku lokalnego. Zwróć uwagę na następujące zachowanie rsync:



  • Kopiowane są pliki, które nie istnieją na zdalnym hoście.
  • Zaktualizowane pliki zostaną zsynchronizowane, rsync skopiuje tylko zmienione części plików na zdalny host.
  • dokładnie takie same pliki nie są kopiowane na zdalny host.

Składnia polecenia `rsync` w systemie Linux

rsync [options] source [destination]>

Opcja dostępne w poleceniu `rsync` w systemie Linux

Opcje

Opis

a, –archiwum



Jest to równoznaczne z używaniem -rlptgoD . Tryb archiwizacji zawiera wszystkie niezbędne opcje, takie jak rekursywne kopiowanie plików, zachowując prawie wszystko (takie jak łącza symboliczne, uprawnienia do plików, własność użytkowników i grup oraz znaczniki czasu).

-v, –pełne

Domyślnie rsync działa w trybie cichym. Użycie pojedynczej opcji -v dostarcza informacji o przesłanych plikach i podsumowanie na końcu. Dodanie dwóch opcji -v daje aktualizacje statusu transmisji delta i pominiętych plików, wraz z dodatkowymi informacjami na końcu. Do debugowania rsync zwykle używa się wielu opcji -v.

bieżąca data w Javie

-h, –format czytelny dla człowieka

Dane wyjściowe w formacie czytelnym dla człowieka.

-z, –kompresuj

Kompresuj dane pliku podczas przesyłania

Przykłady

Używanie `rsync` jako polecenia listy

Jeśli określono tylko ścieżkę źródłową, zawartość źródła jest wyświetlana w formacie wyjściowym podobnym dols -l>.

rsync foo/>

Powyższe polecenie wyświetli listę plików i katalogów znajdujących się w katalogu bla .

Wyjście:

Kopiuj/synchronizuj pliki i katalog lokalnie

Jeśli ani ścieżka źródłowa, ani docelowa nie określa hosta zdalnego, polecenia rsync zachowują się jak polecenie kopiowania.

rsync -avh foo/ bar/>

Powyższe polecenie skopiuje/zsynchronizuje wszystkie pliki i katalogi znajdujące się w katalogufoo>do katalogu bar . Jeśli katalog docelowy nie jest obecny (tutajbar>), rsync automatycznie tworzy taki plik i kopiuje wszystkie zawarte w nim dane.

Wyjście:

Rsync przy użyciu ssh

Istnieją dwa różne sposoby, aby rsync mógł skontaktować się ze zdalnym systemem:

  • Używanie programu zdalnej powłoki jako transportu (takiego jakssh>(Bezpieczna powłoka) lubrsh>(Zdalna powłoka)).
  • Kontaktowanie się z demonem rsync bezpośrednio przez protokół TCP.

Tutaj będziemy omawiać rsync przez ssh.

rsync -avhze ssh /foo user@remote-host:/tmp/>

Aby określić typ protokołu, który ma być używany,-e>opcja jest używana.

Wyjście:

Rsync z określonymi uprawnieniami do plików

Jeśli chcemy synchronizować pliki z hostem lokalnym lub zdalnym, zmieniając uprawnienia do plików. Należy użyć następującego polecenia.

jak odzyskać ukryte aplikacje
rsync -avhe ssh --chown=USER:GROUP /foo user@remote-host:/tmp/>

Powyższe polecenie zsynchronizuje wszystkie pliki znajdujące się w katalogu /bla z plikami znajdującymi się w katalogu /tmp wremote-host>ze wszystkimi plikami, których właścicielem jest USER z grupy GROUP.

Wyjście:

Notatka: Theuser>Igroup>musi już zostać utworzony na zdalnym hoście.

Rsync z --ignore-existing-files>

Możemy także pominąć już istniejące pliki w miejscu docelowym. Można tego ogólnie użyć, gdy wykonujemy kopie zapasowe za pomocą –link-dest opcję, kontynuując wykonywanie kopii zapasowej, które zostało przerwane.

rsync --ignore-existing -avhe /foo user@remote-host:/tmp/>

Zatem wszelkie pliki, które nie istnieją w miejscu docelowym, zostaną skopiowane. Tutaj usunąłemgeeksforgeeks>folder z katalogufoo>, więc powinien skopiować tylko plikgeeksforgeeks>informator.

Notatka: Nie ignoruje to istniejących katalogów, w przeciwnym razie nic nie zostanie zrobione. Nawet jeśli w pliku na hoście lokalnym wprowadzono pewne zmiany, nadal nie zostanie on zsynchronizowany, jeśli znajduje się na hoście zdalnym.

Wyjście:

Pokaż postęp podczas transferu

Aby pokazać postęp podczas przesyłania danych z hosta lokalnego do hosta zdalnego, możemy użyć-–progress>opcja.

rsync -avhe ssh --progress /foo user@remote-host:/tmp/>

Po zakończeniu przesyłania konkretnego pliku rsync wyświetla linię podsumowania, jak pokazano poniżej.

Wyjście:

Na powyższym obrazku, jeśli spojrzymy na plik/foo/file2>, mówi nam to

  • Plik miał w sumie 44 bajty.
  • Średnia szybkość przesyłania całego pliku wyniosła 42,97 kilobajtów na sekundę w ciągu 0:00:00 sekund potrzebnych na jego ukończenie.
  • Był to drugi transfer w obecnej kadencji rsync sesja.
  • Z wszystkich 13 plików na liście plików, zdalny host musi sprawdzić jeszcze 10 plików (aby sprawdzić, czy są aktualne).
  • Zaktualizuj pilota tylko wtedy, gdy w lokalnym systemie plików znajduje się nowsza wersja:
    Jeśli chcemy skopiować pliki na zdalnym hoście, które zostały ostatnio zaktualizowane w lokalnym systemie plików. To się skończyło -aktualizacja flaga. Zachowanie wygląda teraz tak:
    • Kopiowane są pliki, które nie istnieją na zdalnym hoście.
    • Pliki, które istnieją zarówno na serwerze lokalnym, jak i zdalnym, ale mają nowszy znacznik czasu na hoście lokalnym, są kopiowane do hosta zdalnego. (I odwrotnie, pliki ze starszym znacznikiem czasu nie są kopiowane).

    Tutaj wprowadziłem pewne zmiany plik1 I plik2 , ale zmiany w plik2 zostały zrobione niedawno. Więc tylko plik2 zostanie zsynchronizowany.

    rsync -avhe ssh --progress --update /foo root@remote-host:/tmp/>

    Wyjście: aktualizacja rsync

    Automatycznie usuwaj pliki z hosta lokalnego po pomyślnym przesłaniu

    Załóżmy teraz, że mamy serwer WWW i serwer kopii zapasowych, utworzyliśmy codzienną kopię zapasową i zsynchronizowaliśmy ją z naszym serwerem kopii zapasowych, a następnie nie chcemy przechowywać lokalnej kopii kopii zapasowej na naszym serwerze internetowym. Zamiast więc usuwać go ręcznie po udanym transferze, możemy użyć--remove-source-files>flagę, aby automatycznie usunąć pliki z serwera WWW.

    rsync -avhe ssh --remove-source-files /foo user@backup-server:/tmp>

    Wyjście:

    Notatka: Spowoduje to usunięcie tylko plików, a nie katalogów.

    Usuń pliki, które zostały usunięte na hoście lokalnym

    Jeśli są jakieś pliki, które zostały usunięte na hoście lokalnym i chcemy, aby zostały one zaktualizowane również na hoście zdalnym, musimy użyć metody--delete>opcja.

    python os listdir
    rsync -avhe ssh /foo --delete user@remote-host:/tmp/>

    Wyjście:

    Więc tu plik1 , plik2 , plik3 zostały usunięte na hoście lokalnym i, jak widać, są również aktualizowane na hoście zdalnym.

    Uwaga: ` rsync` nie usuwa automatycznie plików, aby zsynchronizować katalogi obecne po obu stronach.

    Wykonywanie uruchomienia próbnego za pomocą `rsync`

    Uruchomienie próbne powoduje, że `rsync` wykonuje uruchomienie próbne, które nie wprowadza żadnych zmian i wyświetla prawie takie same dane wyjściowe, jak w przypadku prawdziwego uruchomienia. Zwykle używa się go z opcjami -v, –verbose i/lub -i, –itemize-changes, aby zobaczyć, co zrobi polecenie `rsync`, zanim zostanie faktycznie uruchomione.

    rsync -avhe ssh --dry-run --chown=USER:GROUP /foo user@remote-host:/>

    Wyjście:

    Wniosek

    W tym artykule omówiliśmy polecenie rsync w systemie Linux, które jest wszechstronnym i potężnym narzędziem do synchronizowania plików i katalogów między hostami lub maszynami. Dzięki algorytmowi transferu delta i różnym opcjom oferuje wydajną synchronizację danych, możliwości tworzenia kopii zapasowych i zarządzanie transferem plików. Opanowując polecenie rsync, użytkownicy Linuksa mogą zapewnić spójność plików, zoptymalizować transmisję danych i usprawnić przepływy pracy związane z zarządzaniem danymi.