]> gitweb.morketsmerke.org Git - mmdev.git/commitdiff
Tworzenie rozdziału 11. Zakończenie pisania 11.2.remotesync
authorxf0r3m <jakubstasinski@protonmail.com>
Mon, 18 Sep 2023 10:58:14 +0000 (12:58 +0200)
committerxf0r3m <jakubstasinski@protonmail.com>
Mon, 18 Sep 2023 10:58:14 +0000 (12:58 +0200)
articles/terminallog/Linux.Podstawy.html

index aadd41d286114dabedd03e2395f3fb67317dbcf5..129287945da4b51d940841e93895c6cc6ba09e1e 100644 (file)
@@ -9464,7 +9464,121 @@ Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
           Jest on powszechnie wykorzystywany przez administratorów do
           przesyłania danych między Uniksami. Program wymaga istnienia na obu
           stronach komunikacji oraz dostępu do powłoki (rsync domyślnie
-          wykorzystuje SSH)
+          wykorzystuje SSH). Program jeśli ma działać na zdalnym systemie
+          zachowuje się podobnie do SCP, program może również działać na
+          lokalnym systemie zastępując klasyczne polecenie <em>cp</em> i tak
+          też to polecenie działa w prosty niemodyfikowany opcjami sposób.
+          Opcje te programu są w stanie dość mocno wpłynąc na jego zachowanie,
+          że te dwa powyższe polecenie mogą stać się zbędne. Polecenie
+          <em>rsync</em> może być również wykorzystywane to 
+          kopiowania/przenoszenia w obrębie jednego komputera.
+        </p>
+        <p>
+          Najprostsza składnia polecenia <em>rsync</em> wygląd następująco:
+        </p>
+<pre class="code-block">
+xf0r3m@immudex:~$ rsync -r katalog_lokalny user@host:/sciezka/do/katalogu/zdalnego
+</pre>
+        <p>
+          Polecenie to prześle cały katalog
+          <code class="code-inline">katalog_lokalny</code> do katalogu zdalnego
+          na serwerze. Na powyższym poleceniu użyłem opcji 
+          <code class="code-inline">-r</code> (rekurencja), w przeciwnym razie
+          nic nie zostanie przesłane.
+        </p>
+        <p>
+          Podczas przekazywania ścieżek do polecenia (głównie ścieżki lokalnej)
+          istnieje pewna zależność. Jeśli definiując scieżkę lokalną podamy na
+          jej końcu ukośnik, to wówczas do katalogu zdalnego zostanie
+          przekopiowana sama zawartość bez tworzenia początkowego katalogu.
+        </p>
+<pre class="code-block">
+#Bez kończącego ukośnika:
+xf0r3m@vm-331503c:/ic0$ rsync -r Repos2 /ic0/Dokumenty
+# Katalog docelowy
+xf0r3m@vm-331503c:~/Dokumenty$ ls -al
+razem 12
+drwxr-xr-x  3 xf0r3m xf0r3m 4096 09-18 09:52 .
+drwxr-xr-x 11 xf0r3m xf0r3m 4096 09-18 09:12 ..
+drwxr-xr-x  4 xf0r3m xf0r3m 4096 09-18 09:52 Repos2
+xf0r3m@vm-331503c:~/Dokumenty$ ls -al Repos2/
+razem 16
+drwxr-xr-x 4 xf0r3m xf0r3m 4096 09-18 09:52 .
+drwxr-xr-x 3 xf0r3m xf0r3m 4096 09-18 09:52 ..
+drwxr-xr-x 5 xf0r3m xf0r3m 4096 09-18 09:52 Repos
+drwxr-xr-x 2 xf0r3m xf0r3m 4096 09-18 09:52 .test
+
+#Z kończącym ukośnikiem.
+xf0r3m@vm-331503c:/ic0$ rsync -r Repos2/ /ic0/Dokumenty
+xf0r3m@vm-331503c:~/Dokumenty$ ls -al
+razem 16
+drwxr-xr-x  4 xf0r3m xf0r3m 4096 09-18 09:58 .
+drwxr-xr-x 11 xf0r3m xf0r3m 4096 09-18 09:12 ..
+drwxr-xr-x  5 xf0r3m xf0r3m 4096 09-18 09:58 Repos
+drwxr-xr-x  2 xf0r3m xf0r3m 4096 09-18 09:58 .test
+</pre>
+        <p>
+          Na tę zależnośc należy uważać podczas kopiowania danych, ponieważ
+          sam utworzony przez polecenie katalog może być istotny. Na powyższych
+          przykładach użyłem polecenia <em>rsync</em> wewnątrz tego samego
+          systemu. 
+        </p>
+        <p>
+          Jak wcześniej wspominalismy dużą rolę w polecenie <em>rsync</em>
+          odgrywają jego opcje. Poniżej znajduja się najważniejsze z znich.
+        </p>
+        <ul>
+          <li><strong>--archive, -a</strong> - Tryb archiwalny. zachowanie
+            większości atrybutów plików, poza ACL-kami, atrybutami specjalnymi
+            takim jak <em>setuid</em>, czasu utworzenia oraz czasu ostatniego
+            dostępu. W przypadku zastosowania tej opcji nie są kopiowane
+            również dowiązania twarde. Wydanie opcji <em>-a</em> jest
+            równoznaczne z wydaniem opcji serii opcji: <em>-rlptgoD</em></li>
+          <li><strong>--update, -u</strong> - Aktualizacja. Powoduje, że
+            <em>rsync</em> pomija istniejące już pliki na miejscu decelowym
+            jeśli ich czas modyfikacji jest póżniejszy niż pliku źródłówego,
+            jeśli czas modyfikacji jest równy wówczas program opiera swoje
+            porównania na rozmiarze pliku.</li>
+          <li><strong>--checksum -c</strong> - Sumy kontrolne. Zmienia sposób
+            porównywania plików. Zamiast sprawdzać czas modyfikacji czy 
+            rozmiar liczona jest suma kontrolna. Te metoda jest o wiele
+            dokładniejsza, jednak wydłuża czas kopiowania oraz zużywa znacznie
+            więcej zasobów.</li>
+          <li><strong>--delete, --del</strong> - Oczyszanie katalogu. Usuwa
+            z katalogu docelowego wszystkie pozostałe pliki, które nie były
+            częścią tego transferu.
+          <li><strong>--dry-run, -n</strong> - Testy. Pozwala na sprawdzenie
+            czy nasze opcje i ścieżki zostały właściwie dobrane przed
+            dokonaniem faktycznych zmian w systemach. Polecenie to wykonuje
+            czynności <em>na sucho</em>, nie dokunując żadnych zmian w
+            systemie.</li>
+          <li><strong>--verbose, -v</strong> - zwiększenie ilości komunikatów
+            diagnostycznych.</li>
+          <li><strong>--compress, -z</strong> - Kompresja. Włącza kompresję
+            podczas przesyłania danych.</li>
+        </ul>
+        <p>
+          W tym materaile przedstawiono tylko, kilka opcji powszechnie
+               wykorzysywanych podczas korzystania z polecenia <em>rsync</em>.
+          Obszerną wiedzę na ten temat zwiera strona podręcznika polecenia,
+          zawierająca opisy wszystkich opcji oraz inne zagadnienia związane
+          z programem.
+        </p>
+        <p>
+          Ostatnią rzeczą związana z poleceniem przekazywanie do <em>rsync</em>
+          poleceń związanych z SSH, w końcu ten program domyślnie korzysta z
+          tego protokołu. Przekazanie opcji SSH wymaga użycia zmiennej powłoki.
+        </p>
+<pre class="code-block">
+export RSYNC_RSH='-p 2022 -i id_rsa';
+</pre>
+        <p>
+          W powyższym poleceniu użyto polecenia wbudowane 
+          <code class="code-inline">export</code> w celu przeniesienia zmiennej
+          do obszaru pamięci odpowiedzialnego za zmienne środowiskowe (będzie
+          o tym w ostatnim rodziale materiału). Zmiennej nadano wartość
+          składającą się z dwóch opcji polecenia SSH. <em>Rsync</em> będzie
+          korzystać z tych informacji.
         </p>
        </div>
                        <p style="margin: 15px; padding: 0; outline: 0;">