W tym artykule wyjaśnimy, jak używać rsync do kopiowania plików z kilkoma praktycznymi przykładami. Wyjaśnimy również użycie rsync do kopiowania pojedynczego pliku, wielu plików i katalogu do systemów lokalnych i zdalnych. Omówimy, jak używać Rsync do:
- Skopiuj plik/katalog w systemie lokalnym
- Skopiuj plik/katalog z lokalnego do zdalnego systemu
- Skopiuj plik/katalog z systemu zdalnego do lokalnego
Wyjaśniliśmy polecenia i procedury wymienione w tym artykule na Ubuntu 20.04 LTS. Będziesz potrzebował terminala wiersza poleceń do kopiowania plików za pomocą rsync. Aby otworzyć aplikację Terminal w wierszu poleceń, użyj skrótu klawiaturowego Ctrl+Alt+T.
Instalowanie Rsync
Rsync jest preinstalowany w Ubuntu 20.04 LTS. Jeśli jednak zostanie przypadkowo usunięty z systemu, możesz go zainstalować w następujący sposób:
$ sudo apt install rsyncOto niektóre z najczęściej używanych opcji, których można użyć z rsync:
-a: tryb archiwum
-v: pokazuje szczegóły procesu kopiowania
-p: pokazuje pasek postępu
-r: kopiuje dane rekurencyjnie
-z: kompresuje dane
-P: tłumienie wyjścia
Kopiuj pliki i katalogi lokalnie
Ogólna składnia rsync to:
$ rsync [opcja] [źródło] [cel]Skopiuj jeden plik lokalnie
Jeśli chcesz skopiować plik z jednej lokalizacji do drugiej w systemie, możesz to zrobić, wpisując rsync następnie nazwa pliku źródłowego i katalog docelowy.
Na przykład, aby skopiować pojedynczy plik „plik1.txt” z bieżącej lokalizacji, czyli katalogu domowego do katalogu ~/Documents, polecenie to:
$ rsync /home/cyna/plik1.txt /home/cyna/Dokumenty
Uwaga: zamiast „/home/tin/file1.txt”, możemy również wpisać „plik1”, ponieważ aktualnie pracujemy w katalogu domowym. Ponadto możemy użyć ~/Documents zamiast wymieniać pełną ścieżkę jako „/home/tin/Documents”.
Kopiuj wiele plików lokalnie
Jeśli chcesz skopiować wiele plików jednocześnie z jednej lokalizacji do drugiej w systemie, możesz to zrobić, wpisując rsync następnie nazwa pliku źródłowego i katalog docelowy.
Na przykład, aby skopiować pliki „plik2.txt” i „plik3.txt” z katalogu domowego do katalogu ~/Documents, polecenie to:
$ rsync /home/tin/file2.txt /home/cyna/plik3.txt /home/cyna/Dokumenty
Aby skopiować wszystkie pliki o tym samym rozszerzeniu, możesz użyć symbolu gwiazdki(*) zamiast indywidualnie określać nazwy plików. Na przykład, aby skopiować wszystkie pliki z katalogu domowego kończące się na „.zip” do katalogu ~/Documents, użyjemy:
$ rsync /home/pl/*.zip ~/DokumentyKopiuj katalogi lokalnie
Jeśli chcesz skopiować katalog z jego podkatalogami i całą zawartością z jednej lokalizacji do drugiej w systemie, możesz to zrobić, wpisując rsync po którym następuje katalog źródłowy i docelowy.
Na przykład, aby skopiować katalog „sample” do katalogu „test/” w katalogu domowym, polecenie to:
$ rsync -av /home/tin/sample /home/tin/testUwaga: Określenie „/” po katalogu źródłowym kopiuje tylko zawartość katalogu. Jeśli nie określimy „/” po katalogu źródłowym, katalog źródłowy zostanie również skopiowany do katalogu docelowego.
Podobnie jak w poniższym wyjściu, możesz zobaczyć, że nasz katalog źródłowy „sample” jest również kopiowany do katalogu docelowego (ponieważ użyliśmy „sample” zamiast „sample/” jako katalogu źródłowego).
Rsync obsługuje transfer przyrostowy, jak widać na powyższym wyjściu, że przesyła tylko pliki, które są nowe lub zaktualizowane.
Skopiuj pliki na podstawie maksymalnego rozmiaru
Podczas kopiowania możemy również określić maksymalny rozmiar plików, które można skopiować za pomocą opcji „-max-size”. Na przykład, aby skopiować pliki nie większe niż 2000k z ~/Downloads do katalogu ~/Documents, polecenie powinno wyglądać tak:
$ rsync -a --max-size=2000k /home/tin/Downloads/* /home/tin/DocumentsTo polecenie skopiuje wszystkie pliki z ~/Downloads do katalogu ~/Documents z wyjątkiem tych większych niż 2000k.
Skopiuj pliki na podstawie minimalnego rozmiaru
Podobnie możemy również określić minimalny rozmiar plików, które można skopiować za pomocą opcji „-min-size”. Na przykład, aby skopiować pliki nie mniejsze niż 5M z ~/Downloads do katalogu ~/Documents, polecenie powinno wyglądać tak:
$ rsync -a --min-size=5M /home/tin/Downloads/ /home/tin/DocumentsTo polecenie skopiuje wszystkie pliki z ~/Downloads do katalogu ~/Documents z wyjątkiem tych mniejszych niż 5M.
Wyklucz pliki
Podczas kopiowania plików z jednego katalogu do drugiego możesz wykluczyć niektóre pliki za pomocą opcji „-exclude”, po której następuje nazwa pliku lub rozszerzenie typu pliku.
Na przykład, aby wykluczyć wszystkie .zip podczas kopiowania plików z ~/Downloads do katalogu ~/Documents, polecenie to:
$ rsync -a --exclude="*.zip" /home/pl/Pobieranie//home/pl/DokumentyKopiuj zdalnie pliki i katalogi
Dzięki Rsync możesz skopiować pojedynczy plik, wiele plików i katalogów do zdalnego systemu. Do zdalnego kopiowania plików i katalogów będziesz potrzebować:
- Rsync zainstalowany w systemie lokalnym i zdalnym
- Dostęp SSH do zdalnego systemu
- Hasło użytkownika zdalnego
Przed skopiowaniem plików za pomocą rsync upewnij się, że możesz uzyskać dostęp do zdalnego systemu przez SSH:
$ ssh zdalny_użytkownik@zdalny_ip
Ogólna składnia kopiowania plików i katalogów do systemu zdalnego za pomocą rsync:
Na przykład, aby skopiować pojedynczy plik „plik.txt” z katalogu ~/Downloads do systemu zdalnego ~/Documents, polecenie to:
$ rsync -v ~/Pobrane/plik1.txt [email protected]:~/Dokumenty
Podobnie, aby skopiować katalog „~/Downloads/files” w systemie lokalnym wraz z jego podkatalogiem i całą zawartością do katalogu „~/Downloads/samples” w systemie zdalnym:
$ rsync -rv ~/Pobieranie/pliki [email protected]:~/Pobieranie/próbki
Możesz także skopiować pliki i katalogi z komputera zdalnego na komputer lokalny. Na przykład, aby skopiować „plik2.txt” z systemu zdalnego na pulpit systemu lokalnego:
$ rsync -v [email protected]:~/Pobrane/plik2.txt ~/Pulpit/
Podobnie, aby skopiować katalog z systemu zdalnego do systemu lokalnego
$ rsync -rv [email protected]:~/Pobieranie/przykład ~/Pulpit/testMożesz także użyć wszystkich opcji, takich jak -max-size, -min-size, -exclude i innych podczas kopiowania plików do/z systemu zdalnego.
Rsync to świetne narzędzie do kopiowania plików ze źródła do miejsca docelowego lokalnie lub zdalnie. Zawiera duży zestaw opcji, które zapewniają elastyczność i kontrolę podczas przesyłania plików do/z systemu zdalnego.