我有一個 USB 安裝的硬碟7GB我嘗試使用以下命令填充偽隨機資料的可用空間:
$ cd /media/username/volume_name
$ sudo dd if=/dev/urandom of=random_data_file.txt
random_data_file.txt
以前不存在。我期望該命令創建文件,向其中寫入偽隨機數據,並在包含的分區已滿時停止。檔案管理器的狀態列最終顯示0 bytes
可用空間。但該dd
命令並沒有停止,終端模擬器和檔案管理器都沒有顯示驅動器已滿的任何通知。在我用 終止指令後Ctrl+C
,終端輸出指出40GB已寫入。我在管理器中選擇了該文件,其狀態列也顯示其大小為40GB,比之前的可用空間多了 33 GB。
- 該命令是否有可能覆蓋或修改我的其他一些文件、分區或其他分區?或者這是否意味著
random_data_file.txt
已寫入並覆蓋 40 GB / 7 GB = 5.7 次?如果是後者,那麼為什麼檔案管理器顯示其大小大於 7 GB?使用檔案總管刪除後random_data_file.txt
,其狀態列恢復顯示可用空間為 7 GB。 dd
使用命令建立偽隨機資料並將其寫入輸出檔案直到其包含的分區已滿,而不覆蓋任何內容(同一分區上的可用空間除外)(包括該輸出檔案)的正確方法是什麼?
答案1
假設您的磁碟硬體良好(而不是顯示虛假可用空間的欺詐性 SD 卡),並且您的檔案系統沒有因損壞的空閒列表和其區塊仍在空閒列表中的檔案而損壞,則不會dd if=/dev/urandom of=random_data_file.txt
損壞磁碟或覆蓋任何內容(其他比 random_datafile.txt)。
可能您不需要前面的 sudo,並且如果您不確定 dd 命令是否正確,您當然不應該將其作為 sudo 運行。
它寫入的資料比您預期的要多的一個可能原因是,大多數檔案系統都會保留一點可用空間(通常為 5%),以便當普通使用者看到磁碟已滿時 root 可以繼續寫入。 (再次強調,不要使用 sudo 執行此操作...)