為什麼人們在從 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
使用)
如果您想將整個 DVD 複製到一個文件中,該文件之後只包含該 DVD 的有效負載,則不需要它。實際上 notrunc 存在隱私風險,如果您覆蓋大於 DVD 有效負載的舊文件,可能會導致媒體溢出。在這種情況下,舊文件的剩餘塊將繼續附加到複製的 DVD 內容中。因此它們將與文件系統一起被複製到新的 DVD 中。
starfry 的評論中建議僅複製 ISO 9660 文件系統(如果它實際上是 ISO 9660)的塊非常有用,因為 DVD 介質可能提供比文件系統更多的塊。
如果我不得不猜測,根據維基百科文章的
dd
評論:notrunc 轉換選項意味著不截斷輸出文件——也就是說,如果輸出文件已經存在,只需替換指定的字節並保留輸出文件的其餘部分。
使用
notrunc
是出於性能原因。僅僅為了更新幾個字節/千字節/兆字節/等而重寫整個文件是沒有意義的。**注意:**這個問題的最終答案必須是@garethTheRed在評論中引用的 StackOverflow Q&A,標題為:Why using conv=notrunc when cloning a disk with dd? . 那裡的答案非常棒,包括一個 C++ 程序,該程序展示了
O_TRUNC
對塊設備和文件的影響。