Dlaczego to nie jest możliwe?
pv ${dest_file} | gzip -1
pv
to pasek postępu
błąd
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
0 B 0:00:00 [ 0 B/s] [> ] 0%
To działa
pv ${file_in} | tar -Jxf - -C /outdir
command-line
gzip
clarkk
źródło
źródło
pv
igzip
polecenia?Odpowiedzi:
To, co próbujesz osiągnąć, to zobaczyć pasek postępu procesu kompresji. Ale nie jest możliwe użycie
pv
. Pokazuje tylko postęp transferu, który można osiągnąć przez coś takiego (w każdym razie jest to pierwszy link w Google):Pasek postępu będzie działał szybko, a następnie będzie czekał na kompresję, której nie można już zaobserwować
pv
.Ale możesz to zrobić w drugą stronę i obejrzeć strumień wyjściowy, tutaj nie zobaczysz rzeczywistego postępu, ponieważ
pv
nie znasz rzeczywistego rozmiaru skompresowanego pliku:Najlepsze, jakie do tej pory znalazłem, to ten z linii poleceń, nawet z ograniczaniem szybkości i kompresją katalogów:
źródło
gzip input_file | pv > compressed_file
gzip -c
wymagane jest, aby wysłać dane wyjściowe do stdout aby mogła ona zostać przekazanepv
, w przeciwnym razie pasek postępu nie będzie działać, ponieważ nie ma danych zamiarpv
:)mysqldump ... | gzip | pv > output.sql.gz
.Tak, jest to trochę możliwe przy użyciu wierszy pliku, a nie bajtów. Otrzymujesz wystarczająco dokładny pasek postępu:
źródło
Zamiast tego możesz użyć 7z, aby uzyskać procentowy postęp:
źródło