簡體   English   中英

tee是否轉發未寫入文件的數據?

[英]Does tee forward data that has not made it into the file?

我正在將新硬盤置零,如下所示:

pv /dev/zero | tee /dev/sdb | sha1sum -

我的想法是將磁盤置零,並同時計算寫入的許多零的校驗和。 然后,我將對塊設備進行總和,看看它是否與我最初寫入它的數據匹配。

問題是,當“ tee”空間用完並終止時會發生什么? 假設塊設備正好是100萬字節; tee顯然會用一百萬個零字節填充它,但是它將正好轉發一百萬個零字節到sha1sum嗎?

回答原始問題:

不會, tee不會恰好在參數中指定的文件寫入失敗的那一刻停止停止向stdout寫入。

但我認為這並不重要。 您的目標似乎是確保整個磁盤都被零覆蓋,而不必擔心磁盤有多大。 因此,讀取磁盤並將每個讀取的塊與零塊進行比較就足夠了。 您可以使用cmp /dev/sdb /dev/zero 如果顯示“ / dev / sdb上的EOF”,則所有字節均為0。

對於它的價值,我想到了另一種方法來做同樣的事情,盡管有點間接:

pv /dev/zero | dd bs=100M of=/dev/sdb 2> log

dd的報告(捕獲在“ log”中)應包含寫入的字節的精確計數,您可以使用該計數來計算sha1sum(或將塊設備與生成的具有零個正好相同的流進行比較)。

(bs = 100M是因為dd的默認塊大小為512字節,結果在我的用例中表現不佳)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM