Muszę wykonać kopię zapasową dość dużego katalogu, ale jestem ograniczony przez rozmiar poszczególnych plików. Chciałbym zasadniczo utworzyć tar.(gz|bz2)
archiwum, które jest podzielone na maksymalnie 200 MB archiwów. Clonezilla robi coś podobnego do tego, dzieląc kopie zapasowe obrazów o takich nazwach:
sda1.backup.tar.gz.aa
sda1.backup.tar.gz.ab
sda1.backup.tar.gz.ac
Czy mogę to zrobić za pomocą jednego polecenia? Rozumiem, jak korzystać z split
polecenia, ale nie chciałbym tworzyć jednego gigantycznego archiwum, a następnie dzielić go na mniejsze archiwa, ponieważ podwoiłoby to miejsce na dysku potrzebne do początkowego utworzenia archiwum.
Odpowiedzi:
Możesz potokować tar do polecenia split:
W niektórych systemach * nix (takich jak OS X) może pojawić się następujący błąd:
W takim przypadku spróbuj tego (zwróć uwagę na
-b 200m
):Jeśli próbujesz podzielić plik, aby zmieścił się na dysku sformatowanym w systemie FAT32, użyj limitu bajtów 4294967295. Na przykład:
źródło
cat sda1.backup.tar.gz.* | tar xzvf -
robotę?split
domyślnie ustawia nazwy plików tak, aby po posortowaniu według LOCALE (co odbywa się poprzez globbing powłoki) były w odpowiedniej kolejności.tar czf ...
bezv
i połączcat backup.tar.gz.* | tar tar xzf -
bezv
. Nie widzę tu żadnej korzyści z pełnego tekstu wyjściowegov
.tar cvzf - Xcode.app/ | split -b 2000m - /Volumes/PH/xcode/xcode.tgz
(używane zcd /Applications/
) Dziękuję bardzo :)W systemie macOS
split
polecenie działa nieco inaczej:źródło
Wystarczy dodać: Ponieważ maksymalny dozwolony rozmiar pliku w vfat / fat32 wynosi 2 ^ 32 minus 1 (4294967295 bajtów), polecenie split z maksymalnym dozwolonym rozmiarem pliku w takim systemie plików to:
źródło
Będziesz potrzebował skryptu do automatyzacji przenoszącego plik pseudo-tape.tar do nowej nazwy:
źródło
-M --tape-length
. Jednak ta odpowiedź ignoruje żądanie OP dotyczące rozwiązania wykorzystującego kompresję gzip lub bzip2.tar
klonie tar zwanymgtar
(GNU tar). Ten klon tar obsługuje tworzenie archiwów o wielu woluminach, ale z zauważalnym prawdopodobieństwem nie jest w stanie / nie chce wyodrębnić z tych archiwów o wielu woluminach, ponieważ błędnie twierdzi, że wolumin uzupełniający nie jest właściwą częścią kontynuacji.