Tajemnice bconsole czyli pierwsze kroki z tekstową konsolą Bacula cz.1
28 listopad 2010, autor: Marcin Haba (gani)
Praca w tekstowej konsoli bconsole może wymagać nieco wprawy szczególnie dla początkujących użytkowników Bacula. Pierwsza część artykułu przedstawia podstawowe komendy wybierania informacji przy pomocy bconsole i kierowana jest właśnie do osób zaczynających poznawanie konsoli Bacula.
Tekstowa konsola bconsole to podstawowe narzędzie administracyjne Bacula. Wyposażona jest w szereg komend, przy pomocy których można dokonywać operacji listowania danych oraz zarządzać innymi serwisami Bacula. Niniejsza pierwsza część artykułu poświęcona jest operacjom wybierania różnego typu informacji z bazy danych.
Informacje o wykonanych zadaniach
Jako "zadanie" przyjąłem nazywać wszystkie operacje, które możliwe są do zdefiniowania przy pomocy zasobu Job (m.in. backup, przywracanie danych, weryfikacja, kopia backupu, zadanie administracyjne, migracja backupu).
Do listowania informacji w bconsole służy komenda list. Do wyświetlenia wszystkich zadań do komendy list dodaje się parametr jobs:
list jobs
Ilustracja 1: Przykładowe wyjście komendy listowania zadań.
Powyższy listing zawiera listę 21 zadań. Nie jest to duża ilość i zapewne użytkownik w krótkim czasie jest w stanie ją przekroczyć. Gdy ilość zadań spowoduje, że przy komendzie ich listowania nie będą one już mieścić się na ekranie, to może oczywiście użyć przewijania w górę tekstowej konsoli (zazwyczaj skrót SHIFT+PAGE UP) lub przesuwać suwakiem w emulatorze terminala. Na pewno jest to jakieś rozwiązanie. Co jednak zrobić, gdy liczba wykonanych zadań przekroczy 1000? Wtedy ani nie będą mieścić się one w buforze tekstowej konsoli ani w zakresie suwaka emulatora terminala. Można w tym celu wykorzystać któreś z systemowych narzędzi jak choćby more lub less. W tym celu w systemowej linii komend (NIE w bconsole) można wydać polecenie jak poniżej:
echo "list jobs" | bconsole | more
lub
echo "list jobs" | bconsole | less
Komendy te spowodują wysłanie zapytania o listę zadań do konsoli bconsole, a następnie poprzez standardowe wyjście wynik zapytania zostanie przekierowany do programu zewnętrznej przeglądarki plików (np. more lub less).
Jeśli już wiadomo, że wynik przekazywanych komend do bconsole zwracany jest na standardowe wyjście to można wnioskować, że wyjście to można przekierować do każdego innego programu, który operuje na standardowym wyjściu (grep, awk, head, tail itp.), czy też przekierować wyjście bconsole do pliku. Co więcej, tego typu wywołanie konsoli Bacula można użyć do budowania własnych skryptów.
Na koniec dodam, że wywołanie te nie ogranicza się do listowania zadań poprzez komendę list jobs lecz można w nim wykorzystać dowolną komendę bconsole.
Aby ograniczyć ilość wyświetlanych zadań z komendy list jobs do jednego konkretnego zadania można użyć następującego wywołania w konsoli Bacula:
list jobid=13
Ilustracja 2: Listing wybranego zadania.
Uzyskana powyżej lista wykonanych zadań poprzez komendę list jobs dostarcza kilka ważniejszych informacji o zadaniach. Nie są to jednak wszystkie informacje, jakie można uzyskać z konsoli bconsole. Do wyświetlenia bardziej szczegółowych informacji o wybranym zadaniu służy komenda:
llist jobid=13
gdzie jako wartość jobid potrzeba wstawić identyfikator żądanego zadania (tutaj wstawiłem identyfikator o wartości 13).
Ilustracja 3: Szczegółowy listing wybranego zadania.
Można również użyć komendy llist z parametrem jobs np:
llist jobs
Ilustracja 4: Szczegółowe informacje o wszystkich zadaniach.
lecz wtedy na ekranie zostaną wyświetlone szczegółowe informacje wszystkich wykonanych zadań, co przy kilkunastu zadaniach daje sporej długości listing. Nie jest to ani czytelny ani wygodny listing do analizowania. Z tego powodu polecam używać llist jobid=ID zamiast llist jobs.
Ostatnia komenda wyciągająca informacje o zadaniach jest swego rodzaju podsumowaniem ilości wykonanych zadań, ilości zapisanych plików i ilości zapisanych bajtów dla każdego zasobu typu Job. Dodatkowo wszystkie te wartości są zsumowane i podane jako całkowita ilość wykonanych zadań, plików i bajtów. Komenda wyciągająca te informacje z bazy danych to:
list jobtotals
Ilustracja 5: Podsumowanie wykonanych zadań.
Informacje o wolumenach
Kolejny zestaw komend, jakie zostaną przedstawione, służy do wybierania informacji o woluminach. Również tutaj użyta zostanie komenda list. Tym razem przełącznikiem będzie media lub volumes w następujący sposób:
list media
lub
list volumes
Ilustracja 6: Lista wszystkich woluminów.
Parametry media i volumes w połączeniu z komendą list znaczą to samo i można ich używać zamiennie. Z tego powodu nie ma znaczenia którego przełącznika użyjemy, gdyż otrzymany listing będzie dokładnie taki sam.
Podobnie jak w przypadku listy zadań, tak i tutaj istnieje możliwość wylistowania informacji o jednym tylko woluminie poprzez:
list media=nazwa_woluminu
lub
list volume=nazwa_woluminu
Ilustracja 7: Listing wybranego wolumina.
Również parametry media i volume mogą występować zamiennie podobnie jak w przypadku listy wszystkich woluminów.
Aby filtrować wyniki komendy list media (list volumes) do wyświetlenia woluminów określonej puli woluminów, potrzeba podać dodatkowy parametr pool, w którym podaje się nazwę puli, której woluminy chce się wyświetlić. Np.:
list media pool=nazwa_puli
lub
list volumes pool=nazwa_puli
Ilustracja 8: Ograniczona do jednej puli lista woluminów.
Aby uzyskać szczególowe informacje o jednym tylko woluminie, można posłużyć się komendą llist w następujący sposób:
llist media=nazwa_woluminu
lub
llist volume=nazwa_woluminu
Ilustracja 9: Szczegółowe informacje o wybranym woluminie.
W komendzie llist volumes (lub llist media) można też ograniczać wynik do określonej puli woluminów poprzez:
llist volumes pool=nazwa_puli
lub
llist media pool=nazwa_puli
Informacje o pulach woluminów
Część informacji o pulach woluminów można było zauważyć w poprzednim podrozdziale, gdzie komenda list media (lub list volumes) pokazała zawartość puli woluminów czyli informacje o tym, jakie woluminy znajdują się w jakich pulach.
Komenda list pools daje możliwość wylistowania nieco więcej informacji na temat puli woluminów.
list pools
Ilustracja 10: Lista puli woluminów.
Komenda llist pool=nazwa_puli udostępnia szerszych informacji na temat jednej konkretnej puli woluminów.
llist pool=nazwa_puli
Ilustracja 11: Szczegółowe informacje wybranej puli woluminów.
Tak jak w przypadku szczegółowego listowania informacji o zadaniu, tak i tutaj można wywołać komendę llist z parametrem pools lecz bez przypisanej do niej wartości. Wynikiem będzie uzyskanie szczegółowych informacji o wszystkich pulach woluminów.
llist pools
Ilustracja 12: Szczegółowe informacje o wszystkich pulach woluminów.
Lista plików zadania
W bazie danych Bacula, oprócz informacji o wykonanych zadaniach, woluminach czy pulach woluminów, przetrzymywane są również wszystkie nazwy zapisywanych plików wraz z ich lokalizacjami. Je również można wylistować w tekstowej konsoli Bacula, a służy do tego komenda:
list files jobid=identyfikator_zadania
Ilustracja 13: Lista plików wybranego zadania.
Jako, że jedno zadanie niejednokrotnie może zawierać setki, tysiące, setki tysięcy czy więcej plików, warto zapisać je bezpośrednio do pliku lub użyć przekierowania standardowego wyjścia bconsole z systemowej linii komend do innego programu. Jak tego dokonać, zaprezentowałem przy okazji omawiania listowania zadań (list jobs). Tutaj przedstawię jak zapisywać listingi wykonanych komend do pliku wprost z tekstowej konsoli Bacula.
Do przekierowania wyjścia wyników komend służy komenda:
@output lokalizacja_pliku
np.
@output /tmp/pliki.txt
Po wywołaniu tej komendy, wynik każdej następnej komendy trafi do zdefiniowanego pliku (w tym wypadku to pliki.txt).
Aby wyłączyć "zrzucanie" wyników komend do pliku, wystarczy wywołać @output bez parametru, np:
@output
Zrzucenie listy zapisanych plików zadania o identyfikatorze 12 do pliku pliki.txt może wyglądać następująco:
@output /tmp/pliki.txt
list files jobid=12
@output
Podsumowanie
To tyle jeśli chodzi o wprowadzenie do wybierania informacji z bazy danych przy użyciu tekstowej konsoli Bacula lub poprzez systemową linię komend. W części drugiej artykułu zaprezentuję w jaki sposób wybierać dane z bazy danych przy użyciu zapytań SQL oraz jak tworzyć własne zestawy zapytań SQL.