Muszę skompresować duży plik o wielkości około 17-20 GB. Muszę podzielić go na kilka plików po około 1 GB na plik.
Szukałem rozwiązania w Google i znalazłem sposoby używania poleceń split
i cat
. Ale w ogóle nie działały dla dużych plików. Ponadto nie będą działać w systemie Windows; Muszę go rozpakować na komputerze z systemem Windows.
linux
bash
file-io
compression
Znany jako
źródło
źródło
Odpowiedzi:
Możesz użyć
split
polecenia z-b
opcją:Można go ponownie złożyć na komputerze z systemem Windows, używając odpowiedzi @ Joshua .
Edycja : Jak stwierdził @Charlie w poniższym komentarzu, możesz chcieć jawnie ustawić przedrostek, ponieważ użyje on
x
inaczej, co może być mylące.Edycja : edycja posta, ponieważ pytanie jest zamknięte, a najbardziej efektywne rozwiązanie jest bardzo zbliżone do treści tej odpowiedzi:
To rozwiązanie pozwala uniknąć używania dużego pliku pośredniego podczas (de) kompresji. Użyj opcji tar -C, aby użyć innego katalogu dla plików wynikowych. btw jeśli archiwum składa się tylko z jednego pliku, można uniknąć tar i używać tylko gzip:
W przypadku systemu Windows możesz pobrać przeniesione wersje tych samych poleceń lub użyć cygwin.
źródło
-b 1024MiB
spowodowało błąd, że była to nieprawidłowa liczba bajtów. Korzystanie z--bytes=1024m
utworów.cat
do ponownego złożenia pliku. Możesz użyćcopy /b file1 + file2 + etc..
w systemie Windows, a następnie skopiować z powrotem do Linuksa i tar może odczytać ponownie zmontowane archiwum. Właśnie tego spróbowałem.--numeric-suffixes
: użyj numerycznych sufiksów zamiast alfabetycznych.Jeśli dzielisz się z Linuksem, nadal możesz ponownie złożyć w systemie Windows.
źródło
copy /b file* filetogether
- support.microsoft.com/kb/71161użyj tar do podziału na wiele archiwów
istnieje wiele programów, które będą współpracować z plikami tar w systemie Windows, w tym cygwin.
źródło
Testowany kod, początkowo tworzy pojedynczy plik archiwum, a następnie dzieli go:
Ten wariant pomija tworzenie pojedynczego pliku archiwum i przechodzi bezpośrednio do tworzenia części:
W tym wariancie, jeśli rozmiar pliku archiwum jest podzielny przez
$CHUNKSIZE
, to ostatni plik częściowy będzie miał rozmiar 0 bajtów.źródło
split
już się dzieje.