Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
02812 011067 14443959 na godz. na dobę w sumie
Skrypty powłoki systemu Linux. Receptury - książka
Skrypty powłoki systemu Linux. Receptury - książka
Autor: Liczba stron: 352
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-3886-4 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> systemy operacyjne >> unix
Porównaj ceny (książka, ebook, audiobook).

GNU/Linux oferuje kompletne środowisko programistyczne - stabilne, niezawodne, z wyjątkowymi możliwościami. Powłoka z interfejsem przeznaczonym do komunikacji z systemem operacyjnym umożliwia całościowe kontrolowanie tego systemu. Zrozumienie skryptów powłoki ułatwi Ci więc zorientowanie się w systemie operacyjnym, a dodanie zaledwie kilku wierszy skryptu pozwoli zautomatyzować większość ręcznie wykonywanych zadań. Dzięki temu zaoszczędzisz ogromną ilość czasu!

Ta książka w całości poświęcona jest skryptom powłoki systemu operacyjnego Linux.

Przedstawia rozwiązania w postaci sprawdzonych receptur. Pomogą Ci one błyskawicznie zrobić kopię offline stron internetowych, dokonać modyfikacji w plikach oraz przygotować kopię bezpieczeństwa. Kilka wierszy kodu wystarczy, by uzyskać rozwiązania pozwalające zrealizować wiele złożonych zadań, obsługiwanych przez skrypty powłoki systemu Linux. Taką wydajność zapewni Ci właściwe użycie poleceń powłoki w odniesieniu do praktycznych zastosowań. Książka ta ma jeszcze jedną ogromną zaletę: w czasie lektury z pewnością wpadniesz na pomysły ulepszenia swojego systemu operacyjnego oraz poznasz możliwości takich narzędzi, jak sed, awk, grep. Na co czekasz?

Otwórz tę książkę i sprawdź:

Zautomatyzuj codzienne zadania administratora!


Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Linux Shell Scripting Cookbook Tłumaczenie: Piotr Pilch ISBN: 978-83-246-3886-4 Copyright © Packt Publishing 2011. First published in the English language under the title “Linux Shell Scripting Cookbook”. Polish edition copyright © 2012 by Helion S.A. All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/sposyl Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treĂci O autorze O recenzentach Przedmowa Rozdziaï 1. Poznanie moĝliwoĂci powïoki Wprowadzenie WyĂwietlanie w oknie terminalu Eksperymentowanie ze zmiennymi i zmiennymi Ărodowiskowymi Wykonywanie obliczeñ matematycznych za pomocÈ powïoki Eksperymentowanie z deskryptorami plików i przekierowywaniem Tablice zwykïe i tablice asocjacyjne Korzystanie z aliasów Uzyskiwanie informacji o terminalu Uzyskiwanie i ustawianie dat oraz opóěnienia Debugowanie skryptu Funkcje i argumenty Odczytywanie danych wyjĂciowych sekwencji poleceñ Odczytywanie n znaków bez naciskania klawisza Enter Separatory pól i iteratory Porównania i testy Rozdziaï 2. Dobre polecenie Wprowadzenie ’Èczenie za pomocÈ polecenia cat Rejestrowanie i odtwarzanie sesji terminalowych Znajdowanie plików i wyĂwietlanie ich listy Eksperymentowanie z poleceniem xargs Przeksztaïcanie za pomocÈ polecenia tr Suma kontrolna i weryfikowanie Sortowanie, unikalnoĂÊ i duplikaty 9 10 11 15 16 18 21 25 27 33 36 37 39 42 44 46 49 50 52 57 57 58 60 62 71 77 80 83 Skrypty powáoki systemu Linux. Receptury Liczby losowe i nadawanie nazw plikom tymczasowym Podziaï plików i danych Podziaï nazw plików na podstawie rozszerzenia Zmiana nazw plików i przenoszenie ich w trybie wsadowym Sprawdzanie pisowni i przetwarzanie sïownika Automatyzowanie interaktywnego wprowadzania danych Rozdziaï 3. Plik na wejĂciu, plik na wyjĂciu Wprowadzenie Generowanie plików dowolnej wielkoĂci CzÚĂÊ wspólna i róĝnica zbiorów (A–B) w przypadku plików tekstowych Znajdowanie i usuwanie duplikatów plików Tworzenie katalogów w celu uzyskania dïugiej Ăcieĝki Uprawnienia plików, prawo wïaĂciciela pliku i bit lepkoĂci Zapewnianie niezmiennoĂci plików Masowe generowanie pustych plików Znajdowanie dowiÈzania symbolicznego i jego obiektu docelowego Wyliczanie statystyk dotyczÈcych typów plików Pliki pÚtli zwrotnej i podïÈczanie Tworzenie plików ISO (hybrydowe pliki ISO) Znajdowanie róĝnicy miÚdzy plikami oraz stosowanie poprawek Polecenia head i tail — wyĂwietlanie pierwszych lub ostatnich 10 wierszy WyĂwietlanie wyïÈcznie katalogów — inne metody Szybka nawigacja na poziomie wiersza poleceñ za pomocÈ poleceñ pushd i popd OkreĂlanie liczby wierszy, sïów i znaków w pliku WyĂwietlanie drzewa katalogów Rozdziaï 4. Przetwarzanie tekstu i sterowanie Wprowadzenie Podstawowe wyraĝenia regularne — wprowadzenie Wyszukiwanie tekstu wewnÈtrz pliku za pomocÈ polecenia grep Oparte na kolumnach wycinanie zawartoĂci pliku za pomocÈ polecenia cut CzÚstoĂÊ wystÈpieñ sïów uĝywanych w danym pliku Polecenie sed — podstawy Polecenie awk — podstawy ZastÚpowanie ïañcuchów zawartych w tekĂcie lub pliku Kompresowanie i dekompresowanie kodu JavaScript Iteracja wierszy, sïów i znaków w pliku Scalanie wielu plików jako kolumn WyĂwietlanie n-tego sïowa lub n-tej kolumny pliku lub wiersza WyĂwietlanie tekstu miÚdzy wierszami o okreĂlonych numerach lub miÚdzy wzorcami Sprawdzanie za pomocÈ skryptu ïañcuchów bÚdÈcych palindromami WyĂwietlanie wierszy w odwrotnej kolejnoĂci Analizowanie adresów e-mail i URL zawartych w tekĂcie WyĂwietlanie n wierszy wystÚpujÈcych przed wzorcem w pliku lub po nim 89 90 92 95 98 99 103 104 104 105 108 111 112 118 119 120 121 123 126 129 131 134 135 137 138 141 142 142 146 153 156 158 161 167 169 172 173 174 175 177 181 182 184 6 Spis treĞci Usuwanie z pliku zdania zawierajÈcego dane sïowo Implementowanie poleceñ head, tail i tac przy uĝyciu polecenia awk Podziaï tekstu i operacje na parametrach Rozdziaï 5. Zagmatwany internet? Wcale nie! Wprowadzenie Pobieranie ze strony internetowej Pobieranie strony internetowej jako tekstu zwykïego z formatowaniem NarzÚdzie cURL — wprowadzenie Uzyskiwanie dostÚpu do usïugi Gmail z poziomu wiersza poleceñ Analizowanie danych z witryny internetowej PrzeglÈdarka obrazów i narzÚdzie do ich pobierania Generator internetowego albumu ze zdjÚciami Klient wiersza poleceñ serwisu Twitter Program narzÚdziowy definicji z zapleczem internetowym Znajdowanie uszkodzonych ïÈczy w witrynie internetowej ¥ledzenie zmian w witrynie internetowej Wysyïanie danych do strony internetowej i wczytywanie odpowiedzi Rozdziaï 6. Plan tworzenia kopii zapasowych Wprowadzenie Archiwizowanie za pomocÈ programu tar Archiwizowanie za pomocÈ programu cpio Kompresowanie za pomocÈ programu gunzip (gzip) Kompresowanie za pomocÈ programu bunzip2 (bzip2) Kompresowanie za pomocÈ programu lzma Archiwizowanie i kompresowanie za pomocÈ programu zip squashfs — system plików o wysokim stopniu kompresji NarzÚdzia kryptograficzne i wartoĂci mieszajÈce Tworzenie migawek kopii zapasowych za pomocÈ programu rsync Tworzenie kopii zapasowych za pomocÈ narzÚdzia Git na podstawie kontroli wersji Klonowanie dysku twardego i innych dysków za pomocÈ programu dd Rozdziaï 7. Poczciwa sieÊ Wprowadzenie Podstawy sieci — wprowadzenie Uĝywanie narzÚdzia ping WyĂwietlanie wszystkich komputerów aktywnych w sieci Przesyïanie plików Konfigurowanie za pomocÈ skryptu sieci Ethernet i bezprzewodowej sieci lokalnej Automatyczne logowanie protokoïu SSH bez wymogu podania hasïa Uruchamianie poleceñ na zdalnym hoĂcie za pomocÈ narzÚdzia SSH PodïÈczanie dysku zdalnego za pomocÈ lokalnego punktu podïÈczenia Wysyïanie komunikatów okienkowych do wielu wÚzïów sieciowych Analiza ruchu sieciowego i portów 186 187 189 191 191 192 195 196 200 202 204 206 209 211 213 214 216 219 219 220 226 227 230 232 234 235 237 240 243 246 249 249 250 257 259 263 266 269 271 275 276 278 7 Skrypty powáoki systemu Linux. Receptury Rozdziaï 8. Postaw na monitorowanie Wprowadzenie Polecenia do okreĂlania wykorzystania przestrzeni dyskowej Obliczanie czasu wykonywania polecenia Informacje o zalogowanych uĝytkownikach, dziennikach rozruchu i niepowodzeniu rozruchu WyĂwietlanie 10 najczÚĂciej uĝywanych poleceñ WyĂwietlanie 10 procesów zajmujÈcych w ciÈgu godziny najwiÚcej czasu procesora Monitorowanie danych wyjĂciowych poleceñ za pomocÈ narzÚdzia watch Rejestrowanie dostÚpu do plików i katalogów ZarzÈdzanie plikami dziennika za pomocÈ narzÚdzia logrotate Rejestrowanie za pomocÈ narzÚdzia syslog Monitorowanie logowania uĝytkowników w celu wykrycia intruzów Monitorowanie poziomu wykorzystania przestrzeni dysków zdalnych OkreĂlanie liczby godzin aktywnoĂci uĝytkownika w systemie Rozdziaï 9. Administrowanie Wprowadzenie Gromadzenie informacji o procesach Koñczenie procesów oraz wysyïanie sygnaïów lub odpowiadanie na nie ObjaĂnienie narzÚdzi: which, whereis, file, whatis i load average Wysyïanie komunikatów do terminali uĝytkowników Gromadzenie informacji o systemie Gromadzenie informacji za pomocÈ systemu plików /proc Planowanie za pomocÈ programu cron Zapisywanie bazy danych MySQL i odczytywanie jej z poziomu powïoki Bash Skrypt do zarzÈdzania uĝytkownikami Masowa zmiana wymiarów obrazów i konwersja formatów Skorowidz 281 281 282 288 291 293 294 297 298 299 301 303 306 309 313 313 314 322 325 327 329 330 331 334 339 343 347 8 6 Plan tworzenia kopii zapasowych Ten rozdziaï zawiera nastÚpujÈce podrozdziaïy: Q Archiwizowanie za pomocÈ programu tar Q Archiwizowanie za pomocÈ programu cpio Q Kompresowanie za pomocÈ programu gunzip (gzip) Q Kompresowanie za pomocÈ programu bunzip (bzip) Q Kompresowanie za pomocÈ programu lzma Q Archiwizowanie i kompresowanie za pomocÈ programu zip Q squashfs — system plików o wysokim stopniu kompresji Q NarzÚdzia kryptograficzne i wartoĂci mieszajÈce Q Tworzenie migawek kopii zapasowych za pomocÈ programu rsync Q Tworzenie kopii zapasowych za pomocÈ narzÚdzia Git na podstawie kontroli wersji Q Klonowanie dysku twardego i innych dysków za pomocÈ programu dd Wprowadzenie Tworzenie migawek i kopii zapasowych danych to regularnie wykonywane zadania. W przy- padku serwera lub duĝych systemów przechowywania danych waĝne jest systematyczne spo- rzÈdzanie kopii zapasowych. Moĝliwe jest zautomatyzowanie tego zadania za poĂrednictwem skryptów powïoki. Archiwizowanie i kompresowanie wydajÈ siÚ mieÊ zastosowanie w codzien- nej pracy administratora systemu lub zwykïego uĝytkownika. IstniejÈ róĝne formaty kompresji, które mogÈ byÊ wykorzystane na róĝne sposoby w celu uzyskania jak najlepszych rezultatów. Kup książkę Poleć książkę Skrypty powáoki systemu Linux. Receptury Szyfrowanie to kolejne zadanie, które jest czÚsto realizowane na potrzeby ochrony danych. Aby zmniejszyÊ wielkoĂÊ zaszyfrowanych danych, zwykle pliki sÈ archiwizowane i kompreso- wane przed zaszyfrowaniem. DostÚpnych jest wiele standardowych algorytmów szyfrowania, które mogÈ byÊ obsïugiwane za pomocÈ programów narzÚdziowych powïoki. W tym rozdziale zaprezentowano róĝne receptury objaĂniajÈce tworzenie archiwów plików lub katalogów, a tak- ĝe utrzymywanie ich, formaty kompresji oraz techniki szyfrowania za pomocÈ powïoki. Poznaj kolejne receptury. Archiwizowanie za pomocÈ programu tar Polecenie tar moĝe posïuĝyÊ do archiwizowania plików. Pierwotnie stworzono je do przecho- wywania danych w archiwach taĂmowych (tar — ang. tape archives). Polecenie to umoĝliwia przechowywanie wielu plików i katalogów jako jednego pliku. Moĝe ono zachowaÊ wszystkie atrybuty plików, takie jak wïaĂciciel, uprawnienia itp. Plik utworzony przez polecenie tar czÚ- sto jest nazywany archiwum narzÚdzia tar (ang. tarball). Wprowadzenie DomyĂlnie polecenie tar jest doïÈczone do wszystkich uniksowych systemów operacyjnych. Polecenie to ma prostÈ skïadniÚ i oferuje przenoĂny format plików. Dowiedz siÚ, jak z niego skorzystaÊ. Polecenie tar zapewnia listÚ argumentów: A, c, d, r, t, u, x, f i v. Kaĝda z tych liter moĝe byÊ uĝyta niezaleĝnie do zrealizowania róĝnych odpowiednich celów. Jak to zrobiÊ Aby zarchiwizowaÊ pliki za pomocÈ polecenia tar, uĝyj nastÚpujÈcej skïadni: $ tar -cf output.tar [DANE_½RÓD’OWE] Oto przykïad: $ tar -cf output.tar plik1 plik2 plik3 katalog1 .. W tym poleceniu opcja -c powoduje utworzenie pliku, a opcja -f umoĝliwia okreĂlenie nazwy pliku. W miejsce ïañcucha DANE_½RÓD’OWE moĝesz okreĂliÊ katalogi i pliki. W celu okreĂlenia danych ěródïowych moĝesz uĝyÊ listy nazw plików lub symboli wieloznacznych (np. *.txt). Polecenie dokona archiwizacji plików ěródïowych w pliku o nazwie output.tar. 220 Rozdziaá 6. • Plan tworzenia kopii zapasowych Nazwa pliku musi pojawiÊ siÚ bezpoĂrednio po opcji -f, która powinna byÊ ostatniÈ opcjÈ w grupie argumentów (np. -cvvf nazwa_pliku.tar i -tvvf nazwa_pliku.tar). Z powodu limitu polecenia tar nie jest moĝliwe przekazanie jako argumentów wiersza pole- ceñ setek plików lub katalogów. Z tego powodu, jeĂli ma zostaÊ zarchiwizowanych wiele pli- ków, bezpieczniejsze jest zastosowanie opcji doïÈczania. To nie wszystko Zaznajom siÚ z dodatkowymi opcjami, które sÈ dostÚpne w przypadku polecenia tar. DoïÈczanie plików do archiwum Czasem moĝe byÊ konieczne dodanie plików do juĝ istniejÈcego archiwum (przykïadem za- stosowania jest sytuacja, w której tysiÈce plików majÈ zostaÊ zarchiwizowane, a nie mogÈ one byÊ okreĂlone w jednym wierszu jako argumenty wiersza poleceñ). Oto opcja doïÈczania: -r. Aby doïÈczyÊ plik do juĝ istniejÈcego archiwum, uĝyj polecenia: $ tar -rvf oryginalny.tar nowy_plik W nastÚpujÈcy sposób wyĂwietl listÚ plików znajdujÈcych siÚ w archiwum: $ tar -tf archiwum.tar yy/lib64/ yy/lib64/libfakeroot/ yy/sbin/ Aby wyĂwietliÊ wiÚcej szczegóïów podczas archiwizowania lub generowania listy, uĝyj flag -v lub -vv. Flagi te sÈ nazywane flagami trybu szczegóïowego. UmoĝliwiajÈ one zaprezentowanie w oknie terminalu wiÚcej szczegóïów. Na przykïad przy uĝyciu tych flag moĝesz wyĂwietliÊ takie dodatkowe informacje, jak: uprawnienia plików, grupa wïaĂciciela, data modyfikacji itp. Oto przykïad: $ tar -tvvf archiwum.tar drwxr-xr-x slynux/slynux 0 2010-08-06 09:31 yy/ drwxr-xr-x slynux/slynux 0 2010-08-06 09:39 yy/usr/ drwxr-xr-x slynux/slynux 0 2010-08-06 09:31 yy/usr/lib64/ WyodrÚbnianie plików i katalogów z archiwum NastÚpujÈce polecenie wyodrÚbnia zawartoĂÊ archiwum w bieĝÈcym katalogu: $ tar -xf archiwum.tar 221 Skrypty powáoki systemu Linux. Receptury Opcja -x powoduje operacjÚ wyodrÚbniania. W przypadku zastosowania tej opcji polecenie tar wyodrÚbni zawartoĂÊ archiwum w bieĝÈ- cym katalogu. UĝywajÈc opcji -C, moĝesz równieĝ okreĂliÊ katalog, w którym zostanÈ umiesz- czone wyodrÚbnione pliki: $ tar -xf archiwum.tar -C /Ăcieĝka/katalogu_wyodrÚbniania Polecenie to wyodrÚbnia zawartoĂÊ archiwum w okreĂlonym katalogu. Operacja dotyczy za- wartoĂci caïego archiwum. Moĝliwe jest teĝ wyodrÚbnienie tylko kilku plików, przez okreĂlenie ich jako argumentów polecenia: $ tar -xvf plik.tar plik1 plik4 To polecenie wyodrÚbnia tylko pliki plik1 i plik4. Ignorowane sÈ pozostaïe pliki w archiwum. Uĝycie standardowego wejĂcia i wyjĂcia w przypadku polecenia tar Podczas archiwizowania moĝesz okreĂliÊ standardowe wyjĂcie stdout jako plik wyjĂciowy, aby inne polecenie wstawione za znakiem potoku mogïo wczytaÊ ten plik jako standardowe wej- Ăcie stdin, a nastÚpnie zrealizowaÊ dany proces lub wyodrÚbniÊ dane z archiwum. Jest to pomocne w przypadku przesyïania danych za poĂrednictwem aktywnego poïÈczenia sieciowego SSH (Secure Shell). Oto przykïad: $ mkdir ~/miejsce_docelowe $ tar -cf - plik1 plik2 plik3 | tar -xvf - -C ~/miejsce_docelowe W tym przykïadzie pliki plik1, plik2 i plik3 sÈ ïÈczone do postaci archiwum programu tar, a na- stÚpnie wyodrÚbniane w katalogu ~/miejsce_docelowe. W przypadku powyĝszego polecenia: Q opcja -f okreĂla standardowe wyjĂcie stdout jako plik na potrzeby archiwizowania (gdy uĝyto opcji -c); Q opcja -f okreĂla standardowe wejĂcie stdin jako plik na potrzeby wyodrÚbniania (gdy uĝyto opcji -x). ’Èczenie dwóch archiwów Za pomocÈ opcji -A z ïatwoĂciÈ moĝesz scaliÊ wiele plików programu tar. Zaïóĝmy, ĝe istniejÈ dwa pliki archiwum programu tar: plik1.tar i plik2.tar. W nastÚpujÈcy sposób moĝesz scaliÊ zawartoĂÊ pliku plik2.tar z zawartoĂciÈ pliku plik1.tar: $ tar -Af plik1.tar plik2.tar Sprawdě wynik operacji przez wyĂwietlenie zawartoĂci pliku plik1.tar: $ tar -tvf plik1.tar 222 Rozdziaá 6. • Plan tworzenia kopii zapasowych Aktualizowanie plików w archiwum uwzglÚdniajÈce sprawdzenie znacznika czasu Opcja doïÈczania umoĝliwia dodanie dowolnego pliku do archiwum. JeĂli w archiwum znajduje siÚ juĝ plik, który ma zostaÊ doïÈczony, efektem operacji bÚdzie pojawienie siÚ w archiwum duplikatu pliku. Przy uĝyciu opcji aktualizowania -u moĝesz okreĂliÊ, ĝe zostanÈ doïÈczone tylko te pliki, które sÈ nowsze od plików o tej samej nazwie obecnych w archiwum. $ tar -tf archiwum.tar plika plikb plikc Powyĝsze polecenie wyĂwietla listÚ plików archiwum. Aby doïÈczyÊ plik plika tylko wtedy, gdy ma póěniejszÈ datÚ modyfikacji niĝ plik o tej samej nazwie znajdujÈcy siÚ w archiwum archiwum.tar, uĝyj polecenia: $ tar -uvvf archiwum.tar plika JeĂli wersja pliku plika poza archiwum i plik plika wewnÈtrz archiwum archiwum.tar majÈ ten sam znacznik czasu, nie bÚdzie miaïo miejsce ĝadne zdarzenie. Uĝyj polecenia touch do zmodyfikowania znacznika czasu pliku, a nastÚpnie ponownie spró- buj wykonaÊ polecenie tar: $ tar -uvvf archiwum.tar plika -rw-r--r-- slynux/slynux 0 2010-08-14 17:53 plika Plik jest doïÈczany, poniewaĝ jego znacznik czasu jest aktualniejszy od znacznika pliku we- wnÈtrz archiwum. Porównywanie plików w archiwum i systemie plików Czasem przydatne jest stwierdzenie, czy plik w archiwum oraz plik o identycznej nazwie w systemie plików sÈ takie same, czy zawierajÈ jakiekolwiek róĝnice. Flaga -d moĝe posïuĝyÊ do wyĂwietlenia róĝnic: $ tar -df archiwum.tar nazwa_pliku1 nazwa_pliku2 ... Oto przykïad: $ tar -df archiwum.tar plika plikb plika: Czas modyfikacji siÚ róĝni plika: Rozmiar siÚ róĝni Usuwanie plików z archiwum UĝywajÈc opcji -delete, moĝesz usunÈÊ pliki z danego archiwum. Oto przykïad: $ tar -f archiwum.tar --delete plik1 plik2 .. 223 Skrypty powáoki systemu Linux. Receptury Oto kolejny przykïad: $ tar -tf archiwum.tar plika plikb plikc Moĝesz teĝ zastosowaÊ nastÚpujÈcÈ skïadniÚ: $ tar --delete --file archiwum.tar [LISTA PLIKÓW] Oto przykïad: $ tar --delete --file archiwum.tar plika $ tar -tf archiwum.tar plikb plikc Kompresowanie archiwum programu tar Polecenie tar archiwizuje pliki, lecz nie kompresuje ich. Z tego powodu wiÚkszoĂÊ osób pod- czas pracy z archiwami programu tar zwykle dodaje okreĂlonego rodzaju kompresjÚ. DziÚki temu znacznie zmniejsza siÚ wielkoĂÊ plików. Archiwa sÈ czÚsto kompresowane przy uĝyciu jednego z nastÚpujÈcych formatów: Q plik.tar.gz, Q plik.tar.bz2, Q plik.tar.lzma, Q plik.tar.lzo, Róĝne flagi polecenia tar sÈ uĝywane do okreĂlenia róĝnych formatów kompresji: Q -j (dotyczy formatu bunzip2), Q -z (dotyczy formatu gzip), Q --lzma (dotyczy formatu lzma). Formaty objaĂniono w zamieszczonych dalej recepturach poĂwiÚconych kompresowaniu. Moĝliwe jest zastosowanie formatów kompresji bez jawnego okreĂlania specjalnych opcji przed- stawionych powyĝej. Polecenie tar moĝe przeprowadziÊ kompresjÚ przez sprawdzenie dane- go rozszerzenia nazw plików wyjĂciowych lub wejĂciowych. Aby polecenie tar automatycznie obsïugiwaïo kompresjÚ przez okreĂlanie rozszerzeñ, uĝyj opcji -a lub --auto-compress. Wykluczanie zestawu plików z procesu archiwizowania Istnieje moĝliwoĂÊ wykluczenia zestawu plików z procesu archiwizowania przez okreĂlenie wzorców. Zastosuj opcjÚ --exclude [WZORZEC] w celu wykluczenia plików dopasowanych przez wzorce w postaci symboli wieloznacznych. 224 Rozdziaá 6. • Plan tworzenia kopii zapasowych Aby na przykïad wykluczyÊ z archiwizowania wszystkie pliki .txt, uĝyj polecenia: $ tar -cf arch.tar * --exclude *.txt Zauwaĝ, ĝe wzorzec powinien byÊ ujÚty w cudzysïów. W nastÚpujÈcy sposób za pomocÈ flagi -X moĝliwe jest teĝ wykluczenie listy plików zawartej w pliku: $ cat lista plika plikb $ tar -cf arch.tar * -X lista Polecenie to spowoduje wykluczenie plików plika i plikb z procesu archiwizowania. Wykluczanie katalogów kontroli wersji Zwykle archiwa programu tar sÈ uĝywane do dystrybucji kodu ěródïowego. WiÚkszoĂÊ kodu jest utrzymywana za pomocÈ systemów kontroli wersji, takich jak: Subversion, Git, Mercurial, CVS itp. Katalogi z kodem objÚte kontrolÈ wersji bÚdÈ zawieraÊ specjalne katalogi uĝywane do zarzÈdzania wersjami (np. .svn lub .git). Jednakĝe te katalogi nie sÈ wymagane przez kod, dlatego naleĝy je wykluczyÊ z archiwum programu tar z kodem ěródïowym. Aby podczas archiwizowania wykluczyÊ pliki i katalogi powiÈzane z kontrolÈ wersji, uĝyj opcji --exclude-vcs polecenia tar. Oto przykïad: $ tar --exclude-vcs -czvvf kod_zrodlowy.tar.gz eye_of_gnome_svn WyĂwietlanie sumy bajtów Czasem przydatna jest moĝliwoĂÊ wyĂwietlenia sumy bajtów skopiowanych do archiwum. W nastÚpujÈcy sposób za pomocÈ opcji --totals wyĂwietl caïkowitÈ liczbÚ bajtów skopiowa- nych po zakoñczeniu archiwizacji: $ tar -cf arc.tar * --exclude *.txt --totals Liczba zapisanych bajtów: 20480 (20KiB, 12MiB/s) Zobacz równieĝ Q W podrozdziale „Kompresowanie za pomocÈ programu gunzip (gzip)” objaĂniono polecenie gzip. Q W podrozdziale „Kompresowanie za pomocÈ programu bunzip2 (bzip2)” objaĂniono polecenie bzip2. Q W podrozdziale „Kompresowanie za pomocÈ programu lzma” objaĂniono polecenie lzma. 225 Skrypty powáoki systemu Linux. Receptury Archiwizowanie za pomocÈ programu cpio cpio to inny format archiwizowania, podobny do formatu programu tar. Sïuĝy on do przecho- wywania plików i katalogów w pliku z takimi atrybutami, jak uprawnienia, prawo wïaĂciciela itp. Format programu cpio nie jest jednak tak powszechny jak format programu tar. Jednak program cpio bywa uĝywany w przypadku archiwów pakietów RPM, plików systemu plików initramfs dla jÈdra systemu Linux itp. W tej recepturze zaprezentowano najprostsze przykïady uĝycia programu cpio. Jak to zrobiÊ Program cpio pobiera nazwy plików wejĂciowych za poĂrednictwem standardowego wejĂcia stdin i zapisuje archiwum w standardowym wyjĂciu stdout. W celu otrzymania pliku z dany- mi wyjĂciowymi programu cpio konieczne jest przekierowanie standardowego wyjĂcia stdout do pliku w poniĝszy sposób. Utwórz pliki testowe: $ touch plik1 plik2 plik3 Pliki testowe moĝesz zarchiwizowaÊ przy uĝyciu polecenia: $ echo plik1 plik2 plik3 | cpio -ov archiwum.cpio W tym poleceniu: Q opcja -o okreĂla dane wyjĂciowe; Q opcja -v sïuĝy do wyĂwietlenia listy zarchiwizowanych plików. UĝywajÈc programu cpio, moĝesz teĝ archiwizowaÊ pliki z wykorzystaniem Ăcieĝek bezwzglÚdnych. /usr/ katalog to Ăcieĝka bezwzglÚdna, poniewaĝ stanowi peïnÈ ĂcieĝkÚ, poczÈwszy od katalogu gïównego (/). ¥cieĝka wzglÚdna, zamiast znakiem /, rozpoczyna siÚ na poziomie bieĝÈcego katalogu. Na przykïad Ăcieĝka test/plik oznacza, ĝe jest katalog test, w którym istnieje plik plik. Podczas wyodrÚbniania program cpio uĝywa Ăcieĝki bezwzglÚdnej. Jednakĝe w przypadku polecenia tar program cpio usuwa znak / ze Ăcieĝki bezwzglÚdnej i zamienia jÈ na ĂcieĝkÚ wzglÚdnÈ. Aby wyĂwietliÊ listÚ plików w archiwum programu cpio, uĝyj nastÚpujÈcego polecenia: $ cpio -it archiwum.cpio Polecenie to wyĂwietli listÚ wszystkich plików w danym archiwum programu cpio. Wczytuje ono pliki ze standardowego wejĂcia stdin. W przypadku tego polecenia: 226 Rozdziaá 6. • Plan tworzenia kopii zapasowych Q opcja -i sïuĝy do okreĂlenia danych wejĂciowych; Q opcja -t umoĝliwia wygenerowanie listy. W celu wyodrÚbnienia plików z archiwum programu cpio uĝyj polecenia: $ cpio -id archiwum.cpio W poleceniu tym opcja -d powoduje wyodrÚbnianie. Polecenie nadpisuje pliki bez ĝÈdania potwierdzenia operacji. JeĂli w archiwum znajdujÈ siÚ pliki ze ĂcieĝkÈ bezwzglÚdnÈ, polecenie zastÈpi te pliki. W przeciwieñstwie do polecenia tar, polecenie cpio nie wyodrÚbni plików w bieĝÈcym katalogu. Kompresowanie za pomocÈ programu gunzip (gzip) gzip to format kompresji powszechnie uĝywany w przypadku platform GNU/Linux. DostÚp- ne sÈ programy narzÚdziowe, takie jak: gzip, gunzip i zcat, które obsïugujÈ typy plików o for- macie kompresji gzip. Program gzip moĝe byÊ zastosowany tylko dla pliku. Nie umoĝliwia on archiwizowania katalogów i wielu plików. A zatem uĝywane jest archiwum programu tar, które jest kompresowane za pomocÈ programu gzip. JeĂli na wejĂciu okreĂlono wiele plików, pro- gram gzip wygeneruje kilka osobnych skompresowanych plików z rozszerzeniem .gz. Dowiedz siÚ, jak korzystaÊ z tego programu. Jak to zrobiÊ Aby skompresowaÊ plik za pomocÈ programu gzip, uĝyj nastÚpujÈcego polecenia: $ gzip nazwa_pliku $ ls nazwa_pliku.gz Polecenie to usunie plik i utworzy skompresowany plik o nazwie nazwa_pliku.gz. W nastÚpujÈcy sposób wyodrÚbnij plik skompresowany przy uĝyciu programu gzip: $ gunzip nazwa_pliku.gz Polecenie usunie plik nazwa_pliku.gz i utworzy jego wersjÚ bez kompresji. Aby wyĂwietliÊ listÚ wïaĂciwoĂci skompresowanego pliku, uĝyj polecenia: $ gzip -l test.txt.gz compressed uncompressed ratio uncompressed_name 35 6 -33.3 test.txt 227 Skrypty powáoki systemu Linux. Receptury Polecenie gzip moĝe wczytaÊ plik ze standardowego wejĂcia stdin, a takĝe zapisaÊ skompre- sowany plik w standardowym wyjĂciu stdout. W nastÚpujÈcy sposób moĝesz odczytaÊ standardowe wejĂcie stdin oraz zwróciÊ dane jako stan- dardowe wyjĂcie stdout: $ cat plik | gzip -c plik.gz Opcja -c sïuĝy do okreĂlenia danych wyjĂciowych w standardowym wyjĂciu stdout. Moĝliwe jest okreĂlenie poziomu kompresji dla programu gzip. Uĝyj opcji --fast lub --best, aby zapewniÊ odpowiednio niski i wysoki wspóïczynnik kompresji. To nie wszystko Polecenie gzip jest czÚsto stosowane z innymi poleceniami. Oferuje ono teĝ zaawansowane opcje przeznaczone do okreĂlania wspóïczynnika kompresji. Dowiedz siÚ, jak korzystaÊ z tych opcji. Zastosowanie programu gzip dla archiwum programu tar Zwykle w przypadku archiwów programu tar jest uĝywany program gzip. Takie archiwa mo- gÈ zostaÊ skompresowane z wykorzystaniem opcji -z przekazywanej poleceniu tar podczas archiwizowania i wyodrÚbniania. KorzystajÈc z nastÚpujÈcych metod, moĝesz tworzyÊ archiwa programu tar skompresowane przez program gzip: Q Metoda 1. $ tar -czvvf archiwum.tar.gz [PLIKI] lub: $ tar -cavvf archiwum.tar.gz [PLIKI] Opcja -a okreĂla, ĝe format kompresji powinien byÊ automatycznie wykryty na podstawie rozszerzenia. Q Metoda 2. Najpierw utwórz archiwum programu tar: $ tar -cvvf archiwum.tar [PLIKI] W nastÚpujÈcy sposób skompresuj utworzone archiwum: $ gzip archiwum.tar JeĂli w archiwum programu tar ma zostaÊ umieszczonych wiele plików (nawet kilkaset), a po- nadto archiwum wymaga skompresowania, zostanie uĝyta druga metoda z kilkoma modyfika- cjami. Problem z podawaniem wielu plików jako argumentów polecenia tar polega na tym, ĝe z poziomu wiersza poleceñ moĝe ono zaakceptowaÊ tylko ograniczonÈ liczbÚ plików. Aby roz- 228 Rozdziaá 6. • Plan tworzenia kopii zapasowych wiÈzaÊ ten problem, moĝesz utworzyÊ plik programu tar, dodajÈc pliki kolejno za pomocÈ pÚtli z opcjÈ doïÈczania (-r): FILE_LIST= plik1 plik2 plik3 plik4 plik5 for f in $FILE_LIST; do tar -rvf archiwum.tar $f done gzip archiwum.tar Aby wyodrÚbniÊ archiwum programu tar skompresowane przez program gzip, uĝyj nastÚpu- jÈcych opcji: Q opcja -x dotyczy wyodrÚbniania; Q opcja -z dotyczy specyfikacji formatu gzip. Moĝesz teĝ wykonaÊ polecenie: $ tar -xavvf archiwum.tar.gz -C katalog_wyodrÚbniania W powyĝszym poleceniu opcja -a powoduje automatyczne wykrycie formatu kompresji. Program zcat — odczytywanie plików formatu gzip bez wyodrÚbniania zcat to polecenie, które moĝe byÊ uĝyte do umieszczenia pliku wyodrÚbnionego z pliku .gz w standardowym wyjĂciu stdout bez rÚcznego wykonywania operacji wyodrÚbniania. Plik .gz pozostaje w niezmienionej postaci, lecz wyodrÚbniony plik zostanie umieszczony w standar- dowym wyjĂciu stdout w nastÚpujÈcy sposób: $ ls test.gz $ zcat test.gz Plik testowy # Plik testowy zawiera wiersz Plik testowy . $ ls test.gz Wspóïczynnik kompresji Moĝliwe jest okreĂlenie wspóïczynnika kompresji z zakresu od 1 do 9, w przypadku którego: Q 1 to najgorsza, lecz najszybsza kompresja; Q 9 to najlepsza, lecz najwolniejsza kompresja. W nastÚpujÈcy sposób moĝesz teĝ okreĂliÊ inne wspóïczynniki kompresji: $ gzip -9 test.img Polecenie maksymalnie skompresuje plik. 229 Skrypty powáoki systemu Linux. Receptury Zobacz równieĝ Q W podrozdziale „Archiwizowanie za pomocÈ programu tar” objaĂniono polecenie tar. Kompresowanie za pomocÈ programu bunzip2 (bzip2) bunzip2 to nastÚpny format kompresji, który bardzo przypomina format programu gzip. Pro- gram bzip2 zwykle generuje mniejsze (bardziej skompresowane) pliki niĝ program gzip. Pro- gram bzip2 wchodzi w skïad wszystkich dystrybucji systemu Linux. Dowiedz siÚ, jak z niego korzystaÊ. Jak to zrobiÊ Aby za pomocÈ programu bzip2 dokonaÊ kompresji, uĝyj polecenia: $ bzip2 nazwa_pliku $ ls nazwa_pliku.bz2 Polecenie to usunie plik i utworzy skompresowany plik o nazwie nazwa_pliku.bz2. W nastÚpujÈcy sposób wyodrÚbnij plik .bz2: $ bunzip2 nazwa_pliku.bz2 Polecenie usunie plik nazwa_pliku.bz2 i utworzy wersjÚ pliku nazwa_pliku bez kompresji. Program bzip2 umoĝliwia wczytanie pliku ze standardowego wejĂcia stdin, a takĝe zapisanie skompresowanego pliku w standardowym wyjĂciu stdout. Aby odczytaÊ standardowe wejĂcie stdin oraz pobraÊ dane ze standardowego wyjĂcia stdout, uĝyj polecenia: $ cat plik | bzip2 -c plik.tar.bz2 Opcja -c sïuĝy do skierowania danych wyjĂciowych do standardowego wyjĂcia stdout. Zwykle program bzip2 jest uĝywany w przypadku archiwów programu tar. Takie archiwa mogÈ zostaÊ skompresowane z wykorzystaniem opcji -j przekazywanej poleceniu tar podczas archi- wizowania i wyodrÚbniania. KorzystajÈc z nastÚpujÈcych metod, moĝesz tworzyÊ archiwa programu tar skompresowane przez program bzip2: 230 Rozdziaá 6. • Plan tworzenia kopii zapasowych Q Metoda 1. $ tar -cjvvf archiwum.tar.bz2 [PLIKI] lub: $ tar -cavvf archiwum.tar.bz2 [PLIKI] Opcja -a okreĂla, ĝe format kompresji zostanie automatycznie wykryty na podstawie rozszerzenia. Q Metoda 2. Najpierw utwórz archiwum programu tar: $ tar -cvvf archiwum.tar [PLIKI] Skompresuj utworzone archiwum: $ bzip2 archiwum.tar JeĂli w archiwum majÈ zostaÊ umieszczone setki plików, powyĝsze polecenia mogÈ byÊ nie- przydatne. W celu poradzenia sobie z tym problemem uĝyj pÚtli do doïÈczenia kolejno plików do archiwum za pomocÈ opcji -r. Przejdě do podobnego punktu zamieszczonego w podroz- dziale „Kompresowanie za pomocÈ programu gunzip (gzip)”. W nastÚpujÈcy sposób wyodrÚbnij archiwum programu tar skompresowane przez program bzip2: $ tar -xjvvf archiwum.tar.bz2 -C katalog_wyodrÚbniania W tym poleceniu: Q opcja -x powoduje wyodrÚbnianie; Q opcja -z okreĂla format bzip2; Q opcja -C sïuĝy do okreĂlenia katalogu, w którym zostanÈ wyodrÚbnione pliki. Moĝesz teĝ uĝyÊ nastÚpujÈcego polecenia: $ tar -xavvf archiwum.tar.bz2 -C katalog_wyodrÚbniania Opcja -a automatycznie wykryje format kompresji. To nie wszystko Program bunzip2 oferuje kilka dodatkowych opcji do realizowania róĝnych funkcji. Poznaj kil- ka z nich. Zachowywanie plików wejĂciowych Program bzip2 (bunzip2) usuwa pliki wejĂciowe i tworzy skompresowane pliki wyjĂciowe. Aby zapobiec usuwaniu plików wejĂciowych, uĝyj opcji -k. 231 Skrypty powáoki systemu Linux. Receptury Oto przykïad: $ bunzip2 test.bz2 -k $ ls test test.bz2 Wspóïczynnik kompresji Moĝliwe jest okreĂlenie wspóïczynnika kompresji z zakresu od 1 do 9, w przypadku którego 1 to najgorsza, lecz najszybsza kompresja, a 9 to najwyĝsza moĝliwa, lecz znacznie wolniejsza kompresja. Oto przykïad: $ bzip2 -9 test.img Powyĝsze polecenie zapewnia maksymalnÈ kompresjÚ. Zobacz równieĝ Q W podrozdziale „Archiwizowanie za pomocÈ programu tar” objaĂniono polecenie tar. Kompresowanie za pomocÈ programu lzma lzma to stosunkowo nowy format w porównaniu z formatami programów gzip lub bzip2. Pro- gram lzma oferuje lepsze wspóïczynniki kompresji niĝ tamte programy. Poniewaĝ program lzma nie jest domyĂlnie instalowany w wiÚkszoĂci dystrybucji systemu Linux, moĝe byÊ konieczne wykonanie tej operacji za pomocÈ menedĝera pakietów. Jak to zrobiÊ Aby dokonaÊ kompresji za pomocÈ programu lzma, uĝyj nastÚpujÈcego polecenia: $ lzma nazwa_pliku $ ls nazwa_pliku.lzma Polecenie to spowoduje usuniÚcie pliku i utworzenie skompresowanego pliku o nazwie nazwa_ pliku.lzma. W celu wyodrÚbnienia pliku programu lzma zastosuj polecenie: $ unlzma nazwa_pliku.lzma Polecenie usunie plik nazwa_pliku.lzma i utworzy wersjÚ pliku bez kompresji. 232 Rozdziaá 6. • Plan tworzenia kopii zapasowych Polecenie lzma umoĝliwia wczytanie pliku ze standardowego wejĂcia stdin, a takĝe zapisanie skompresowanego pliku w standardowym wyjĂciu stdout. Aby odczytaÊ standardowe wejĂcie stdin oraz pobraÊ dane ze standardowego wyjĂcia stdout, uĝyj polecenia: $ cat plik | lzma -c plik.lzma Opcja -c sïuĝy do skierowania danych wyjĂciowych do standardowego wyjĂcia stdout. Zwykle program lzma jest uĝywany w przypadku archiwów programu tar. Takie archiwa mo- gÈ zostaÊ skompresowane za pomocÈ opcji --lzma przekazywanej poleceniu tar podczas archi- wizowania i wyodrÚbniania. IstniejÈ nastÚpujÈce dwie metody tworzenia archiwum programu tar skompresowanego przez program lzma: Q Metoda 1. $ tar -cvvf --lzma archiwum.tar.lzma [PLIKI] lub: $ tar -cavvf archiwum.tar.lzma [PLIKI] Opcja -a okreĂla, ĝe format kompresji zostanie automatycznie wykryty na podstawie rozszerzenia. Q Metoda 2. Najpierw utwórz archiwum programu tar: $ tar -cvvf archiwum.tar [PLIKI] Skompresuj utworzone archiwum: $ lzma archiwum.tar JeĂli w archiwum majÈ zostaÊ umieszczone setki plików, powyĝsze polecenia mogÈ byÊ nie- przydatne. W celu poradzenia sobie z tym problemem uĝyj pÚtli do doïÈczenia kolejno plików do archiwum za pomocÈ opcji -r. Przejdě do podobnego punktu zamieszczonego w podroz- dziale „Kompresowanie za pomocÈ programu gunzip (gzip)”. To nie wszystko Poznaj dodatkowe opcje zwiÈzane z programem narzÚdziowym lzma. WyodrÚbnianie archiwum programu tar skompresowanego przez program lzma Aby wyodrÚbniÊ archiwum programu tar skompresowane przez program lzma w okreĂlonym katalogu, uĝyj nastÚpujÈcego polecenia: 233 Skrypty powáoki systemu Linux. Receptury $ tar -xvvf --lzma archiwum.tar.lzma -C katalog_wyodrÚbniania W poleceniu opcja -x powoduje wyodrÚbnianie. Opcja --lzma okreĂla, ĝe do dekompresji pli- ku wynikowego zostanie zastosowany program lzma. Moĝesz teĝ uĝyÊ polecenia: $ tar -xavvf archiwum.tar.lzma -C katalog_wyodrÚbniania Opcja -a powoduje automatyczne wykrycie formatu kompresji na podstawie rozszerzenia. Zachowywanie plików wejĂciowych Programy lzma lub unlzma usuwajÈ pliki wejĂciowe i tworzÈ skompresowane pliki wyjĂciowe. Moĝna jednak zapobiec usuniÚciu plików wejĂciowych i zachowaÊ je przy uĝyciu opcji -k. Oto przykïad: $ lzma test.bz2 -k $ ls test.bz2.lzma Wspóïczynnik kompresji Moĝliwe jest okreĂlenie wspóïczynnika kompresji z zakresu od 1 do 9, w przypadku którego 1 to najgorsza, lecz najszybsza kompresja, a 9 to najwyĝsza moĝliwa, lecz znacznie wolniejsza kompresja. W nastÚpujÈcy sposób moĝesz teĝ okreĂliÊ inny wspóïczynnik: $ lzma -9 test.img Powyĝsze polecenie zapewnia maksymalnÈ kompresjÚ pliku. Zobacz równieĝ Q W podrozdziale „Archiwizowanie za pomocÈ programu tar” objaĂniono polecenie tar. Archiwizowanie i kompresowanie za pomocÈ programu zip ZIP to popularny format kompresji uĝywany na wielu platformach. ChoÊ nie jest tak powszech- nie stosowany na platformach z systemem Linux, jak formaty programów gzip lub bzip2, pliki pochodzÈce z internetu czÚsto sÈ zapisywane wïaĂnie w formacie ZIP. 234 Rozdziaá 6. • Plan tworzenia kopii zapasowych Jak to zrobiÊ W celu zarchiwizowania w formacie ZIP uĝyj nastÚpujÈcej skïadni: $ zip nazwa_archiwum.zip [PLIKI ½RÓD’OWE/KATALOGI] Oto przykïad: $ zip plik.zip plik W tym przypadku zostanie wygenerowany plik plik.zip. W nastÚpujÈcy sposób rekurencyjnie zarchiwizuj katalogi i pliki: $ zip -r archiwum.zip katalog1 plik2 W tym poleceniu opcja -r sïuĝy do okreĂlenia rekurencji. W przeciwieñstwie do programów lzma, gzip lub bzip2, program zip nie usunie pliku ěródïo- wego po zakoñczeniu archiwizowania. ChoÊ pod tym wzglÚdem program zip przypomina pro- gram tar, moĝe on kompresowaÊ pliki, natomiast program tar tego nie umoĝliwia. Aby wyodrÚbniÊ pliki i katalogi z pliku ZIP, uĝyj polecenia: $ unzip plik.zip Polecenie to spowoduje wyodrÚbnienie plików bez usuwania pliku plik.zip (w przeciwieñstwie do programów unlzma lub gunzip). W celu aktualizowania plików w archiwum przy uĝyciu nowszych plików systemu plików uĝyj flagi -u: $ zip plik.zip -u nowy_plik Usuñ plik z archiwum ZIP, korzystajÈc z opcji -d: $ zip -d arc.zip plik.txt Aby wyĂwietliÊ listÚ plików w archiwum, wykonaj polecenie: $ unzip -l archiwum.zip squashfs — system plików o wysokim stopniu kompresji squashfs to system plików tylko do odczytu o wysokim stopniu kompresji, który umoĝliwia skom- presowanie danych o pojemnoĂci od 2 do 3 GB w pliku o wielkoĂci 700 MB. Czy kiedykolwiek zastanawiaïeĂ siÚ, jak dziaïajÈ dyski Live CD systemu Linux? Gdy rozruch jest przeprowadzany 235 Skrypty powáoki systemu Linux. Receptury z dysku Live CD, ïaduje siÚ kompletne Ărodowisko systemu Linux. Tego rodzaju dyski korzy- stajÈ ze skompresowanego systemu plików tylko do odczytu o nazwie squashfs. W tym przy- padku gïówny system plików znajduje siÚ w skompresowanym pliku systemu plików. System plików squashfs moĝe byÊ podïÈczony w trybie pÚtli zwrotnej, a ponadto moĝliwe jest uzyska- nie dostÚpu do plików. A zatem, gdy jakiĂ proces wymaga uĝycia okreĂlonych plików, sÈ one dekompresowane i ïadowane do pamiÚci RAM, a nastÚpnie uĝywane. ZnajomoĂÊ systemu pli- ków squashfs moĝe byÊ przydatna podczas tworzenia niestandardowego dysku uruchomienio- wego systemu operacyjnego lub w sytuacji, gdy konieczne jest utrzymanie wysokiej kompresji plików i uzyskiwanie do nich dostÚpu bez caïkowitego wyodrÚbniania plików. WyodrÚbnianie duĝego skompresowanego pliku moĝe zajÈÊ wiele czasu. JeĂli jednak plik podïÈczono w trybie pÚtli zwrotnej, dostÚp do niego bÚdzie bardzo szybki, poniewaĝ wymagana czÚĂÊ skompreso- wanych plików jest dekompresowana tylko wtedy, kiedy pojawi siÚ ĝÈdanie dotyczÈce plików. W przypadku zwykïej dekompresji operacji tej sÈ poddawane wszystkie dane. Dowiedz siÚ, jak uĝywaÊ systemu plików squashfs. Wprowadzenie JeĂli dysponujesz dyskiem CD systemu Ubuntu, po prostu znajdě plik .squashfs w katalogu CDRom ROOT/casper/filesystem.squashfs. WewnÚtrznie system plików squashfs uĝywa algo- rytmów kompresji, takich jak gzip i lzma. Ten system plików jest obsïugiwany przez wszyst- kie najnowsze dystrybucje systemu Linux. Jednakĝe do utworzenia plików systemu plików squashfs niezbÚdne bÚdzie zainstalowanie za pomocÈ menedĝera pakietów dodatkowego pa- kietu squashfs-tools. Jak to zrobiÊ Aby utworzyÊ plik systemu plików squashfs przez dodanie katalogów i plików ěródïowych, uĝyj polecenia: $ mksquashfs DANE_½RÓD’OWE compressedfs.squashfs Dane ěródïowe mogÈ byÊ okreĂlone za pomocÈ symboli wieloznacznych bÈdě jako plik lub Ăcieĝki katalogów. Oto przykïad: $ sudo mksquashfs /etc test.squashfs Parallel mksquashfs: Using 2 processors Creating 4.0 filesystem on test.squashfs, block size 131072. [=======================================] 1867/1867 100 # W oknie terminalu zostaną wyĞwietlone dodatkowe szczegóáy. Tutaj pominiĊto je w celu # zaoszczĊdzenia miejsca. W celu podïÈczenia pliku systemu plików squashfs do punktu podïÈczenia w nastÚpujÈcy spo- sób uĝyj podïÈczenia w trybie pÚtli zwrotnej: 236 Rozdziaá 6. • Plan tworzenia kopii zapasowych # mkdir /mnt/squash # mount -o loop compressedfs.squashfs /mnt/squashfs ZawartoĂÊ moĝesz skopiowaÊ, uzyskujÈc dostÚp do punktu podïÈczenia /mnt/squashfs. To nie wszystko System plików squashfs moĝe byÊ utworzony przez okreĂlenie dodatkowych parametrów. Po- znaj inne opcje. Wykluczanie plików podczas tworzenia pliku systemu plików squashfs W trakcie tworzenia pliku systemu plików squashfs moĝesz wykluczyÊ listÚ plików lub okre- ĂliÊ wzorzec plików przy uĝyciu symboli wieloznacznych. Wyklucz listÚ plików okreĂlonÈ jako argumenty wiersza poleceñ za pomocÈ opcji -e. Oto przykïad: $ sudo mksquashfs /etc test.squashfs -e /etc/passwd /etc/shadow Opcja -e sïuĝy do wykluczania plików passwd i shadow. Przy uĝyciu opcji -ef moĝliwe jest równieĝ okreĂlenie listy wykluczonych plików podanej w pliku: $ cat excludelist /etc/passwd /etc/shadow $ sudo mksquashfs /etc test.squashfs -ef excludelist Aby w listach wykluczeñ byïy obsïugiwane symbole wieloznaczne, jako argumentu uĝyj opcji -wildcard. NarzÚdzia kryptograficzne i wartoĂci mieszajÈce Techniki szyfrowania sÈ stosowane gïównie do ochrony danych przed nieautoryzowanym do- stÚpem. Istnieje wiele algorytmów. Uĝytkownicy korzystajÈ z ogólnego zestawu standardowych algorytmów. W Ărodowisku systemu Linux udostÚpniono kilka narzÚdzi sïuĝÈcych do szyfro- wania i rozszyfrowywania. Czasem do sprawdzenia integralnoĂci danych sÈ uĝywane wartoĂci mieszajÈce algorytmy szyfrowania. W tej recepturze zaprezentowano kilka powszechnie wy- korzystywanych narzÚdzi kryptograficznych oraz ogólny zestaw algorytmów, które te narzÚdzia mogÈ obsïugiwaÊ. 237 Skrypty powáoki systemu Linux. Receptury Jak to zrobiÊ Dowiedz siÚ, jak uĝywaÊ narzÚdzi takich jak: crypt, gpg, base64, md5sum, sha1sum i openssl. Q crypt Polecenie crypt to prosty kryptograficzny program narzÚdziowy, który pobiera plik ze standardowego wejĂcia stdin oraz frazÚ kodujÈcÈ, a zwraca zaszyfrowane dane umieszczone w standardowym wyjĂciu stdout: $ crypt plik_wejĂciowy plik_wyjĂciowy Enter passphrase: Polecenie w sposób interaktywny zaĝÈda frazy kodujÈcej. Moĝliwe jest równieĝ przekazanie frazy za poĂrednictwem argumentów wiersza poleceñ: $ crypt FRAZA_KODUJkCA plik_wejĂciowy zaszyfrowany_plik Aby rozszyfrowaÊ plik, uĝyj polecenia: $ crypt FRAZA_KODUJkCA -d zaszyfrowany_plik plik_wyjĂciowy Q gpg (ang. GNU privacy guard) gpg to powszechnie uĝywany schemat szyfrowania sïuĝÈcy do ochrony plików za pomocÈ technik opartych na podpisywaniu kluczem. Schemat ten umoĝliwia dostÚp do danych tylko wiarygodnemu odbiorcy. Sygnatury schematu gpg sÈ bardzo czÚsto spotykane. Omawianie szczegóïów schematu wykracza poza zakres tej ksiÈĝki. Poniĝej wyjaĂniono, jak szyfrowaÊ i rozszyfrowywaÊ plik. Aby zaszyfrowaÊ plik za pomocÈ schematu gpg, wykonaj polecenie: $ gpg -c nazwa_pliku Polecenie to wczytuje w trybie interaktywnym frazÚ kodujÈcÈ i generuje plik nazwa_pliku.gpg. W celu rozszyfrowania pliku .gpg uĝyj polecenia: $ gpg -c nazwa_pliku.gpg Wczytuje ono frazÚ kodujÈcÈ i rozszyfrowuje plik. Q Base64 Base64 to grupa podobnych schematów kodowania, które reprezentujÈ dane binarne w formacie ïañcucha ASCII przez przeksztaïcenie go do postaci kodu radix-64. Polecenie base64 moĝe byÊ uĝyte do kodowania i dekodowania ïañcucha Base64. Aby zakodowaÊ plik binarny do formatu Base64, wykonaj polecenie: $ base64 nazwa_pliku plik_wyjĂciowy lub: $ cat plik | base64 plik_wyjĂciowy Polecenie to moĝe wczytaÊ zawartoĂÊ standardowego wejĂcia stdin. W nastÚpujÈcy sposób zdekoduj dane Base64: 238 Rozdziaá 6. • Plan tworzenia kopii zapasowych $ base64 -d plik plik_wyjĂciowy lub: $ cat plik_base64 | base64 -d plik_wyjĂciowy Q md5sum i sha1sum md5sum i sha1sum to jednokierunkowe algorytmy mieszajÈce, których dziaïanie nie moĝe byÊ odwrócone w celu utworzenia oryginalnych danych. Algorytmów tych zwykle uĝywa siÚ do sprawdzania integralnoĂci danych lub generowania unikalnego klucza dla okreĂlonych danych. Unikalny klucz jest generowany dla kaĝdego pliku przez analizÚ jego zawartoĂci: $ md5sum plik 8503063d5488c3080d4800ff50850dc9 plik $ sha1sum plik 1ba02b66e2e557fede8f61b7df282cd0a27b816b plik Tego typu wartoĂci mieszajÈce idealnie nadajÈ siÚ do przechowywania haseï. Hasïa sÈ skïadowane w postaci ich wartoĂci mieszajÈcych. Gdy uĝytkownik zamierza dokonaÊ uwierzytelnienia, hasïo jest wczytywane i przeksztaïcane w wartoĂÊ mieszajÈcÈ. WartoĂÊ ta jest nastÚpnie porównywana z juĝ przechowywanÈ wartoĂciÈ. JeĂli wartoĂci sÈ takie same, hasïo jest uwierzytelniane, a dostÚp zapewniany. W przeciwnym razie ma miejsce odmowa dostÚpu. Przechowywanie oryginalnych ïañcuchów haseï jest ryzykowne i stwarza zagroĝenie dotyczÈce zabezpieczeñ, które polega na ujawnieniu hasïa. Q wartoĂÊ mieszajÈca przypominajÈca wartoĂÊ w pliku shadow (generowana za pomocÈ ciÈgu zaburzajÈcego) Dowiedz siÚ, jak przy uĝyciu ciÈgu zaburzajÈcego (ang. salt) wygenerowaÊ dla haseï wartoĂci mieszajÈce podobne do tych zawartych w pliku shadow. W systemie Linux hasïa uĝytkowników sÈ przechowywane jako ich wartoĂci mieszajÈce w pliku /etc/shadow. Typowy wiersz w tym pliku wyglÈda nastÚpujÈco: test:$6$fG4eWdUi$ohTKOlEUzNk77.4S8MrYe07NTRV4M3LrJnZP9p.qc1bR5c. EcOruzPXfEu1uloBFUa18ENRH7F70zhodas3cR.:14790:0:99999:7::: W tym wierszu ciÈg $6$fG4eWdUi$ohTKOlEUzNk77.4S8MrYe07NTRV4M3LrJnZP9p. qc1bR5c.EcOruzPXfEu1uloBFUa18ENRH7F70zhodas3cR stanowi wartoĂÊ mieszajÈcÈ przesïaniania, która odpowiada hasïu. W okreĂlonych sytuacjach moĝe byÊ konieczne napisanie skryptów do realizowania kluczowych zadañ administracyjnych, które mogÈ wymagaÊ rÚcznego edytowania haseï lub dodawania uĝytkowników za pomocÈ skryptu powïoki. W tym przypadku musisz wygenerowaÊ ïañcuch hasïa przesïanianego i umieĂciÊ w pliku shadow wiersz podobny do powyĝszego. Dowiedz siÚ, jak wygenerowaÊ hasïo przesïaniane przy uĝyciu programu openssl. Hasïa przesïaniane sÈ zwykle tworzone za pomocÈ ciÈgu zaburzajÈcego, który jest dodatkowym ïañcuchem sïuĝÈcym do zaciemniania i poprawy szyfrowania. CiÈg zaburzajÈcy skïada siÚ z losowych bitów stosowanych jako jedno z wejĂÊ funkcji 239 Skrypty powáoki systemu Linux. Receptury KDF (ang. Key Derivation Function), która dla hasïa generuje wartoĂÊ mieszajÈcÈ z ciÈgiem zaburzajÈcym. WiÚcej informacji o ciÈgu zaburzajÈcym zamieszczono na stronie serwisu Wikipedia pod adresem: http://en.wikipedia.org/wiki/Salt_(cryptography). $ openssl passwd -1 -salt ’A”CUCH_CIkGU_ZABURZAJkCEGO HAS’O $1$’A”CUCH_CIkGU_ZABURZAJkCEGO$323VkWkSLHuhbt1zkSsUG. W miejsce ïañcucha ’A”CUCH_CIkGU_ZABURZAJkCEGO wstaw losowy ïañcuch, a zamiast ïañcucha HAS’O uĝyj ĝÈdanego hasïa. Tworzenie migawek kopii zapasowych za pomocÈ programu rsync SporzÈdzanie kopii zapasowych danych to coĂ, co musi byÊ regularnie wykonywane przez wiÚk- szoĂÊ administratorów systemów. Moĝe byÊ konieczne utworzenie kopii zapasowej danych ser- wera WWW lub danych poïoĝonych w lokalizacjach zdalnych. rsync to polecenie, które moĝe posïuĝyÊ do synchronizacji plików i katalogów zlokalizowanych w dwóch miejscach. DziÚki okreĂlaniu róĝnic w plikach i stosowaniu kompresji odbywa siÚ to przy minimalnym transfe- rze danych. W porównaniu z poleceniem cp, zaletÈ polecenia rsync jest to, ĝe korzysta ono z silnych algorytmów róĝnicowych. Ponadto obsïuguje przesyïanie danych miÚdzy sieciami. Podczas tworzenia kopii polecenie rsync porównuje pliki w lokalizacjach oryginalnej i docelo- wej. W efekcie zostanÈ skopiowane wyïÈcznie nowsze pliki. Polecenie to obsïuguje teĝ kom- presjÚ, szyfrowanie i znacznie wiÚcej rzeczy. Dowiedz siÚ, jak pracowaÊ z programem rsync. Jak to zrobiÊ Aby skopiowaÊ katalog ěródïowy do miejsca docelowego (w celu utworzenia kopii lustrzanej), uĝyj polecenia: $ rsync -av Ăcieĝka_ěródïowa Ăcieĝka_docelowa W tym poleceniu: Q opcja -a powoduje archiwizowanie; Q opcja -v powoduje wyĂwietlenie w standardowym wyjĂciu stdout szczegóïów lub danych o postÚpie operacji. Powyĝsze polecenie w sposób rekurencyjny skopiuje wszystkie pliki ze Ăcieĝki ěródïowej do docelowej. ¥cieĝki moĝesz okreĂliÊ jako Ăcieĝki zdalne lub Ăcieĝki lokalnego hosta. Przykïadowy format Ăcieĝki: /home/slynux/data, slynux@192.168.0.6:/home/backups/data. 240 Rozdziaá 6. • Plan tworzenia kopii zapasowych ¥cieĝka /home/slynux/data reprezentuje ĂcieĝkÚ bezwzglÚdnÈ w przypadku komputera, na którym jest wykonywane polecenie rsync. ¥cieĝka slynux@192.168.0.6:/home/backups/data identyfikuje katalog home/backups/data na komputerze o adresie IP 192.168.0.6, na którym jest zalogowany uĝytkownik slynux. Aby utworzyÊ kopiÚ zapasowÈ danych na zdalnym serwerze lub hoĂcie, uĝyj polecenia: $ rsync -av katalog_ěródïowy nazwa_uĝytkownika@host:¥CIE¿KA W celu zachowania kopii lustrzanej w miejscu docelowym zaplanuj uruchamianie tego same- go polecenia rsync w regularnych odstÚpach czasu. Polecenie to skopiuje w miejsce docelowe tylko zmodyfikowane pliki. W nastÚpujÈcy sposób przywróÊ dane ze zdalnego hosta do hosta lokalnego: $ rsync -av nazwa_uĝytkownika@host:¥CIE¿KA miejsce_docelowe Polecenie rsync uĝywa protokoïu SSH do nawiÈzania poïÈczenia ze zdalnym komputerem. Zapewnij adres zdalnego komputera w formacie uĝytkownik@host, gdzie ïañcuch uĝytkownik reprezentuje nazwÚ uĝytkownika, a ïañcuch host — adres IP lub nazwÚ domeny zdalnego komputera. ’añcuch ¥CIE¿KA identyfikuje ĂcieĝkÚ bezwzglÚdnÈ miejsca, w które naleĝy sko- piowaÊ dane. Jak to zwykle bywa w przypadku protokoïu SSH, polecenie rsync zaĝÈda poda- nia hasïa uĝytkownika. Zadanie moĝe zostaÊ automatyzowane (eliminuje to sprawdzanie hasïa uĝytkownika) za pomocÈ kluczy SSH. Upewnij siÚ, ĝe na zdalnym komputerze zainstalowano i uruchomiono oprogramowanie OpenSSH. Kompresowanie danych podczas przesyïania ich w sieci moĝe znacznie zoptymalizowaÊ szyb- koĂÊ transferu. W celu okreĂlenia operacji kompresowania danych w trakcie przesyïania ich w sieci uĝyj opcji -z polecenia rsync. Oto przykïad: $ rsync -avz miejsce_ěródïowe miejsce_docelowe JeĂli w formacie ïañcucha ¥CIE¿KA na koñcu Ăcieĝki docelowej zostanie uĝyty znak /, polecenie rsync skopiuje w miejsce docelowe zawartoĂÊ katalogu okreĂlonego przez ten znak w Ăcieĝce ěródïowej. JeĂli na koñcu Ăcieĝki ěródïowej nie wstawiono znaku /, polecenie rsync skopiuje w miejsce docelowe tylko katalog okreĂlony przez ten znak. Na przykïad nastÚpujÈce polecenie kopiuje zawartoĂÊ katalogu test: $ rsync -av /home/test/ /home/backups NastÚpujÈce polecenie kopiuje katalog test w miejsce docelowe: $ rsync -av /home/test /home/backups 241 Skrypty powáoki systemu Linux. Receptury JeĂli w ïañcuchu Ăcieĝka_docelowa na koñcu umieszczono znak /, polecenie rsync skopiuje do katalo- gu docelowego dane ěródïowe. JeĂli na koñcu Ăcieĝki docelowej nie wstawiono znaku /, zamiast niego polecenie rsync umieĂci w Ăcieĝ- ce katalog o nazwie podobnej do nazwy katalogu ěródïowego i skopiuje do niego dane ěródïowe. Oto przykïad: $ rsync -av /home/test /home/backups/ Powyĝsze polecenie kopiuje dane ěródïowe (katalog /home/test) do istniejÈcego katalogu o na- zwie backups. $ rsync -av /home/test /home/backups Powyĝsze polecenie kopiuje dane ěródïowe (katalog /home/test) do stworzonego przez siebie katalogu o nazwie backups. To nie wszystko Polecenie rsync oferuje kilka dodatkowych funkcji, które mogÈ byÊ okreĂlone za pomocÈ opcji wiersza poleceñ. Zaznajom siÚ z nimi. Wykluczanie plików podczas archiwizowania przy uĝyciu programu rsync Niektóre pliki nie wymagajÈ aktualizowania podczas archiwizowania w zdalnej lokalizacji. Moĝ- liwe jest poinstruowanie polecenia rsync, aby wykluczyïo okreĂlone pliki z bieĝÈcej operacji. Pliki mogÈ byÊ wykluczone za pomocÈ dwóch opcji. Pierwsza jest nastÚpujÈca: --exclude WZORZEC Moĝesz okreĂliÊ wieloznaczny wzorzec plików do wykluczenia. Oto przykïad: $ rsync -avz /home/code/some_code /mnt/disk/backup/code --exclude *.txt Powyĝsze polecenie wyklucza pliki .txt z procesu tworzenia kopii zapasowej. Moĝliwe jest teĝ okreĂlenie listy plików do wykluczenia przez podanie nazwy pliku z listÈ. W tym celu uĝyj opcji --exclude-from ¥CIE¿KA_DO_PLIKU. Usuwanie nieistniejÈcych plików podczas aktualizowania kopii zapasowej programu rsync Pliki sÈ archiwizowane jako archiwum programu tar, które jest transferowane do zdalnego miejsca skïadowania kopii zapasowych. Gdy konieczne jest zaktualizowanie danych kopii za- pasowej, plik archiwum programu tar jest ponownie tworzony i przenoszony w miejsce prze- 242 Rozdziaá 6. • Plan tworzenia kopii zapasowych chowywania kopii zapasowych. DomyĂlnie program rsync nie usuwa plików z miejsca doce- lowego, jeĂli nie istniejÈ juĝ w lokalizacji ěródïowej. Aby z miejsca docelowego usunÈÊ pliki, których nie ma w miejscu ěródïowym, uĝyj opcji --delete polecenia rsync: $ rsync -avz MIEJSCE_½RÓD’OWE MIEJSCE_DOCELOWE --delete Planowanie tworzenia kopii zapasowych w odstÚpach czasu Moĝliwe jest utworzenie zadania programu cron w celu zaplanowania tworzenia kopii zapa- sowych w regularnych odstÚpach czasu. Oto przykïadowe polecenie: $ crontab -e Dodaj nastÚpujÈcy wiersz: 0 */10 * * * rsync -avz /home/code uĝytkownik@ADRES_IP:/home/backups Powyĝszy wpis programu crontab powoduje zaplanowanie uruchamiania polecenia rsync co 10 godzin. CiÈg */10 okreĂla pozycjÚ godziny w skïadni polecenia crontab. CiÈg /10 powoduje, ĝe kopia zapasowa bÚdzie tworzona co 10 godzin. JeĂli ciÈg */10 umieszczono na pozycji minut, proces bÚdzie wykonywany co 10 minut. Aby dowiedzieÊ siÚ, jak skonfigurowaÊ program crontab, przejdě do podrozdziaïu „Planowa- nie za pomocÈ programu cron” z rozdziaïu 9. Tworzenie kopii zapasowych za pomocÈ narzÚdzia Git na podstawie kontroli wersji Ludzie korzystajÈ z róĝnych strategii tworzenia kopii zapasowej danych. Róĝnicowe kopie za- pasowe sÈ bardziej efektywne od tworzenia kopii caïego katalogu ěródïowego, gdy celem jest uzyskanie katalogu kopii zapasowych z numerem wersji zawierajÈcym datÚ lub godzinÚ. Ope- racja kopiowania powoduje marnowanie przestrzeni dyskowej. NiezbÚdne jest jedynie skopio- wanie zmian, które wystÈpiïy w plikach od chwili wykonania poprzednich kopii zapasowych. Taki proces jest nazywany tworzeniem przyrostowych kopii zapasowych. Moĝliwe jest rÚczne tworzenie tego rodzaju kopii za pomocÈ takich narzÚdzi, jak np. rsync. Jednakĝe odtwarzanie tego rodzaju kopii zapasowych moĝe byÊ trudne. Najlepszym sposobem utrzymywania i od- twarzania zmian jest zastosowanie systemów kontroli wersji. SÈ one intensywnie wykorzysty- wane w przypadku tworzenia oprogramowania i zarzÈdzania kodem, poniewaĝ z pisaniem ko- du wiÈĝe siÚ czÚste wprowadzanie zmian. Git (GNU it) to najbardziej efektywny z dostÚpnych 243 Skrypty powáoki systemu Linux. Receptury systemów kontroli wersji. Moĝe byÊ uĝywany do tworzenia kopii zapasowych zwykïych plików w kontekĂcie niezwiÈzanym z programowaniem. System Git moĝna zainstalowaÊ za pomocÈ menedĝera pakietów dystrybucji. System ten zostaï stworzony przez Linusa Torvaldsa. Wprowadzenie Oto opis problemu: istnieje katalog zawierajÈcy kilka plików i podkatalogów. Konieczne jest Ăledzenie zmian dokonywanych w treĂci katalogu i tworzenie dla nich kopii zapasowej. JeĂli dane ulegnÈ uszkodzeniu lub zaginÈ, musi byÊ moĝliwe odtworzenie ich poprzedniej kopii. NiezbÚdne jest archiwizowanie danych na komputerze zdalnym w regularnych odstÚpach cza- su. Ponadto kopia zapasowa musi zostaÊ umieszczona w róĝnych lokalizacjach na tym samym komputerze (host lokalny). Dowiedz siÚ, jak to zrealizowaÊ za pomocÈ systemu Git. Jak to zrobiÊ Dla katalogu, dla którego zostanie sporzÈdzona kopia zapasowa, uĝyj polecenia: $ cd /home/dane/ěródïowe Niech to bÚdzie katalog ěródïowy do Ăledzenia. Utwórz i zainicjuj zdalny katalog kopii zapasowych. Na komputerze zdalnym utwórz docelo- wy katalog kopii zapasowych: $ mkdir -p /home/backups/backup.git $ cd /home/backups/backup.git $ git init --bare Na ěródïowym komputerze hosta zostanÈ wykonane nastÚpujÈce kroki. 1. Do systemu Git na ěródïowym komputerze hosta dodaj szczegóïy dotyczÈce uĝytkownika: $ git config --global user.name Jan Nowak #ustawienie nazwy uĪytkownika Jan Nowak $ git config --global user.email slynux@slynux.com # ustawienie adresu e-mail slynux@slynux.com Zainicjuj katalog ěródïowy komputera hosta, dla którego zostanie sporzÈdzona kopia zapasowa. Z poziomu tego katalogu, zawierajÈcego pliki do zarchiwizowania, wykonaj nastÚpujÈce polecenia: $ git init Initialized empty Git repository in /home/backups/backup.git/ # inicjalizowanie repozytorium systemu Git $ git commit --allow-empty -am Init [master (root-commit) b595488] Init 244 Rozdziaá 6. • Plan tworzenia kopii zapasowych 2. Z poziomu katalogu ěródïowego wykonaj nastÚpujÈce polecenie, aby dodaÊ zdalny katalog systemu Git i zsynchronizowaÊ kopiÚ zapasowÈ: $ git remote add origin uĝytkownik@zdalny_host:/home/backups/backup.git $ git push origin master Counting objects: 2, done. Writing objects: 100 (2/2), 153 bytes, done. Total 2 (delta 0), reused 0 (delta 0) To uĝytkownik@zdalny_host:/home/backups/backup.git * [new branch] master - master 3. Dodaj lub usuñ pliki w powiÈzaniu ze Ăledzeniem przez system Git. NastÚpujÈce polecenie dodaje do listy archiwizowania wszystkie pliki i katalogi znajdujÈce siÚ w bieĝÈcym katalogu: $ git add * W nastÚpujÈcy sposób warunkowo do listy archiwizowania mogÈ zostaÊ dodane tylko niektóre pliki: $ git add *.txt $ git add *.py UĝywajÈc nastÚpujÈcego polecenia, moĝesz usunÈÊ pliki i katalogi, które nie wymagajÈ Ăledzenia: $ git rm plik W poleceniu moĝesz okreĂliÊ katalog, a nawet symbol wieloznaczny. Oto przykïad: $ git rm *.txt 4. OkreĂl punkty kontrolne lub punkty archiwizacji. Przy uĝyciu nastÚpujÈcego polecenia moĝesz okreĂliÊ punkty kontrolne dla kopii zapasowej z komunikatem: $ git commit -m Komunikat zatwierdzenia Konieczne jest aktualizowanie w regularnych odstÚpach czasu kopii zapasowej w lokalizacji zdalnej. A zatem skonfiguruj zadanie programu cron, które na przykïad tworzy kopie zapasowe co 5 godzin. Za pomocÈ nastÚpujÈcego wiersza utwórz wpis w pliku programu crontab: 0 */5 * * * /home/data/backup.sh Utwórz skrypt /home/data/backup.sh: #!/bin/ bash cd /home/dane/ěródïowe git add . git commit -am Zatwierdzenie - @ $(date) git push W ten sposób przygotowano system tworzenia kopii zapasowych. 5. Odtwórz dane za pomocÈ systemu Git. Aby wyĂwietliÊ wszystkie wersje kopii zapasowej, uĝyj polecenia: 245 Skrypty powáoki systemu Linux. Receptury $ git log Zaktualizuj zawartoĂÊ bieĝÈcego katalogu przy uĝyciu ostatniej kopii zapasowej, ignorujÈc wszelkie ostatnie zmiany. Q W celu przywrócenia dowolnego wczeĂniejszego stanu lub wersji sprawdě identyfikator zatwierdzenia, który jest 32-znakowym ïañcuchem szesnastkowym. Tego identyfikatora uĝyj z poleceniem git checkout. Q W przypadku identyfikatora zatwierdzenia 3131f9661ec1739f72c213ec5769bc0abefa85a9 polecenie bÚdzie miaïo nastÚpujÈcÈ postaÊ: $ git checkout 3131f9661ec1739f72c213ec5769bc0abefa85a9 $ git commit -am Odtwarzanie - @ $(date) Identyfikator zatwierdzenia: 3131f9661ec1739f72c213ec5769bc0abefa85a9 $ git push Q W celu ponownego wyĂwietlenia szczegóïów dotyczÈcych wersji uĝyj polecenia: $ git log JeĂli z jakichĂ powodów zawartoĂÊ bieĝÈcego katalogu ulegïa uszkodzeniu, konieczne jest odtworzenie jej przy uĝyciu kopii zapasowej znajdujÈcej siÚ w zdalnej lokalizacji. Aby zrealizowaÊ to zadanie, wykonaj nastÚpujÈce polecenie: $ git clone uĝytkownik@zdalny_host:/home/backups/backup.git Polecenie to spowoduje odtworzenie caïej zawartoĂci katalogu z kopii zapasowej. Klonowanie dysku twardego i innych dysków za pomocÈ programu dd Podczas pracy z dyskami twardymi i partycjami moĝe byÊ konieczne utworzenie kopii dysku lub sporzÈdzenie kopii zapasowych kompletnych partycji zamiast kopiowania caïej ich zawar- toĂci (proces tworzenia kopii obejmuje nie tylko partycje dysku twardego, ale teĝ kopiÚ caïej jego zawartoĂci wraz z takimi danymi, jak rekord rozruchu, tabela partycji itp.). W tej sytuacji moĝna uĝyÊ polecenia dd. Moĝe ono posïuĝyÊ do klonowania dowolnego typu dysków (np.: dysków twardych, dysków Flash, dysków CD, dysków DVD, dyskietek). Wprowadzenie Nazwa polecenia dd stanowi skrót od Data Definition. Poniewaĝ niewïaĂciwe uĝycie polecenia prowadzi do utraty danych, spotykane jest teĝ rozwiniÚcie skrótu dd jako Data Destroyer (nisz- czyciel danych). Waĝna jest kolejnoĂÊ uĝycia argumentów. Niepoprawne argumenty mogÈ spo- 246 Rozdziaá 6. • Plan tworzenia kopii zapasowych wodowaÊ utratÚ wszystkich danych lub sprawiÊ, ĝe te dane stanÈ siÚ bezuĝyteczne. Polecenie dd to w zasadzie duplikator strumienia bitów, który zapisuje caïy strumieñ z dysku w pliku lub zachowuje plik na dysku. Dowiedz siÚ, jak korzystaÊ z polecenia dd. Jak to zrobiÊ Skïadnia polecenia dd jest nastÚpujÈca: $ dd if=MIEJSCE_½RÓD’OWE of=MIEJSCE_DOCELOWE bs=WIELKO¥m_BLOKU count=LICZBA W tym poleceniu: Q argument if odpowiada Ăcieĝce urzÈdzenia lub pliku wejĂciowego; Q argument of odpowiada Ăcieĝce urzÈdzenia lub pliku wyjĂciowego; Q argument bs reprezentuje wielkoĂÊ bloku (zwykle jest to wynik podniesienia wartoĂci do drugiej potÚgi, na przykïad: 512, 1024, 2048 itd.). ’añcuch LICZBA identyfikuje liczbÚ bloków do skopiowania (wartoĂÊ caïkowita). Caïkowita liczba skopiowanych bajtów = WIELKO¥m_BLOKU * LICZBA. Argumenty bs i count sÈ opcjonalne. OkreĂlajÈc wartoĂÊ ïañcucha LICZBA, moĝesz ograniczyÊ liczbÚ bajtów do skopiowania z pliku wejĂciowego do docelowego. JeĂli nie podano tej wartoĂci, polecenie dd bÚdzie kopiowaÊ da- ne z pliku wejĂciowego do momentu osiÈgniÚcia znaku koñca pliku EOF. Aby skopiowaÊ partycjÚ do pliku, wykonaj polecenie: # dd if=/dev/sda1 of=partycja_sda1.img W tym przypadku /dev/sda1 jest ĂcieĝkÈ urzÈdzenia partycji. W nastÚpujÈcy sposób odtwórz partycjÚ przy uĝyciu kopii zapasowej: # dd if=partycja_sda1.img of=/dev/sda1 W przypadku argumentów if i of naleĝy zachowaÊ ostroĝnoĂÊ. NiewïaĂciwe ich uĝycie moĝe spowodowaÊ utratÚ danych. ZmieniajÈc ĂcieĝkÚ urzÈdzenia /dev/sda1 na wïaĂciwÈ, moĝesz skopiowaÊ lub odtworzyÊ do- wolny dysk. JeĂli chcesz trwale usunÈÊ wszystkie dane partycji, musisz sprawiÊ, ĝe program dd zapisze par- tycjÚ zerami. Oto odpowiednie polecenie: # dd if=/dev/zero of=/dev/sda1 ¥cieĝka /dev/zero reprezentuje urzÈdzenie znakowe, które zawsze zwraca nieskoñczonÈ licz- bÚ znaków . 247 Skrypty powáoki systemu Linux. Receptury W nastÚpujÈcy sposób sklonuj dysk twardy na innym dysku twardym o takiej samej wielkoĂci: # dd if=/dev/sda of=/dev/sdb ¥cieĝka /dev/sdb reprezentuje drugi dysk twardy. Aby utworzyÊ obraz dysku CD-ROM (plik ISO), uĝyj polecenia: # dd if=/dev/cdrom of=cdrom.iso To nie wszystko Po utworzeniu systemu plików w pliku generowanym przez program dd moĝesz go podïÈczyÊ za pomocÈ punktu podïÈczania. Dowiedz siÚ, jak pracowaÊ z tym plikiem. PodïÈczanie plików obrazów Dowolny plik obrazu utworzony za pomocÈ polecenia dd moĝe byÊ podïÈczony przy uĝyciu metody pÚtli zwrotnej. Wraz z poleceniem mount zastosuj argument -o loop: # mkdir /mnt/punkt_podïÈczenia # mount -o loop plik.img /mnt/punkt_podïÈczenia Za poĂrednictwem katalogu /mnt/punkt_podïÈczenia moĝesz uzyskaÊ dostÚp do zawartoĂci pli- ków obrazów. Zobacz równieĝ Q W podrozdziale „Tworzenie plików ISO (hybrydowe pliki IS
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Skrypty powłoki systemu Linux. Receptury
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: