Kopiowanie backupów

4 luty 2010 autor: Marcin Haba (gani)

Artykuł zawiera teorię kopiowania backupów jak i prezentuje jego praktyczne zastosowanie przy użyciu strategii backupu Dysk-Na-Dysk-Na-Taśmę.

Wstęp

Podczas planowania strategii wykonywania kopii bezpieczeństwa jednym ze znaczących pytań, jakie możemy sobie zadać, to pytanie o typ nośnika do składowania archiwów. Przy wykorzystaniu urządzeń archiwizujących różnego typu - np. dysk i autoloader, wirtualna biblioteka taśmowa i napęd taśmowy - rozszerza się pole manewru pomiędzy szybkim czasem dostępu do danych, trwałością nośników, szybkością zapisu, bezpieczeństwem danych i wieloma innymi czynnikami, które mogą nakierować użytkownika do wyposażenia się w odpowiednie urządzenia archiwizujące. Celem tego artykułu nie jest jednak prezentacja wad i zalet takich czy innych rozwiązań sprzętu archiwizującego, lecz przedstawienie możliwości kopiowania backupów pomiędzy urządzeniami. W podanych w artykule przykładach urządzeniami są dysk twardy i napęd taśm magnetycznych typu SLR7. Użytym oprogramowaniem kopii zapasowych jest oczywiście Bacula.

Do czego kopiowanie backupów może się przydać

W przypadku posiadania dwóch urządzeń backupowych, kopiowanie backupów pomiędzy urządzeniami podniesie bezpieczeństwo składowanych kopii o 100%, ponieważ w sytuacji uszkodzenia czy utraty nośnika z pierwszego urządzenia, użytkownik będzie miał do dyspozycji pełnosprawne egzemplarze backupów z utraconego nośnika na drugim urządzeniu.

Urządzenia backupowe charakteryzują się różnym czasem dostępu do danych. Dyski twarde należą do urządzeń o dość szybkim dostępie do danych. Napędy taśm magnetycznych, choć z roku na rok ich możliwości w tym zakresie znacznie wzrastają, uznawane są za urządzenia o wolniejszym czasie dostępu do danych (jednakże ich nośniki są znacznie trwalsze w porównaniu do dysków twardych). Używając kombinacji dysków i napędu taśmowego, w połączeniu z kopiowaniem backupów pomiędzy tymi dwoma, można uzyskać zarówno łatwość i szybkość odzyskiwania danych z kopii na dyskach, jak i trwałość kopii backupów składowanych na taśmach magnetycznych. Takie zestawienie nazywane jest rozwiązaniem Dysk-Na-Dysk-Na-Taśmę (ang. disk-to-disk-to-tape, DTDTT).

Strategia Dysk-Na-Dysk-Na-Taśmę

Do czego kopiowanie backupów się nie przyda

Bacula udostępnia możliwość definiowania wielu plikowych urządzeń backupowych w zakresie jednego dysku. Kopiowanie backupów pomiędzy tak skonfigurowanymi urządzeniami nie zapewni bezpieczeństwa w przypadku awarii dysku.

Wyjaśnienie nazewnictwa

W odniesieniu do opisywanej funkcjonalności posługuję się terminem "kopia backupu". Niech czytelnik nie ma mi za złe, że taka fraza brzmi jak kopiowanie kopii, niemniej jednak niektóre terminy anglojęzyczne trudno przełożyć jest na język polski. Aby ubiec możliwe nieporozumienia wyjaśniam, że w dokumentacji Baculi funkcjonalność "kopii kopii" nazwana jest "Copy Jobs". Nie przedłużając, podsumuję, że zamiast używania terminu "Copy Jobs" posługuję się terminem "kopiowanie backupów". Ot tyle! :)

Jak działa kopiowanie backupów

Kopiowanie backupów polega na wykonaniu kopii danych zapisanych wcześniej na jakimś woluminie (lub woluminach) Baculi. Kopiowanie odbywa się na poziomie puli taśm (ang. Pool) bez użycia klienta (File Daemon). Egzemplarze danych backupów składowanych na woluminach jednej puli taśm są transportowane na woluminy innej puli taśm, a następnie zapisywane. Efektem tej operacji jest utworzenie kopii backupów ze źródłowej puli taśm w docelowej puli taśm. Należy tutaj zaznaczyć, że każda pula taśm zawiera woluminy innego urządzenia backupowego. Powstałe i zapisane na woluminach docelowej puli taśm kopie, zawierają nie tylko te same dane co oryginały, lecz również przedstawiają się w bardzo podobny sposób. Mam tu na myśli parametry backupów takie jak: czas uruchomienia i zakończenia kopii, ilość zarchiwizowanych plików czy poziom backupu (np. pełny, przyrostowy itp.).

Co nowego

Wraz z wprowadzeniem do projektu Bacula funkcjonalności kopiowania backupów, pojawiły się nowe wartości dla istniejących dyrektyw zasobu Job i Pool.

Pierwsza to nowy typ backupu (zasób Job):

Type = Copy

Wartość Copy oznacza, że Job, dla którego zdefiniowano taki typ jest Job'em przeznaczonym do wykonania kopii backupów.

Druga z nich dotyczy dyrektywy Selection Type (w zasobie Job), znanej zapewne tym użytkownikom, którzy mieli możliwość skorzystania z funkcjonalności migracji backupów.

Selection Type = PoolUncopiedJobs

Dyrektywa Selection Type definiuje kryterium, na jakiej podstawie kopiowane będą backupy. Nowa wartość PoolUncopiedJobs oznacza, że zostaną przekopiowane wszystkie wykonane backupy, które nie zostały jeszcze skopiowane do docelowej puli taśm. Warto również wiedzieć o tym, że twórcy Baculi deklarują możliwość użycia niektórych kryteriów selekcji wprowadzonych dla migracji backupów, lecz nie zostaną one tutaj zaprezentowane, z racji braku bezpośredniego związku z wprowadzeniem funkcjonalności kopiowania backupów. Zainteresowanych tym tematem czytelników odsyłam do dokumentacji opisującej migrację backupów.

Ostatnia dyrektywa, która podobnie do kryterium selekcji również pojawiła się w migracji backupów, nazwana jest Next Pool i definiowana jest dla zasobu puli taśm (ang. Pool). Przyjmowaną przez nią wartością jest nazwa docelowej puli taśm, do której kopiowane będą backupy.

Next Pool = "nazwa innej puli taśm"

Na podsumowanie tematu nowości w składni pliku konfiguracyjnego Zarządcy (ang. Director) przedstawiam użycie dyrektyw kopiowania backupów.

Pool {
  ....
  Next Pool = "nazwa innej puli taśm"
  ....
}

Job {
  ....
  Type = Copy
  Selection Type = PoolUncopiedJobs
  ....
}

(kropki w powyższej konfiguracji oznaczają, że są to wycinki z definicji zasobów, a nie element składni)

Użyta konfiguracja

Poniżej znajduje się fragment użytej przeze mnie konfiguracji w pliku konfiguracyjnym Zarządcy (bacula-dir.conf) przed wprowadzeniem zmian do kopiowania backupów.

Storage {
  Name = "Urzadzenie Plikowe"
  Address = darkstar
  SDPort = 9103
  Password = "M1wbDBkj8n5lt7QMAP0/R2HgBI+bv881EwTi2BLiqooa"
  Device = "Urzadzenie Plikowe Dev"
  Media Type = Pliki
}

Storage {
  Name = "Urzadzenie Tasmowe"
  Address = darkstar
  SDPort = 9103
  Password = "M1wbDBkj8n5lt7QMAP0/R2HgBI+bv881EwTi2BLiqooa"
  Device = "Urzadzenie Tasmowe Dev"
  Media Type = SLR7
}

Pool {
    Name = "Kopie Plikowe Pelne"
    Pool Type = Backup
    Maximum Volume Bytes = 100000000
    Storage = "Urzadzenie Plikowe"
    Recycle = no
}

Pool {
    Name = "Kopie Tasmowe Pelne"
    Pool Type = Backup
    Storage = "Urzadzenie Tasmowe"
    Recycle = no
}

Job {
    Name = "Dokumenty"
    Type = Backup
    Level = Full
    Client = darkstar-fd
    Pool = "Kopie Plikowe Pelne"
    Messages = "Wiadomosci Zarzadcy"
    FileSet = "Dokumenty FileSet"
}

FileSet {
    Name = "Dokumenty FileSet"
    Include {
       Options {
           signature = MD5
       }
       File = "/home/gani/Dokumenty"
    }
}

Job {
  Name = "Przywrocenie plikow"
  Type = Restore
  Client = darkstar-fd
  FileSet = "Dokumenty FileSet"
  Pool = "Kopie Plikowe Pelne"
  Messages = "Wiadomosci Zarzadcy"
  Where = /tmp
}

Dwa zdefiniowane wyżej urządzenia to kolejno urządzenie plikowe (dysk) i urządzenie napędu taśm magnetycznych typu SLR7 (taśma). Warto zwrócić uwagę na to, gdzie definiowane są te urządzenia dla uruchamianych kopii bezpieczeństwa. Umiejscowienie dyrektywy Storage w zasobach puli taśm umożliwiają jednoznaczne przeznaczenie tych puli dla jednego tylko typu urządzeń. Dla puli taśm o nazwie "Kopie Plikowe Pelne" jest to urządzenie o nazwie "Urzadzenie Plikowe" oraz dla puli taśm o nazwie "Kopie Tasmowe Pelne" jest to "Urzadzenie Tasmowe". Drugą zaletą definiowania w ten sposób dyrektyw Storage dla zasobów Job jest czytelność pliku konfiguracyjnego oraz automatyczna selekcja urządzenia po wybraniu puli taśm.

Konfiguracja kopiowania backupów

Poniżej znajduje się listing wykonanych do tej pory backupów oraz stan wszystkich puli taśm.

list jobs

list media

Wprowadzone zmiany na potrzeby skopiowania backupów z puli taśm "Kopie Plikowe Pelne" do puli taśm "Kopie Tasmowe Pelne" przy użyciu dysku jako urządzenia źródłowego i napędu SLR7 jako napędu docelowego przedstawiają się następująco (zmiany oznaczone zostały pogrubioną czcionką).

Pool {
    Name = "Kopie Plikowe Pelne"
    Pool Type = Backup
    Maximum Volume Bytes = 100000000
    Storage = "Urzadzenie Plikowe"
    Recycle = no
    Next Pool = "Kopie Tasmowe Pelne"
}

Client {
    Name = "None"
    Address = darkstar
    Password = "None"
    Catalog = "Moja Baza Baculi"
}


Job {
    Name = "Kopia Dysk Na Tasme"
    Type = Copy
    Pool = "Kopie Plikowe Pelne"
    Selection Type = PoolUncopiedJobs
    Client = "None"
    FileSet = "None"
    Messages = "Wiadomosci Zarzadcy"
}


FileSet {
    Name = "None"
    Include {
       Options {
          signature = MD5
       }
    }
}

Nowy zasób Job o nazwie "Kopia Dysk Na Tasme" posłuży do kopiowania backupów. Zdziwienie mogą budzić zasoby FileSet oraz Client o nazwach "None". Wyjaśniam, że nie jest to żadne dziwactwo autora artykułu, lecz "spreparowany" klient oraz definicja plików FileSet. Są one konieczne, by stworzyć zasób Job do kopiowania backupów, a służą do zachowania kanonu dyrektyw niezbędnych do definicji zasobu Job.

Pierwsze kopiowanie

Po uruchomieniu backupu zdefiniowanego jako Job o nazwie "Kopia Dysk Na Tasme" nastąpi kopiowanie backupów.

*run job="Kopia Dysk Na Tasme"
Run Copy job
JobName:       Kopia Dysk Na Tasme
Bootstrap:     *None*
Client:        None
FileSet:       None
Pool:          Kopie Plikowe Pelne (From Job resource)
Read Storage:  Urzadzenie Plikowe (From Pool resource)
Write Storage: Urzadzenie Tasmowe (From Storage from Pool's NextPool resource)
JobId:         *None*
When:          2010-02-02 19:32:17
Catalog:       Moja Baza Baculi
Priority:      10
OK to run? (yes/mod/no): yes

*messages
02-lut 19:33 darkstar-dir JobId 7: The following 3 JobIds were chosen to be copied: 4,5,6
02-lut 19:33 darkstar-dir JobId 8: The following 1 JobId was chosen to be copied: 4
02-lut 19:33 darkstar-dir JobId 8: Copying using JobId=4 Job=Dokumenty.2010-02-02_19.27.35_10
02-lut 19:33 darkstar-dir JobId 8: Bootstrap records written to /usr/local/bacula/var/bacula/working/darkstar-dir.restore.1.bsr
02-lut 19:33 darkstar-dir JobId 7: Job queued. JobId=8
02-lut 19:33 darkstar-dir JobId 7: Copying JobId 8 started.
02-lut 19:33 darkstar-dir JobId 10: The following 1 JobId was chosen to be copied: 5
02-lut 19:33 darkstar-dir JobId 10: Copying using JobId=5 Job=Dokumenty.2010-02-02_19.28.20_11
02-lut 19:33 darkstar-dir JobId 10: Bootstrap records written to /usr/local/bacula/var/bacula/working/darkstar-dir.restore.2.bsr
02-lut 19:33 darkstar-dir JobId 7: Job queued. JobId=10
02-lut 19:33 darkstar-dir JobId 7: Copying JobId 10 started.
02-lut 19:33 darkstar-dir JobId 7: Copying using JobId=6 Job=Dokumenty.2010-02-02_19.30.10_12
02-lut 19:33 darkstar-dir JobId 7: Bootstrap records written to /usr/local/bacula/var/bacula/working/darkstar-dir.restore.3.bsr
02-lut 19:33 darkstar-dir JobId 8: Start Copying JobId 8, Job=Kopia_Dysk_Na_Tasme.2010-02-02_19.33.07_14
02-lut 19:33 darkstar-dir JobId 8: Using Device "Urzadzenie Tasmowe Dev"
02-lut 19:33 darkstar-sd JobId 8: Ready to read from volume "kopie-pelne-pliki-1" on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe).
*messages
02-lut 19:33 darkstar-sd JobId 8: Wrote label to prelabeled Volume "kopie-pelne-tasma-1" on device "Urzadzenie Tasmowe Dev" (/dev/nst0)
02-lut 19:33 darkstar-sd JobId 8: Forward spacing Volume "kopie-pelne-pliki-1" to file:block 0:1530.
02-lut 19:34 darkstar-sd JobId 8: End of Volume at file 0 on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe), Volume "kopie-pelne-pliki-1"
02-lut 19:34 darkstar-sd JobId 8: Ready to read from volume "kopie-pelne-pliki-2" on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe).
02-lut 19:34 darkstar-sd JobId 8: Forward spacing Volume "kopie-pelne-pliki-2" to file:block 0:222.
02-lut 19:34 darkstar-sd JobId 8: End of Volume at file 0 on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe), Volume "kopie-pelne-pliki-2"
02-lut 19:34 darkstar-sd JobId 8: End of all volumes.
02-lut 19:34 darkstar-dir JobId 8: Bacula darkstar-dir 5.0.0 (26Jan10): 02-lut-2010 19:34:30
  Build OS:               x86_64-unknown-linux-gnu debian 5.0.3
  Prev Backup JobId:      4
  Prev Backup Job:        Dokumenty.2010-02-02_19.27.35_10
  New Backup JobId:       9
  Current JobId:          8
  Current Job:            Kopia_Dysk_Na_Tasme.2010-02-02_19.33.07_14
  Backup Level:           Full
  Client:                 None
  FileSet:                "None" 2010-02-02 19:33:07
  Read Pool:              "Kopie Plikowe Pelne" (From Job resource)
  Read Storage:           "Urzadzenie Plikowe" (From Pool resource)
  Write Pool:             "Kopie Tasmowe Pelne" (From Job Pool's NextPool resource)
  Write Storage:          "Urzadzenie Tasmowe" (From Storage from Pool's NextPool resource)
  Catalog:                "Moja Baza Baculi" (From Client resource)
  Start time:             02-lut-2010 19:33:09
  End time:               02-lut-2010 19:34:30
  Elapsed time:           1 min 21 secs
  Priority:               10
  SD Files Written:       1,239
  SD Bytes Written:       149,008,530 (149.0 MB)
  Rate:                   1839.6 KB/s
  Volume name(s):         kopie-pelne-tasma-1
  Volume Session Id:      7
  Volume Session Time:    1265134654
  Last Volume Bytes:      149,280,768 (149.2 MB)
  SD Errors:              0
  SD termination status:  OK
  Termination:            Copying OK

02-lut 19:34 darkstar-dir JobId 8: Begin pruning Jobs older than 39 years 7 months 17 days 18 hours 34 mins 30 sec.
02-lut 19:34 darkstar-dir JobId 8: No Jobs found to prune.
02-lut 19:34 darkstar-dir JobId 8: Begin pruning Jobs.
02-lut 19:34 darkstar-dir JobId 8: No Files found to prune.
02-lut 19:34 darkstar-dir JobId 8: End auto prune.

02-lut 19:34 darkstar-dir JobId 10: Start Copying JobId 10, Job=Kopia_Dysk_Na_Tasme.2010-02-02_19.33.07_16
02-lut 19:34 darkstar-dir JobId 10: Using Device "Urzadzenie Tasmowe Dev"
02-lut 19:34 darkstar-sd JobId 10: Ready to read from volume "kopie-pelne-pliki-2" on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe).
02-lut 19:34 darkstar-sd JobId 10: Forward spacing Volume "kopie-pelne-pliki-2" to file:block 0:49165432.
02-lut 19:34 darkstar-sd JobId 10: End of Volume at file 0 on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe), Volume "kopie-pelne-pliki-2"
02-lut 19:34 darkstar-sd JobId 10: Ready to read from volume "kopie-pelne-pliki-3" on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe).
02-lut 19:34 darkstar-sd JobId 10: Forward spacing Volume "kopie-pelne-pliki-3" to file:block 0:222.
02-lut 19:35 darkstar-sd JobId 10: End of Volume at file 0 on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe), Volume "kopie-pelne-pliki-3"
02-lut 19:35 darkstar-sd JobId 10: End of all volumes.
02-lut 19:35 darkstar-dir JobId 10: Bacula darkstar-dir 5.0.0 (26Jan10): 02-lut-2010 19:35:13
  Build OS:               x86_64-unknown-linux-gnu debian 5.0.3
  Prev Backup JobId:      5
  Prev Backup Job:        Dokumenty.2010-02-02_19.28.20_11
  New Backup JobId:       11
  Current JobId:          10
  Current Job:            Kopia_Dysk_Na_Tasme.2010-02-02_19.33.07_16
  Backup Level:           Full
  Client:                 None
  FileSet:                "None" 2010-02-02 19:33:07
  Read Pool:              "Kopie Plikowe Pelne" (From Job resource)
  Read Storage:           "Urzadzenie Plikowe" (From Pool resource)
  Write Pool:             "Kopie Tasmowe Pelne" (From Job Pool's NextPool resource)
  Write Storage:          "Urzadzenie Tasmowe" (From Storage from Pool's NextPool resource)
  Catalog:                "Moja Baza Baculi" (From Client resource)
  Start time:             02-lut-2010 19:34:32
  End time:               02-lut-2010 19:35:13
  Elapsed time:           41 secs
  Priority:               10
  SD Files Written:       1,261
  SD Bytes Written:       149,016,019 (149.0 MB)
  Rate:                   3634.5 KB/s
  Volume name(s):         kopie-pelne-tasma-1
  Volume Session Id:      8
  Volume Session Time:    1265134654
  Last Volume Bytes:      298,497,024 (298.4 MB)
  SD Errors:              0
  SD termination status:  OK
  Termination:            Copying OK

02-lut 19:35 darkstar-dir JobId 10: Begin pruning Jobs older than 39 years 7 months 17 days 18 hours 35 mins 13 sec.
02-lut 19:35 darkstar-dir JobId 10: No Jobs found to prune.
02-lut 19:35 darkstar-dir JobId 10: Begin pruning Jobs.
02-lut 19:35 darkstar-dir JobId 10: No Files found to prune.
02-lut 19:35 darkstar-dir JobId 10: End auto prune.

02-lut 19:35 darkstar-dir JobId 7: Start Copying JobId 7, Job=Kopia_Dysk_Na_Tasme.2010-02-02_19.33.07_13
02-lut 19:35 darkstar-dir JobId 7: Using Device "Urzadzenie Tasmowe Dev"
02-lut 19:35 darkstar-sd JobId 7: Ready to read from volume "kopie-pelne-pliki-3" on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe).
02-lut 19:35 darkstar-sd JobId 7: Forward spacing Volume "kopie-pelne-pliki-3" to file:block 0:98396297.
02-lut 19:35 darkstar-sd JobId 7: End of Volume at file 0 on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe), Volume "kopie-pelne-pliki-3"
02-lut 19:35 darkstar-sd JobId 7: Ready to read from volume "kopie-pelne-pliki-4" on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe).
02-lut 19:35 darkstar-sd JobId 7: Forward spacing Volume "kopie-pelne-pliki-4" to file:block 0:222.
02-lut 19:35 darkstar-sd JobId 7: End of Volume at file 0 on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe), Volume "kopie-pelne-pliki-4"
02-lut 19:35 darkstar-sd JobId 7: Ready to read from volume "kopie-pelne-pliki-5" on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe).
02-lut 19:35 darkstar-sd JobId 7: Forward spacing Volume "kopie-pelne-pliki-5" to file:block 0:222.
02-lut 19:36 darkstar-sd JobId 7: End of Volume at file 0 on device "Urzadzenie Plikowe Dev" (/media/sda5/urzadzenia/UrzadzeniePlikowe), Volume "kopie-pelne-pliki-5"
02-lut 19:36 darkstar-sd JobId 7: End of all volumes.
02-lut 19:36 darkstar-dir JobId 7: Bacula darkstar-dir 5.0.0 (26Jan10): 02-lut-2010 19:36:02
  Build OS:               x86_64-unknown-linux-gnu debian 5.0.3
  Prev Backup JobId:      6
  Prev Backup Job:        Dokumenty.2010-02-02_19.30.10_12
  New Backup JobId:       12
  Current JobId:          7
  Current Job:            Kopia_Dysk_Na_Tasme.2010-02-02_19.33.07_13
  Backup Level:           Full
  Client:                 None
  FileSet:                "None" 2010-02-02 19:33:07
  Read Pool:              "Kopie Plikowe Pelne" (From Job resource)
  Read Storage:           "Urzadzenie Plikowe" (From Pool resource)
  Write Pool:             "Kopie Tasmowe Pelne" (From Job Pool's NextPool resource)
  Write Storage:          "Urzadzenie Tasmowe" (From Storage from Pool's NextPool resource)
  Catalog:                "Moja Baza Baculi" (From Client resource)
  Start time:             02-lut-2010 19:35:15
  End time:               02-lut-2010 19:36:02
  Elapsed time:           47 secs
  Priority:               10
  SD Files Written:       1,271
  SD Bytes Written:       164,464,817 (164.4 MB)
  Rate:                   3499.3 KB/s
  Volume name(s):         kopie-pelne-tasma-1
  Volume Session Id:      9
  Volume Session Time:    1265134654
  Last Volume Bytes:      463,131,648 (463.1 MB)
  SD Errors:              0
  SD termination status:  OK
  Termination:            Copying OK

02-lut 19:36 darkstar-dir JobId 7: Begin pruning Jobs older than 39 years 7 months 17 days 18 hours 36 mins 2 secs.
02-lut 19:36 darkstar-dir JobId 7: No Jobs found to prune.
02-lut 19:36 darkstar-dir JobId 7: Begin pruning Jobs.
02-lut 19:36 darkstar-dir JobId 7: No Files found to prune.
02-lut 19:36 darkstar-dir JobId 7: End auto prune.

Kopiowanie zakończone. Poniżej znajduje się listing backupów:

list jobs

Z trzech backupów o nazwie "Dokumenty" uzyskałem sześć backupów - trzy oryginały oraz trzy kopie. O tym, że backupy o identyfikatorach 9, 11 i 12 są tak naprawdę kopiami backupów informuje litera "C" (Copy) w kolumnie "type". Ostatnie trzy Job'y o identyfikatorach 7, 8, 10 są znakiem po uruchomionym Job'ie kopiowania, który został wykonany tyle razy, ile kopii backupów zostało zrealizowanych.

Powyższy listing stał się trochę nieczytelny, identyfikatory straciły chronologię a kopie umiejscowiły się pomiędzy oryginalnymi backupami. W odseparowaniu kopii backupów od reszty pomocna może okazać się komenda list copies.

*list copies 
The catalog contains copies as follows:
+-------+----------------------------------+-----------+-----------+
| jobid | job                              | copyjobid | mediatype |
+-------+----------------------------------+-----------+-----------+
|     6 | Dokumenty.2010-02-02_19.33.07_18 |        12 | SLR7      |
|     5 | Dokumenty.2010-02-02_19.33.07_17 |        11 | SLR7      |
|     4 | Dokumenty.2010-02-02_19.33.07_15 |         9 | SLR7      |
+-------+----------------------------------+-----------+-----------+

Test kopii backupów

W sprawdzeniu czy kopie backupów naprawdę znajdują się na woluminie taśmowym, posłużę się przywróceniem danych z egzemplarza kopii backupu "Dokumenty" o identyfikatorze 12 (co odpowiada kopii backupu o identyfikatorze 6).

*restore jobid=12
You have selected the following JobId: 12

Building directory tree for JobId(s) 12 ...  +++++++++++++++++++++++++++++++++++++++++++++
1,184 files inserted into the tree.

You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added, unless
you used the "all" keyword on the command line.
Enter "done" to leave this mode.

cwd is: /
$ mark *
1,271 files marked.
$ done
Bootstrap records written to /usr/local/bacula/var/bacula/working/darkstar-dir.restore.4.bsr

The job will require the following
   Volume(s)                 Storage(s)                SD Device(s)
===========================================================================
  
    kopie-pelne-tasma-1       Urzadzenie Tasmowe        Urzadzenie Tasmowe Dev  

Volumes marked with "*" are online.


1,271 files selected to be restored.

Defined Clients:
     1: darkstar-fd
     2: None
Select the Client (1-2): 1
Run Restore job
JobName:         Przywrocenie plikow
Bootstrap:       /usr/local/bacula/var/bacula/working/darkstar-dir.restore.4.bsr
Where:           /tmp
Replace:         always
FileSet:         Dokumenty FileSet
Backup Client:   darkstar-fd
Restore Client:  darkstar-fd
Storage:         Urzadzenie Tasmowe
When:            2010-02-02 19:47:45
Catalog:         Moja Baza Baculi
Priority:        10
Plugin Options:  *None*
OK to run? (yes/mod/no): yes

*messages
02-lut 19:48 darkstar-dir JobId 13: Start Restore Job Przywrocenie_plikow.2010-02-02_19.48.05_20
02-lut 19:48 darkstar-dir JobId 13: Using Device "Urzadzenie Tasmowe Dev"
02-lut 19:50 darkstar-sd JobId 13: Ready to read from volume "kopie-pelne-tasma-1" on device "Urzadzenie Tasmowe Dev" (/dev/nst0).
02-lut 19:50 darkstar-sd JobId 13: Forward spacing Volume "kopie-pelne-tasma-1" to file:block 2:0.
02-lut 19:52 darkstar-sd JobId 13: End of Volume at file 3 on device "Urzadzenie Tasmowe Dev" (/dev/nst0), Volume "kopie-pelne-tasma-1"
02-lut 19:52 darkstar-sd JobId 13: End of all volumes.
02-lut 19:52 darkstar-dir JobId 13: Bacula darkstar-dir 5.0.0 (26Jan10): 02-lut-2010 19:52:55
  Build OS:               x86_64-unknown-linux-gnu debian 5.0.3
  JobId:                  13
  Job:                    Przywrocenie_plikow.2010-02-02_19.48.05_20
  Restore Client:         darkstar-fd
  Start time:             02-lut-2010 19:48:07
  End time:               02-lut-2010 19:52:55
  Files Expected:         1,271
  Files Restored:         1,271
  Bytes Restored:         164,234,826
  Rate:                   570.3 KB/s
  FD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Restore OK

Przywrócenie danych z kopii znajdującej się na urządzeniu taśmowym zakończyło się powodzeniem.

Automatyzacja

Dobrym sposobem na zautomatyzowanie procesu kopiowania backupów na nośniki drugiego urządzenia jest użycie harmonogramu (ang. Schedule). Dzięki temu kopie mogą zapisywać się w o dowolnie wybranej porze.