Czy jest coś do równoległej archiwizacji plików?
Tar jest świetny, ale nie używam archiwów taśmowych i dla mnie ważniejsze jest to, że archiwizacja odbywa się szybko (z kompresją jak bzip2), ponieważ mam smp.
performance
tar
archive
supercheetah
źródło
źródło
zip
w stanie obsłużyć katalogi: |tar
archiwach, a następnie skompresować pakiet za pomocą kompresora pliku (jakgzip
,pigz
itp). Możesz to zrobić w dwóch krokach, ale także w jednym kroku , ponieważ mogą pracować na strumieniach danych ze standardowego wejścia / wyjścia. Wyniki są bardzo podobnezip
, ale bardziej wszechstronne.Odpowiedzi:
Myślę, że szukasz pbzip2:
Zajrzyj na stronę główną projektu lub sprawdź swoje ulubione repozytorium pakietów.
źródło
pigz
ipxz
dla równoległych implementacjigzip
ixz
. Możesz kompresować za pomocą polecenia podobnegotar c dir | pigz -c > dir.tar.gz
i dekompresować za pomocąpigz -cd dir.tar.gz | tar xf -
.tar -cf dir.tar.gz -I pigz dir
itar -xf dir.tar.gz -I pigz
.xz
Jest również wątek: użyjXZ_OPT=-T0 tar -cJf dir.tar.gz dir
iXZ_OPT=-T0 tar -xJf dir.tar.gz
.7zip może działać na wielu wątkach, gdy otrzyma
-mmt
flagę, ale tylko podczas kompresji do archiwów 7z, które oferują doskonałą kompresję, ale generalnie są wolniejsze niż zip do tworzenia archiwów. Zrób coś takiego:źródło
OP zapytał o archiwizację równoległą, a nie kompresję równoległą.
Jeśli materiał źródłowy pochodzi z systemu plików, w którym różne katalogi / pliki mogą znajdować się na różnych dyskach, lub nawet na jednym szybkim dysku, który przekracza prędkość wejściową narzędzia (narzędzi) kompresującego, wówczas rzeczywiście może być korzystne posiadanie wielu strumieni danych wejściowych wchodzenie w warstwy kompresji.
Istotne pytanie brzmi: jak wygląda wyjście z archiwum równoległego? To już nie jest tylko pojedynczy deskryptor pliku /
stdout
, ale deskryptor pliku dla wątku.Przykładem tego jest do tej pory tryb zrzutu równoległego Postgresql
pg_dump
, w którym zrzut jest wykonywany do katalogu, w którym wątki pracują nad zestawem tabel do utworzenia kopii zapasowej (kolejka robocza z wieloma wątkami zużywa kolejkę).Nie jestem pewien, czy istnieją jakieś równoległe archiwizatory, które są w głównym nurcie. Nastąpił włamanie do Tar Solaris do użytku na ZFS: http://www.maier-komor.de/mtwrite.html
Istnieje kilka dedykowanych narzędzi do tworzenia kopii zapasowych, które z powodzeniem uruchamiają wiele wątków, ale znacznie więcej niż tylko podział obciążenia według katalogu na wysokim poziomie.
źródło
zastąp
pigz
swoim ulubionym programem do kompresji równoległej. Powodem użyciatar
jest to, że może przechowywać właściciela, grupę, uprawnienia. Te metadane są często przydatne (np. Przywracanie drzewa katalogów w złożonym systemie).źródło
-I
opcją, która jest taka sama jak--use-compress-program
. Tak więc np.tar cvzf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...."
Można zastosować do opcji wielowątkowej za pomocąpigz
astar -I pigz -cvf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo..."
. To najlepsza, najbardziej odpowiednia odpowiedź, IMHO. Dzięki @uDude! :)pigz jest równoległą implementacją gzip, ale tak naprawdę może używać tylko wielu procesorów do kompresji, a nie dekompresji.
źródło
pigz
wydaje się, że potrafię używać wielu wątków także podczas dekompresji. Spróbuj porównać wydajnośćtime tar xf dir.tar.gz
itime pigz -cd dir.tar.gz | tar xf -
(na moim 4-rdzeniowym procesorze zajmuje to nieco mniej niż połowę czasu).time
z potoku spowoduje tylko wykonanie pierwszego polecenia. Zpigz
dokumentacji : „Dekompresji nie można zrównoleglać, przynajmniej nie bez specjalnie przygotowanych strumieni deflacji w tym celu. W rezultacie pigz używa jednego wątku (głównego wątku) do dekompresji, ale utworzy trzy inne wątki do odczytu, pisanie i sprawdzanie obliczeń, które w niektórych okolicznościach mogą przyspieszyć dekompresję ”.tar
jest po prostu formatem archiwum, który jest bardzo dobry w dokładnym powielaniu plików i zachowaniu drzewa katalogów oraz oryginalnych atrybutów plików. TAR jest bardzo dobry do tworzenia kopii zapasowych, ponieważ wszystko jest zachowane. Używampbzip2
do kompresji archiwów tar, których używam do tworzenia kopii zapasowych systemu z bardzo dobrymi wynikami.to polecenie powinno załatwić sprawę.
pbzip2
można zastąpić innym narzędziem do kompresji, ale ostrzegam, kompresja LZMA (podobnie jak pxz) używa TON RAM podczas kompresji / dekompresji dużych plików (próbowałem uruchomić 8 wątków z 8 GB pamięci RAM, a pxz zaczął zamieniać się na dysk).źródło
Innym kandydatem jest
lbzip2
. Jest dość podobny do pbzip2źródło
Jeśli chodzi o kompresję,
xz
ponieważ około wersji 5.2 obsługuje kompresję równoległą za pomocą-T
opcji.źródło