Linux中壓縮區塊裝置時如何讓xz顯示進度百分比?

Linux中壓縮區塊裝置時如何讓xz顯示進度百分比?

當我使用 xz 壓縮區塊裝置(例如/dev/sda1)時,--verbose顯示從輸入檔案讀取的目前大小(以下為 128 MiB)。但是,它不顯示讀取的輸入檔案的百分比(--- %左側)。是否可以給xz一個關於該設備大小的提示,以便它可以顯示百分比?例如,壓縮普通檔案 xz 時0.7 %如下所示。

$ sudo xz -1ck --verbose /dev/sda1 > /dev/null
/dev/sda1 (1/1)
  --- %        12.2 MiB / 128.0 MiB = 0.095    21 MiB/s       0:06             
^C
$ sudo xz -1ck --verbose a_normal_file > /dev/null
a_normal_file (1/1)
  0.7 %         11.6 MiB / 12.7 MiB = 0.916   2.3 MiB/s       0:05             
^C
$ 

答案1

xz無法查看分割區的大小,因為它們不是普通文件,因此不會報告分割區的大小。

不過,您可以做的是使用 來處理它dd if=/dev/sda1 status=progress | xz -1k --verbose > /dev/null。但您不會獲得xz詳細資訊。您要做的是將每個的輸出重定向到單獨的tty或檔案和tail它們。

答案2

可以從 取得分區大小(千比位元組)/proc/partitions,然後dd可以透過 傳遞輸出pv,如下所示:

$ kb=$(grep $(basename /dev/sdb1) /proc/partitions | awk '{print $3}')
$ sudo dd if=/dev/sdb1 | pv -s ${kb}K | xz -1k >/dev/null
72,2MiO 0:00:20 [2,58MiB/s] [========>                         ] 28% ETA 0:00:49

相關內容