15 przykładów Rsync

15 Przykladow Rsync



Przesyłanie plików z jednej lokalizacji do innej lokalizacji jest bardzo częstym zadaniem użytkownika systemu Linux. W systemie Linux dostępnych jest wiele opcji umożliwiających wykonanie tego zadania; „rsync” jest jednym z nich. Pełna forma „rsync” to „Remote Sync”. Jest to bardzo przydatne narzędzie synchronizacji do kopiowania plików i folderów z jednego systemu do innego systemu lokalnie lub zdalnie. Ma o wiele więcej zalet niż inne narzędzia do synchronizacji. To narzędzie jest domyślnie instalowane w systemie Linux. Użytkownik nie musi więc go instalować. W tym samouczku przedstawiono zalety i zastosowania polecenia „rsync” na 15 prostych przykładach.

Zalety polecenia „Rsync”.

  1. Jest szybszy niż inne narzędzia, ponieważ kopiuje tylko te pliki z lokalizacji źródłowej do lokalizacji docelowej, które zostały zmodyfikowane lub nie istnieją w lokalizacji docelowej.
  2. Obsługuje niepełny transfer.
  3. Wymaga mniejszej przepustowości, ponieważ kompresuje dane podczas transmisji.
  4. Zmniejsza narzut związany z transmisją, ponieważ mniej ważne dane mogą być przesyłane bez szyfrowania.

Składnia

Składnia polecenia „rsync” jest przedstawiona poniżej:

rsync [Opcja] Miejsce docelowe źródła

Tutaj ścieżki źródłowe i docelowe mogą być lokalne lub zdalne. W tym poleceniu można używać różnych typów opcji do różnych celów.







Przydatne opcje polecenia „Rsync”.

Poniżej wyjaśniono niektóre często używane opcje polecenia „rsync”:



Opcja Zamiar
-z Służy do kompresji danych podczas transmisji.
-R Służy do rekurencyjnej synchronizacji danych bez zachowania jakichkolwiek uprawnień do plików.
-A Służy do rekurencyjnej synchronizacji danych z zachowaniem wszystkich uprawnień do plików.
-B Służy do przechowywania kopii zapasowej danych podczas transmisji.
-W Służy do wyświetlania danych wyjściowych w pełnym formacie.
-P Służy do wyświetlania postępu transferu.
-N Służy do sprawdzenia, czy synchronizacja działa, czy nie przed przesłaniem plików lub folderów.

Lista 15 przykładów „Rsync”.

  1. Przenieś lokalnie pojedynczy plik i folder
  2. Przesyłaj wiele plików i folderów lokalnie
  3. Przesyłaj zdalnie pojedynczy plik i folder
  4. Przesyłaj zdalnie wiele plików i folderów
  5. Wyświetl postęp transferu
  6. Kompresuj dane podczas przesyłania
  7. Transfer z limitem przepustowości
  8. Przesyłaj pliki i foldery rekurencyjnie
  9. Przelew z limitem minimalnego rozmiaru
  10. Przelew z limitem maksymalnego rozmiaru
  11. Prześlij pliki określonego typu
  12. Wyświetl różnice między plikami źródłowymi i docelowymi
  13. Uwzględnij lub wyklucz pliki podczas przesyłania
  14. Zsynchronizuj dane w trybie suszenia
  15. Usuń pliki źródłowe i foldery po przesłaniu

Przenieś lokalnie pojedynczy plik i folder

Uruchom polecenie „ls”, aby wyświetlić listę plików i folderów w bieżącej lokalizacji. Następnie uruchom polecenie „rsync”, aby przenieść plik „employees.txt” do pliku „employees_copy.txt” lokalnie. Uruchom ponownie polecenie „ls”, aby sprawdzić, czy plik został przesłany poprawnie, czy nie.



$ ls
$ rsync pracownicy.txt pracownicy_kopia.txt
$ ls

Poniższe dane wyjściowe pokazują, że plik „employee.txt” został pomyślnie przesłany:





Załóżmy, że zawartość folderu tymczasowego musi zostać przeniesiona do folderu tempdir, w którym w obu folderach znajduje się plik „courses.txt”. Uruchom polecenie „ls temp”, aby sprawdzić zawartość folderu tymczasowego. Następnie uruchom polecenie „cat temp/courses.txt”, aby sprawdzić zawartość tego pliku. Następnie uruchom polecenie „ls tempdir”, aby sprawdzić zawartość folderu tempdir. Następnie uruchom polecenie „cat tempdir/courses.txt”, aby sprawdzić zawartość tego pliku.



$ l temp
$ cat temp/kursy.txt
$ lstempdir
$ cat tempdir/kursy.txt

Dane wyjściowe pokazują, że zawartość pliku „courses.txt” w folderach temp i tempdir jest nieco inna, a plik „courses.txt” w folderze temp zawiera więcej danych niż plik „courses.txt” w folderze tempdir .

Uruchom następujące polecenie, aby przenieść zawartość folderu tymczasowego do folderu tempdir i sprawdź zawartość pliku „courses.txt” w folderze tempdir, aby potwierdzić, że plik został poprawnie zaktualizowany:

$ rsync -a temp/ tempdir/
$ lstempdir
$ cat tempdir/kursy.txt

Poniższe dane wyjściowe pokazują, że zawartość folderu tymczasowego została prawidłowo przeniesiona do folderu tempdir, a zawartość pliku „courses.txt” folderu tempdir została poprawnie zaktualizowana:

Przesyłaj wiele plików i folderów lokalnie

Polecenia „rsync” można użyć do lokalnego przesyłania wielu plików i folderów. Uruchom następujące polecenie, aby przenieść pliki „ping1.bash” i „ping2.bash” do folderu tempdir i sprawdź zawartość folderu tempdir po przesłaniu. Opcja -v jest używana z poleceniem „rsync”, aby wyświetlić dane wyjściowe w pełnym formacie:

$ rsync -v ping1.bash ping2.bash tempdir/
$ lstempdir

Poniższe dane wyjściowe pokazują, że wiele plików zostało poprawnie przesłanych do folderu tempdir:

Uruchom następujące polecenia, aby sprawdzić zawartość folderów temp, tempdir i test oraz przenieść zawartość folderów test i tempdir do folderu tymczasowego:

$ l temp
$ lstempdir
$ ls test
$ rsync -av test/ tempdir/ temp/
$ l temp

Dane wyjściowe pokazują, że zawartość folderów test i tempdir została pomyślnie przeniesiona do folderu tymczasowego. Pliki „customers.csv”, „ping1.bash” i „ping2.bash” są dodawane jako nowe pliki do folderu tymczasowego:

Przesyłaj zdalnie pojedynczy plik i folder

Musisz zainstalować i skonfigurować serwer SSH w zdalnej lokalizacji, aby zdalnie przesyłać pliki i foldery. Możesz to sprawdzić instruktaż skonfigurować serwer SSH.

Uruchom następujące polecenie, aby sprawdzić rozmiar pliku „courses.txt” bieżącej lokalizacji:

ls -la kursy.txt

Dane wyjściowe pokazują, że rozmiar pliku „courses.txt” wynosi 65 bajtów:

Uruchom następujące polecenie, aby przenieść plik „courses.txt” do pliku /home/ubuntu/kursy/ folder lokalizacji zdalnej, ubuntu@192.168.0.101. Przed przesłaniem pliku musisz podać hasło roota zdalnej maszyny:

rsync -v kursy.txt  ubuntu@192.168.0.101:/home/ubuntu/kursy/

Poniższe dane wyjściowe pokazują, że plik „courses.txt” został prawidłowo przeniesiony na zdalną maszynę, a rozmiar pliku wynosi 65 bajtów:

Uruchom następujące polecenie, aby przenieść folder tymczasowy do pliku /home/ubuntu/kursy/ folder lokalizacji zdalnej, ubuntu@192.168.0.101. Musisz podać hasło roota zdalnej maszyny przed przesłaniem pliku, tak jak w poprzednim poleceniu.

rsync -av temp/ ubuntu@192.168.0.101:/home/ubuntu/kursy/

Poniższe dane wyjściowe pokazują, że zawartość folderu tymczasowego została prawidłowo przesłana do komputera zdalnego:

Przesyłaj zdalnie wiele plików i folderów

Następujące polecenie „rsync” przenosi pliki „customers.csv” i „department.json” do /home/Ubuntu/pliki/ folder lokalizacji zdalnej, ubuntu@192.168.0.101.

rsync -av klienci.csv departament.json ubuntu@192.168.0.101:/home/ubuntu/files/

Poniższe dane wyjściowe pokazują, że wiele plików zostało pomyślnie przesłanych do lokalizacji zdalnej:

Następujące polecenie „rsync” przenosi zawartość folderów temp i test oraz pliku „department.json” do /home/Ubuntu/pliki/ folder lokalizacji zdalnej, ubuntu@192.168.0.101.

rsync -av temp/ test/ departament.json ubuntu@192.168.0.101:/home/ubuntu/files/

Poniższy wynik pokazuje, że zawartość wielu folderów została pomyślnie przeniesiona do lokalizacji zdalnej:

Wyświetl postęp transferu

Uruchom polecenie „rsync” z opcją –progress, aby przenieść zawartość folderu tempdir do folderu temp_copy z informacjami o postępie.

rsync -a tempdir/ temp_copy --progress

Poniższe dane wyjściowe pokazują, że katalog temp_copy jest tworzony lokalnie, a zawartość folderu tempdir została pomyślnie przeniesiona do folderu temp_copy:

Kompresuj dane podczas przesyłania

Uruchom następującą komendę „rsync” z opcją –z, aby skompresować i przenieść lokalnie katalog tempdir do katalogu testowego:

rsync -za tempdir/test/

Poniższe dane wyjściowe pokazują, że skompresowany katalog został pomyślnie przesłany lokalnie:

Transfer z limitem przepustowości

Uruchom następującą komendę „rsync” z opcją –bwlimit o wartości 100, aby lokalnie przenieść plik /etc/passwd do folderu tymczasowego:

rsync -v --bwlimit=100 etc/passwd temp/

Poniższe dane wyjściowe pokazują, że plik passwd został przesłany pomyślnie:

Przenieś plik i folder rekurencyjnie

Uruchom następujące polecenie „rsync” z opcją –rv, aby lokalnie przenieść folder testowy do folderu test_bak:

rsync -rv test/ test_bak/

Poniższe dane wyjściowe pokazują, że folder testowy został pomyślnie przeniesiony do folderu test_bak:

Przelew z limitem minimalnego rozmiaru

Przesyłanie plików i folderów za pomocą polecenia „rsync” można ograniczyć za pomocą opcji –min-size, aby ustawić minimalny limit rozmiaru przesyłanych plików i folderów. Uruchom następujące polecenie „ls -la tempdir”, aby sprawdzić rozmiar każdego pliku i folderu w tym folderze. Następnie uruchom polecenie „rsync”, aby przenieść zawartość folderu tempdir do folderu tempdir_bak z minimalnym limitem rozmiaru.

ls -la tempdir
rsync -av --min-size='245B' tempdir/tempdir_bak

Poniższe dane wyjściowe pokazują, że w folderze tempdir istnieją dwa pliki o rozmiarze odpowiadającym minimalnemu rozmiarowi. Są to „ping1.bash” (248 bajtów) i „test.txt” (34504 bajty). Te pliki są przenoszone do folderu tempdir_bak, a inne pliki z folderu tempdir są pomijane:

Przelew z limitem maksymalnego rozmiaru

Przesyłanie plików i folderów za pomocą polecenia „rsync” można ograniczyć za pomocą opcji –max-size, aby ustawić maksymalny limit rozmiaru przesyłanych plików i folderów. Uruchom następujące polecenie „ls -la temp”, aby sprawdzić rozmiar każdego pliku i folderu w tym folderze. Następnie uruchom polecenie „rsync”, aby przenieść zawartość folderu tymczasowego do folderu temp_bak z maksymalnym limitem rozmiaru.

ls-la temp
rsync --max-size='250B' temp/ temp_bak/

Poniższe dane wyjściowe pokazują, że w folderze tymczasowym istnieją cztery pliki, które odpowiadają maksymalnemu limitowi rozmiaru. Są to „courses.txt” (65 bajtów), „employees.csv” (361 bajtów), „ping1.bash” (248 bajtów) i „ping2.bash” (244 bajty). Te pliki są przenoszone do folderu temp_bak, a inne pliki w folderze temp są pomijane:

Prześlij pliki określonego typu

Typ pliku, który zostanie przesłany, można ustawić, podając rozszerzenie pliku w poleceniu „rsync”. Uruchom następujące polecenie „rsync”, aby przenieść wszystkie pliki tekstowe z folderu tymczasowego do folderu mydir. Tutaj rozszerzenie pliku tekstowego jest oznaczone za pomocą „*.txt”:

rsync -v temp/*.txt mój katalog/

Poniższy wynik pokazuje, że dwa pliki tekstowe „courses.txt” i „test.txt” są przenoszone do folderu mydir, a pozostałe pliki z folderu tymczasowego są pomijane:

Wyświetl różnice między plikami źródłowymi i docelowymi

Gdy pliki lub foldery są przesyłane z jednej lokalizacji do innej lokalnie lub zdalnie, obie lokalizacje mogą zawierać te same pliki lub foldery. Różnice między źródłem a miejscem docelowym podczas transmisji można sprawdzić za pomocą opcji -i w poleceniu „rsync”. Uruchom następujące polecenia „cat”, aby sprawdzić zawartość pliku źródłowego i docelowego przed transferem. Tutaj plik „courses.txt” jest przenoszony do folderu tymczasowego.

kursy dla kotów.txt
cat temp/kursy.txt
rsync -avi kursy.txt temp/

Poniższe dane wyjściowe pokazują, że plik „courses.txt” źródła i miejsca docelowego nieco się różnią. Dane wyjściowe polecenia „rsync” pokazują różnicę między plikami:

Zsynchronizuj dane w trybie suszenia

Jeśli chcesz wiedzieć, które pliki i foldery są przesyłane za pomocą polecenia „rsync” przed faktycznym transferem, lepiej jest uruchomić polecenie „rsync” z opcją –dry-run lub opcją –n. Gdy polecenie „rsync” jest wykonywane z tą opcją, sprawdza, które pliki lub foldery są kopiowane z folderu źródłowego do folderu docelowego, ale folder docelowy pozostaje niezmieniony. Uruchom plik „ls –la Department.json”, aby sprawdzić rozmiar pliku. Następnie uruchom polecenie „rsync” z trybem –dry-run, aby sprawdzić przeniesienie „department.json” do folderu tymczasowego.

ls -la dział.json
rsync -v --dry-run dział.json temp/

Poniższe dane wyjściowe pokazują, że rozmiar pliku „department.json” wynosi 1172 bajty. Rozmiar pliku pokazuje 1172 bajty po wykonaniu polecenia „rsync” z opcją –dry-run:

Uwzględnij lub wyklucz pliki podczas przesyłania

Możesz filtrować typ pliku w momencie przesyłania z lokalizacji źródłowej do lokalizacji docelowej za pomocą opcji –include i –exclude. Opcja „optionsinclude” służy do zdefiniowania rozszerzenia tych plików, które zostaną przesłane ze źródła do miejsca docelowego. Opcja –exclude służy do zdefiniowania rozszerzenia tych plików, które nie zostaną przeniesione ze źródła do miejsca docelowego.

Uruchom następujący folder „ls temp”, aby sprawdzić zawartość folderu tymczasowego. Następnie uruchom polecenie „rsync” z opcjami –include i –exclude. Zgodnie z poleceniem wszystkie pliki CSV z folderu tymczasowego są przenoszone do folderu plików, a wszystkie pliki tekstowe z folderu tymczasowego są pomijane w momencie przesyłania. Następnie uruchom polecenie „ls files”, aby sprawdzić, które pliki są przesyłane z folderu tymczasowego do folderu plików.

czy temp
rsync -a temp/ pliki/ --include=*.csv --exclude=*.txt
ls pliki

Poniższe dane wyjściowe pokazują, że folder tymczasowy zawiera dwa pliki CSV, dwa pliki tekstowe i dwa pliki BASH. Folder plików jest pusty przed transferem i przesyłane są dwa pliki CSV i dwa pliki BASH:

Usuń pliki źródłowe i foldery po przesłaniu

W poprzednich wszystkich poleceniach „rsync” pliki i foldery źródłowe pozostają w lokalizacji źródłowej po przesłaniu do lokalizacji docelowej. Ale czasami wymaga to trwałego przeniesienia plików i folderów do lokalizacji docelowej. To zadanie można wykonać za pomocą opcji –remove-source-files za pomocą polecenia „rsync”. Uruchom polecenie „ls”, aby sprawdzić wszystkie pliki i foldery w bieżącej lokalizacji. Uruchom polecenie „ls temp”, aby sprawdzić pliki i foldery w folderze tymczasowym. Następnie uruchom polecenie „rsync” z opcją –remove-source-files, aby usunąć pliki i foldery z lokalizacji źródłowej po zakończeniu przesyłania. Uruchom ponownie polecenie „ls”, aby sprawdzić, czy plik źródłowy został usunięty z lokalizacji źródłowej, czy nie.

ls
czy temp
rsync pracownicy.csv temp/ --remove-source-files
ls

Poniższe dane wyjściowe pokazują, że plik „employees.csv” z bieżącej lokalizacji jest przenoszony do folderu tymczasowego, a plik „employees.csv” jest usuwany z lokalizacji źródłowej po przeniesieniu:

Wniosek

„rsync” to bardzo przydatne narzędzie systemu Linux, które ułatwia przesyłanie plików i folderów z jednej lokalizacji do drugiej za pomocą różnych opcji. Metody wykorzystania polecenia „rsync” do przenoszenia plików i folderów z jednej lokalizacji do drugiej poprzez kompresję, ustawianie rozmiaru plików i folderów, ustawianie typu pliku, ustawianie limitu przepustowości itp. pokazano na 15 prostych przykładach ten samouczek. Ten samouczek pomaga użytkownikom Linuksa poprawnie poznać podstawowe zastosowania polecenia „rsync” w systemie Linux.