為什麼人們在從 DVD 製作 ISO 時使用“notrunc”?

為什麼人們在從 DVD 製作 ISO 時使用“notrunc”?

網路上有很多文章描述了從 DVD 視訊光碟製作 ISO 映像的命令列,如下所示:

dd if=/dev/sr0 of=mydvd.iso conv=noerror,sync,notrunc

我想了解為什麼notrunc有必要。據我所知,以及man該命令的頁面,notrunc可以防止輸出檔案被截斷。這基本上意味著,如果文件存在,dd則僅覆蓋已存在的內容;如果那裡有dd不接觸的內容(也許透過尋找文件中的另一個點),那麼原始內容將保持不變。

製作 ISO 時,您肯定想從一個新的、乾淨的空白文件開始嗎?

我唯一能想到的是,在光碟非常糟糕的情況下,使用notrunc使您可以對同一個輸出檔案多次運行相同的 dd 命令,以便每次填充不同的位元。如果輸出檔案不存在則notrunc無效。

是這樣,還是有其他每個人都指定的原因notrunc

(我不是問如何繞過 CSS、ARccOS 或其他任何東西;只是問dd用法)

答案1

如果我必須猜測的話,根據來自維基百科文章關於dd:

notrunc 轉換選項表示不截斷輸出檔案 - 也就是說,如果輸出檔案已經存在,則僅取代指定的位元組並保留輸出檔案的其餘部分。

使用notrunc是出於性能原因。僅為了更新幾個位元組/千位元組/兆位元組/等而重寫整個檔案是沒有意義的。

筆記:這個問題的最終答案必須是 StackOverflow Q&A@garethTheRed評論中引用,標題為:使用 dd 複製磁碟時為什麼要使用 conv=notrunc?。答案非常出色,並且包含一個 C++ 程序,該程序演示了O_TRUNC對區塊設備和檔案的影響。

答案2

如果您想將整個 DVD 複製到一個文件,該文件隨後僅包含該 DVD 的有效負載,則不需要此操作。實際上,notrunc 存在隱私風險,如果覆蓋大於 DVD 有效負載的舊文件,可能會導致媒體溢出。在這種情況下,舊文件的剩餘區塊將保留附加到複製的 DVD 內容中。因此它們將與檔案系統一起複製到新的 DVD 上。

starfry 的評論中建議僅複製 ISO 9660 檔案系統的區塊(如果它實際上是 ISO 9660),這是非常有幫助的,因為 DVD 媒體可能會比檔案系統提供更多的區塊。

相關內容