Czy istnieje sposób na konwersję pliku .bz2 do pliku .tar.bz2 bez rozpakowywania całego pliku na dysk, a następnie ponownej kompresji? Rozmiar zdekompresowany jest większy niż mój dysk. Ponieważ bz2 działa na blokach, wydaje się, że można po prostu zdekompresować blok, przesłać go, ponownie skompresować, usunąć zdekompresowany blok z pamięci itp.
Zapytałem o to na forach Ubuntu i nie znalazłem odpowiedzi.
Odpowiedzi:
Aktualizacja: Moja oryginalna odpowiedź w ogóle nie działa, przepraszam.
tar
nie zaakceptuje strumienia danych ze STDIN jako danych wejściowych, więc pierwsze polecenie nie powiedzie się.Jedynym sposobem, w jaki mogę wymyślić, co chcesz osiągnąć, jest napisanie własnego programu w celu dodania wymaganych
tar
nagłówków itp. Wokół strumienia danych. Następnie możesz napisać:... i (zakładając, że twój program ma odpowiedni
tar
format) możesz go zdekompresować za pomocą standardutar xf foo.tar.bz2
.Prawdopodobnie nie jest to sposób, w jaki chcesz to zrobić, ponieważ nie zapewnia on żadnych zwykłych zalet tarowania pliku w pierwszej kolejności.Problem polega na tym, że tar nie zawiera w sobie żadnego systemu plików, ponieważ wszystko, co mu daliśmy, to zdekompresowany strumień danych. Oznacza to, że musisz go zdekompresować / rozpakować tak:
źródło
tar: -: Cannot stat: No such file or directory
. wydaje się, że nie lubi STDIN. drugie polecenie działałoby, zakładając, że pierwsze działało.tar
nie akceptuje strumienia danych ze STDIN, musi to być lista plików.Myślę, że przekonasz się, że nie robisz tego. Kompresja uzyskana z
.tbz2
pliku w porównaniu do.bz2
pliku jest dość minimalna, jeśli go skompresujesz--best
. Oto przykład w dzienniku błędów httpd:W przeciwnym razie będziesz musiał zrobić to z zatrzymaniem przy dysku twardym.
źródło