bup-restore - wyodrębnić pliki z zestawu kopii zapasowych
bup restore [-r host:[path]] [--outdir=outdir] [--exclude-rx pattern] [--exclude-rx-from filename] [-v] [-q] <paths...>
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:
nazwa zestawu kopii zapasowych, z którego ma zostać przywrócone; odpowiada to opcji --name (-n) do zapisywania bup.
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.
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ę.
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.
utwórz i przejdź do katalogu outdir przed wyodrębnieniem plików.
przywrócić identyfikatory numeryczne (użytkownik, grupa itp.) zamiast nazw.
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:
wyklucz dowolny plik o nazwie foo
wyklucz dowolny katalog o nazwie foo
wyklucz zawartość dowolnego katalogu o nazwie foo
wyklucz zawartość /tmp na poziomie głównym, ale nie sam /tmp
odczyt wzorców –exclude-rx z nazwa_pliku, jeden wzorzec w linii (może się powtarzać). Zignoruj całkowicie puste linie.
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”.
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.
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.
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.
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.
zwiększyć wyjście dziennika. Podany raz, wypisuje każdy katalog, gdy jest odtwarzany; podany dwukrotnie, drukuje każdy plik i katalog.
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.
Utwórz prosty testowy zestaw kopii zapasowych:
$ bup index -u /etc
$ bup save -n mybackup /etc/passwd /etc/profilePrzywróć 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 passwdPrzywróć 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/profilePrzywróć zawartość etc do przetestowania (końcowy ukośnik):
$ bup restore -C test /mybackup/latest/etc/
Restoring: 2, done.
$ find test
test
test/passwd
test/profilePrzywróć 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/profilePrzywróć 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-tmpPrzywróć 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 yPrzywróć 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 yAlternatywny 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.bup-save(1), bup-ftp(1), bup-fuse(1), bup-web(1)
Część pakietu bu(1).
Avery Pennarun