bup-restore - instrukcja obsługi, opcje, przykłady poleceń


NAZWA

bup-restore - wyodrębnić pliki z zestawu kopii zapasowych

STRESZCZENIE

bup restore [-r host:[path]] [--outdir=outdir] [--exclude-rx pattern] [--exclude-rx-from filename] [-v] [-q] <paths...>

OPIS

bup restore rozpakowuje pliki z zestawu kopii zapasowych (utworzonych za pomocą bup-save(1)) do lokalnego systemu plików.

Określone ścieżki mają postać /gałąź/wersja/jakiś/gdzie. Elementy ścieżki są następujące:

branch

nazwa zestawu kopii zapasowych, z którego ma zostać przywrócone; odpowiada to opcji --name (-n) do zapisywania bup.

revision

wersja zestawu kopii zapasowych do przywrócenia. Wersja najnowsza jest zawsze najnowszą kopią zapasową w danej gałęzi. Możesz odkryć inne wersje za pomocą bup ls /branch.

some/where

poprzednio zapisaną ścieżkę (po usunięciu/wszczepieniu), którą chcesz przywrócić. Na przykład, etc/hasło.

Jeśli some/where nazwie katalog, bup restore przywróci ten katalog, a następnie rekurencyjnie przywróci jego zawartość.

Jeśli some/where nazywa katalog i kończy się ukośnikiem (tj. ścieżka/do/katalog/), bup restore przywróci elementy potomne tego katalogu bezpośrednio do bieżącego katalogu (lub --outdir ). Jeśli some/where nie kończy się ukośnikiem, dzieci zostaną przywrócone do podkatalogu bieżącego katalogu.

Jeśli jakiś/gdzie nazywa katalog i kończy się na `/.' (tj. ścieżka/do/katalog/.), przywracanie bup zrobi dokładnie to samo, co dla ścieżki/do/katalogu, a następnie przywróci metadane katalogu do bieżącego katalogu (lub --outdir). Zobacz sekcję PRZYKŁADY.

W szczególnym przypadku, jeśli some/where nazywa „najnowsze” dowiązanie symboliczne, np. bup restore /foo/latest, wówczas bup będzie działać dokładnie tak, jakby określony został zapis, na który wskazuje „najnowszy”, i przywróci go, zamiast samego „najnowszego” dowiązania symbolicznego.

Zawsze, gdy dostępne są metadane ścieżki, narzędzie bup restore podejmie próbę ich przywrócenia. Podczas przywracania własności bup implementuje semantykę podobną do tar/rsync. Zwykle preferuje nazwy użytkowników i grup zamiast uid i gid, jeśli są one dostępne, ale nie będzie próbował przywrócić użytkownika, chyba że działa jako root, i powróci do numerycznego uid lub gid, gdy metadane zawierają użytkownika lub nazwa grupy, która nie istnieje w bieżącym systemie. Używanie nazw użytkowników i grup można wyłączyć za pomocą opcji --numeric-ids (co może być ważne na przykład podczas przywracania chroot), aw szczególnym przypadku identyfikator uid lub gid o wartości 0 nigdy nie zostanie odwzorowany według nazwy. Ponadto niektóre systemy nie pozwalają na ustawienie identyfikatora uid/gid, który nie odpowiada znanemu użytkownikowi/grupie. W tych systemach bub zarejestruje błąd dla każdej odpowiedniej ścieżki.

Opcji --map-user, --map-group, --map-uid, --map-gid można użyć do dostosowania dostępnych informacji o właścicielu przed zastosowaniem którejkolwiek z powyższych reguł, ale należy pamiętać, że ze względu na te zasady , --map-uid i --map-gid nie będą miały żadnego efektu, gdy ścieżka ma poprawnego użytkownika lub grupę. W takich przypadkach należy podać albo --numeric-ids, albo użytkownika lub grupę należy usunąć odpowiednim --map-user foo= lub --map-group foo=.

Dowiązania twarde również zostaną przywrócone, jeśli to możliwe, ale przynajmniej obecnie nie zostaną utworzone żadne dowiązania do celów poza drzewem przywracania, a jeśli drzewo przywracania obejmuje inny układ systemów plików niż drzewo zapisu, niektóre zestawy twardych dowiązań mogą nie zostać całkowicie przywrócone.

Należy również pamiętać, że zmiana zestawów dowiązań twardych na dysku między indeksowaniem a zapisem może dać nieoczekiwane rezultaty. W obecnej implementacji bup spróbuje odtworzyć dowolny zestaw dowiązań twardych, tak jak istniał w czasie indeksowania, nawet jeśli wszystkie pliki w zestawie nie były jeszcze dowiązane (ale poza tym były identyczne) w czasie zapisywania.

Należy pamiętać, że podczas procesu przywracania dostęp do danych w drzewie przywracania może być bardziej liberalny niż w oryginalnym źródle. O ile bezpieczeństwo nie ma znaczenia, należy przywrócić do prywatnego podkatalogu, a następnie przenieść powstałe drzewo na jego ostateczną pozycję. Zobacz sekcję PRZYKŁADY, aby zobaczyć demonstrację.

OPCJE

-r, --remote=host:path

przywrócić zestaw kopii zapasowych z podanego zdalnego serwera. Jeśli ścieżka zostanie pominięta, używa domyślnej ścieżki na zdalnym serwerze (nadal musisz dołączyć `:'). Połączenie ze zdalnym serwerem odbywa się za pomocą SSH. Jeśli chcesz określić, którego portu, użytkownika lub klucza prywatnego użyć do połączenia SSH, zalecamy użycie pliku ~/.ssh/config.

-C, --outdir=outdir

utwórz i przejdź do katalogu outdir przed wyodrębnieniem plików.

--numeric-ids

przywrócić identyfikatory numeryczne (użytkownik, grupa itp.) zamiast nazw.

--exclude-rx=pattern

wyklucz każdą ścieżkę pasującą do wzorca, która musi być wyrażeniem regularnym Pythona (http://docs.python.org/library/re.html). Wzorzec zostanie porównany z pełną ścieżką zakorzenioną na szczycie drzewa przywracania, bez zakotwiczenia, więc „x/y” będzie pasować do „wół/jard” lub „pudełko/jardy”. Aby wykluczyć zawartość /tmp, ale nie sam katalog, użyj „^/tmp/. ”. (można podać więcej niż jeden raz)

Zauważ, że korzeń przywracanego drzewa (który pasuje do `^/') jest wierzchołkiem odtwarzanego drzewa archiwum i nie ma nic wspólnego z docelowym systemem plików. Biorąc pod uwagę „restore ... /foo/latest/etc/”, wzorzec `^/passwd$' pasowałby, gdyby plik o nazwie passwd został zapisany jako `/foo/latest/etc/passwd'.

Przykłady:

/foo$

wyklucz dowolny plik o nazwie foo

/foo/$

wyklucz dowolny katalog o nazwie foo

/foo/.

wyklucz zawartość dowolnego katalogu o nazwie foo

^/tmp/.

wyklucz zawartość /tmp na poziomie głównym, ale nie sam /tmp

--exclude-rx-from=filename

odczyt wzorców –exclude-rx z nazwa_pliku, jeden wzorzec w linii (może się powtarzać). Zignoruj całkowicie puste linie.

--sparse

zapisuj dane wyjściowe rzadko, gdy jest to uzasadnione. Obecnie rozsądne oznacza po prostu „przynajmniej wtedy, gdy występuje 512 lub więcej kolejnych zer”.

--map-user old=new

dla każdej ścieżki przywróć starą (zapisaną) nazwę użytkownika jako nową. Określenie „ ” dla nowego spowoduje wyczyszczenie użytkownika. Na przykład „–map-user foo= ” pozwoli uidowi zadziałać dla dowolnej ścieżki, która pierwotnie miała użytkownika „foo ”, chyba że zostanie to anulowane przez następną specyfikację „–map-user foo=... ”. Zobacz OPIS powyżej, aby uzyskać więcej informacji.

--map-group old=new

dla każdej ścieżki przywróć starą (zapisaną) nazwę grupy jako nową. Określenie „ ” dla nowego spowoduje wyczyszczenie grupy. Na przykład „–map-group foo= ” pozwoli gidowi zadziałać dla dowolnej ścieżki, która pierwotnie miała grupę „foo ”, chyba że zostanie to przeciwne przez kolejną specyfikację „–map-group foo=... ”. Zobacz OPIS powyżej, aby uzyskać więcej informacji.

--map-uid old=new

dla każdej ścieżki przywróć stary (zapisany) identyfikator użytkownika jako nowy, chyba że zostanie to anulowane przez kolejny „–map-uid stary=... " opcja. Zauważ, że identyfikator użytkownika będzie odpowiedni tylko dla ścieżek bez użytkownika. Zobacz OPIS powyżej, aby uzyskać więcej informacji.

--map-gid old=new

dla każdej ścieżki przywróć stary (zapisany) gid jako nowy, chyba że zostanie to anulowane przez kolejny „–map-gid old=... " opcja. Zauważ, że gid będzie odpowiedni tylko dla ścieżek bez użytkownika. Zobacz OPIS powyżej, aby uzyskać więcej informacji.

-v, --verbose

zwiększyć wyjście dziennika. Podany raz, wypisuje każdy katalog, gdy jest odtwarzany; podany dwukrotnie, drukuje każdy plik i katalog.

-q, --quiet

tłumić wyjście, w tym miernik postępu. Normalnie, jeśli stderr jest tty, miernik postępu wyświetla całkowitą liczbę odtworzonych plików.

PRZYKŁADY

Utwórz prosty testowy zestaw kopii zapasowych:

$ bup index -u /etc
$ bup save -n mybackup /etc/passwd /etc/profile

Przywróć tylko jeden plik:

$ bup restore /mybackup/latest/etc/passwd
Restoring: 1, done.

$ ls -l passwd
-rw-r--r-- 1 apenwarr apenwarr 1478 2010-09-08 03:06 passwd

Przywróć itp., Aby przetestować (bez końcowego ukośnika):

$ bup restore -C test /mybackup/latest/etc
Restoring: 3, done.

$ find test
test
test/etc
test/etc/passwd
test/etc/profile

Przywróć zawartość etc do przetestowania (końcowy ukośnik):

$ bup restore -C test /mybackup/latest/etc/
Restoring: 2, done.

$ find test
test
test/passwd
test/profile

Przywróć zawartość metadanych etc i etc do przetestowania (końcowy „/.”):

$ bup restore -C test /mybackup/latest/etc/.
Restoring: 2, done.

# At this point test and etc's metadata will match.
$ find test
test
test/passwd
test/profile

Przywróć drzewo bez ryzyka nieautoryzowanego dostępu:

# mkdir --mode 0700 restore-tmp

# bup restore -C restore-tmp /somebackup/latest/foo
Restoring: 42, done.

# mv restore-tmp/foo somewhere

# rmdir restore-tmp

Przywróć drzewo, mapując starego użytkownika i grupę na nowego użytkownika i grupę:

# ls -l /original/y
-rw-r----- 1 foo baz  3610 Nov  4 11:31 y
# bup restore -C dest --map-user foo=bar --map-group baz=bax /x/latest/y
Restoring: 42, done.
# ls -l dest/y
-rw-r----- 1 bar bax  3610 Nov  4 11:31 y

Przywróć drzewo, mapując stary identyfikator użytkownika na nowy identyfikator użytkownika. Zauważ, że stary użytkownik musi zostać wymazany, aby bup nie preferował go nad identyfikatorem użytkownika:

# ls -l /original/y
-rw-r----- 1 foo baz  3610 Nov  4 11:31 y
# ls -ln /original/y
-rw-r----- 1 1000 1007  3610 Nov  4 11:31 y
# bup restore -C dest --map-user foo= --map-uid 1000=1042 /x/latest/y
Restoring: 97, done.
# ls -ln dest/y
-rw-r----- 1 1042 1007  3610 Nov  4 11:31 y

Alternatywny sposób na zrobienie tego samego poprzez uniwersalne unieważnienie użytkowników/grup za pomocą --numeric-ids:

# bup restore -C dest --numeric-ids --map-uid 1000=1042 /x/latest/y
Restoring: 97, done.

ZOBACZ TEŻ

bup-save(1), bup-ftp(1), bup-fuse(1), bup-web(1)

BUP

Część pakietu bu(1).

AUTORSKI

Avery Pennarun .