Dd
為什麼 dd 不覆蓋現有數據?
當我使用 dd 工具在磁碟上寫入隨機數據時,我可以再次訪問舊數據。為了測試它,我首先在磁碟中添加了一個“text.txt”文件,並在其中寫入了“this is text”。我的磁碟掛載到 /mnt/backup 目錄。
$ cat /mnt/backup/text.txt this is text $
我用dd:
$ dd if=/dev/urandom of=/dev/sdb1 #this is the disk mounted to the /mnt/backup directory 1025+0 records in 1024+0 records out 1073741824 bytes (1,1 GB, 1,0 GiB) copied, 14,4948 s, 74,1 MB/s $
如果我嘗試列出磁碟的內容,我不會得到任何結果,但是當我輸入完整的文件名時,我可以列印文件的內容。
$ ls -l /mnt/backup/ total 0 $ cat /mnt/backup/text.txt this is text
為什麼會這樣?我的預期是現有數據也會被覆蓋。如果我知道完整的文件名,我仍然可以訪問數據。我錯過了什麼?
數據可能已被覆蓋,但其中一些仍記憶體在記憶體中。
當您像這樣直接寫入設備時,它會繞過 linux 文件系統記憶體機制並直接進入設備。當時記憶體中的內容至少暫時不受影響。如果文件系統仍然掛載,作業系統甚至可能在你用 dd 擦除後將一些臟頁寫回磁碟。
但是,linux 最終可能會注意到文件系統已損壞,這可能會導致核心崩潰。
為獲得最佳效果,應先解除安裝文件系統,然後再開始直接在設備上塗鴉。