如何使用終端機在 Android 上製作稀疏文件

如何使用終端機在 Android 上製作稀疏文件

我正在嘗試在 android 上製作一個稀疏文件。為此,我使用 Android 終端模擬器。我已經安裝了 Busybox,因此可以使用 dd 命令。未安裝其他指令(例如 truncate)。我的問題:有誰知道如何使用 android 終端機製作稀疏檔案?

我嘗試了一些在網路上找到的指令:

dd if=/dev/zero of=/sdcard/file.img bs=1 count=0 seek="wanted size"    

但不會建立任何文件。我也嘗試過:

dd if=/dev/zero of=/sdcard/file.img bs="wanted size" count=1.   

但我會收到以下錯誤:

dd "path of if" invalid argument    

有人知道如何做對嗎?

答案1

我自己已經找到答案了。

dd if=/dev/zero of=/sdcard/file.img bs=1 count=0 seek="wanted size"    

不會建立文件,因為磁碟機上的大小由區塊大小和計數決定。透過將計數設為 0,檔案將為 0 字節,因此,它不會存在。

dd if=/dev/zero of=/sdcard/file.img bs="wanted size" count=1    

會報如下錯誤:

dd "path of if" invalid argument    

這裡的問題是塊大小有限制。不能設定那麼大。我需要計算所需區塊大小的計數。我選擇了64k。這是製作 512 MB 稀疏檔案的工作指令:

dd if=/dev/zero of=/sdcard/file.img bs=64k count=8192    

使用查找是可選的。

答案2

以下命令將在我的裝置上建立一個 5 GB 的稀疏文件
dd of=sparse.img bs=1 count=0 seek=5G

dd 是用來複製位元組區塊的程式。
if=用於指定輸入檔。這裡不需要。
of=需要指定輸出文件。
bs=需要指定區塊大小,即每次讀取或寫入的位元組數。
seek=需要指定要跳過的輸出區塊的數量。
count=用於指定要複製的區塊數。

count未指定時的預設行為是複製整個輸入檔案(預設為 stdin)。bs通常應設定為設備的最佳讀取/寫入大小,但在本例中將其設定為1允許我們使用人類可讀的數字seekseek和都count以區塊中的值作為 的bs定義bytes=bs*(count+seek)

稀疏檔案是使用 和 來建立的count=0,而不是使用seek來設定檔案大小。接受的答案根本不會創建稀疏文件,而是用零填充文件。

相關內容