bup-split - zapisz poszczególne pliki do zestawów kopii zapasowych
bup split [-t] [-c] [-n name] COMMON_OPTIONS
bup split -b COMMON_OPTIONS
bup split –copy COMMON_OPTIONS
bup split –noop [-t|-b] COMMON_OPTIONS
[-r host:path] [-v] [-q] [-d seconds-since-epoch] [--bench] [--max-pack-size=bytes] [-#] [--bwlimit=bytes] [--max-pack-objects=n] [--fanout=count] [--keep-boundaries] [--git-ids | filenames...]
bup split łączy zawartość podanych plików (lub jeśli nie podano nazw plików, czyta ze standardowego wejścia), dzieli zawartość na części o wielkości około 8 000 przy użyciu algorytmu kroczącej sumy kontrolnej i zapisuje te części w repozytorium bup. Kawałki, które były wcześniej przechowywane, nie są ponownie przechowywane (tj. są „zduplikowane”).
Ze względu na sposób, w jaki działa krocząca suma kontrolna, fragmenty są zwykle bardzo stabilne w przypadku zmian w danym pliku, w tym dodawania, usuwania i zmieniania bajtów.
Na przykład, jeśli do tworzenia kopii zapasowej zrzutu XML bazy danych zostanie użyty podział buforów, a plik XML nieznacznie się zmieni między kolejnymi uruchomieniami, prawie wszystkie dane nadal będą deduplikowane, a rozmiar każdej kopii zapasowej po pierwszej będzie zazwyczaj być dość mały.
Inną techniką jest potokowanie wyjścia programów tar(1) lub cpio(1) do podziału bup. Gdy poszczególne pliki w archiwum nieznacznie się zmienią lub zostaną dodane lub usunięte, bup nadal wydajnie przetwarza pozostałą część archiwum. (Zauważ jednak, że zapisywanie bup jest zwykle bardziej wydajnym sposobem osiągnięcia tego).
Aby odzyskać dane, użyj bup-join(1).
Te opcje wybierają podstawowe zachowanie polecenia, przy czym najbardziej prawdopodobnym wyborem jest opcja -n.
po utworzeniu zestawu danych utwórz gałąź git o nazwie nazwa, aby można było uzyskać do niej dostęp za pomocą tej nazwy. Jeśli nazwa już istnieje, nowy zbiór danych będzie traktowany jako potomek starego nazwa. (Dzięki temu możesz stale tworzyć nowe zestawy danych o tej samej nazwie, a później przeglądać historię tego zestawu danych, aby zobaczyć, jak zmieniał się on w czasie). Oryginalne dane będą również dostępne jako plik najwyższego poziomu o nazwie „dane” w VFS, dostępny przez bup fuse, bup ftp itp.
wyprowadź identyfikator drzewa git wynikowego zestawu danych.
wyprowadź identyfikator zatwierdzenia git wynikowego zestawu danych.
wyprowadź serię identyfikatorów git blob, które odpowiadają fragmentom w zbiorze danych. Niekompatybilne z -n, -t i -c.
odczytaj dane i podziel je na bloki w oparciu o algorytm kroczącej sumy kontrolnej „bupsplit”, ale nie przechowuj niczego w repozytorium. Można łączyć z -b lub -t, aby obliczyć (ale nie przechowywać) obiekty blob git lub identyfikatory drzew dla zestawu danych. Jest to głównie przydatne do testów porównawczych i sprawdzania poprawności algorytmu bupsplit. Niekompatybilny z -n i -c.
jak --noop, ale także zapisz dane na stdout. Może to być przydatne do porównywania szybkości odczytu, podziału i zapisu dużych ilości danych. Niekompatybilny z -n, -t, -c i -b.
zapisz zestaw kopii zapasowych na podanym serwerze zdalnym. 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. Nawet jeśli miejsce docelowe jest zdalne, nadal wymagane jest lokalne repozytorium aktualizacji.
podać datę wpisaną w zatwierdzenie (sekundy od 1970-01-01).
wyłącz komunikaty o postępie.
zwiększyć gadatliwość (można użyć więcej niż jeden raz).
stdin to lista identyfikatorów obiektów git zamiast surowych danych. bup split odczyta zawartość każdego nazwanego obiektu git (jeśli istnieje w repozytorium bup) i podzieli go. Może to być przydatne do konwersji repozytorium git z dużymi plikami binarnymi, aby zamiast tego używać funkcji hashsplitting w stylu bup. Ta opcja jest prawdopodobnie najbardziej użyteczna w połączeniu z opcją --keep-boundaries.
jeśli w wierszu poleceń podano wiele nazw plików, są one zwykle łączone razem, tak jakby cała zawartość pochodziła z jednego pliku. Oznacza to, że zestaw tworzonych obiektów blob/drzew jest identyczny z tym, jaki byłby, gdyby istniał pojedynczy plik wejściowy. Jeśli jednak użyjesz opcji --keep-boundaries, każdy plik zostanie podzielony osobno. Nadal otrzymujesz tylko jedno drzewo, zatwierdzenie lub serię obiektów blob, ale każdy obiekt blob pochodzi tylko z jednego pliku; koniec jednego z plików wejściowych zawsze kończy obiekt blob.
wydrukuj czasy testu porównawczego na stderr.
nigdy nie twórz plików pakietów git większych niż podana liczba bajtów. Wartość domyślna to 1 miliard bajtów. Zwykle nie ma powodu, aby to zmieniać.
nigdy nie twórz plików git packfile z większą liczbą obiektów niż podana. Wartość domyślna to 200 tysięcy obiektów. Zwykle nie ma powodu, aby to zmieniać.
podczas dzielenia bardzo dużych plików staraj się utrzymywać liczbę elementów w drzewach na poziomie numobjs.
nie przesyłaj do serwera więcej niż bajtów/s bajtów na sekundę. Jest to dobre, aby kopie zapasowe nie wysysały całej przepustowości sieci. Użyj sufiksu, takiego jak k, M lub G, aby określić wielokrotności odpowiednio 1024, 1024*1024, 1024*1024*1024.
ustaw poziom kompresji na # (wartość od 0 do 9, gdzie 9 to najwyższy poziom, a 0 to brak kompresji). Wartość domyślna to 1 (szybka, luźna kompresja)
$ tar -cf - /etc | bup split -r myserver: -n mybackup-tar
tar: Removing leading /' from member names
Indexing objects: 100% (196/196), done.
$ bup join -r myserver: mybackup-tar | tar -tf - | wc -l
1961bup-join(1), bup-index(1), bup-save(1), bup-on(1), ssh_config(5)
Część pakietu bu(1).
Avery Pennarun