[英]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.