我从一台老人使用的旧电脑上复制了很多照片到外部硬盘驱动器上,并且可能被恶意软件感染。我把照片放在另一个硬盘上。现在我的外部硬盘驱动器完全是空的,但我很偏执,我想确保驱动器上没有任何恶意软件或恶意代码。
所以我想用零填充它,但不破坏文件系统或分区表。在某种程度上,我想把我的磁盘拿回来,就好像我刚买的一样。
是否有可能做到这一点,是否有 Linux 命令可以做到这一点?
我的硬盘使用 msdos(mbr) 分区表格式化为 NTFS。
我从一台老人使用的旧电脑上复制了很多照片到外部硬盘驱动器上,并且可能被恶意软件感染。我把照片放在另一个硬盘上。现在我的外部硬盘驱动器完全是空的,但我很偏执,我想确保驱动器上没有任何恶意软件或恶意代码。
所以我想用零填充它,但不破坏文件系统或分区表。在某种程度上,我想把我的磁盘拿回来,就好像我刚买的一样。
是否有可能做到这一点,是否有 Linux 命令可以做到这一点?
我的硬盘使用 msdos(mbr) 分区表格式化为 NTFS。
简单的回答:
这将完全满足您的要求:用零覆盖文件系统中文件可用的所有空间。
更复杂的答案:
所以我建议你只核对设备(即将设备归零,包括 MBR 和文件系统),然后重新创建分区表并
mkfs.ntfs -f -L LABEL -I
编辑
正如@Nyos 在评论中指出的那样,如果 NTFS 驱动程序没有挂载同步(我不知道默认值),最好
sync
在rm
. 当前版本(从 Ubuntu 18.04 完全修补到 2020-05-02)没有分配延迟块,因此sync
不是绝对必要的,因为所有分配的块都将被写出umount
,但我们不知道未来,我也不知道阅读完整的源代码。同样注意:如果 NTFS 驱动程序一旦获得稀疏文件支持,我们可能需要使用
/dev/urandom
而不是/dev/zero
避免(几乎)无休止的写入。虽然这根本不能回答你的问题......但是:
首先,将磁盘归零是一个非常非常糟糕的主意。这对于“传统”磁盘是正确的,对于固态磁盘更是如此。将磁盘清零很简单(只需创建一个文件并填充它,Eugen Rieck 给出了确切的配方)但它需要很长时间并且会磨损磁盘。在任何类型的硬盘上,写入周期都不是无限的。
另外,请注意,您甚至不能保证覆盖实际上按预期工作。出于您的目的,差异不会很明显,但对于其他目的(考虑安全擦除机密数据),该方法完全不可靠。那是因为由于磨损均衡和重新分配,您绝对无法知道覆盖某些内容时会发生什么。驱动器做了很多事情,没有任何人(包括操作系统!)知道甚至没有办法告诉,更不用说改变了。例如,如果由于控制器对重试次数或 CRC 或其他原因不满意而重新分配了一个扇区,那么您可以做任何您想做的事情,您根本无法再访问该扇区。再也不。尽管如此,数据,或者它剩下的(你不知道)仍然存在,
其次,在完全偏执模式下运行时,保留文件系统(和 MBR)是一个非常非常糟糕的主意,尤其是当磁盘“空”时。除了文件系统的 UUID 之外,仅仅创建一个新的文件系统就不会丢失任何东西(在某些情况下这可能会有点麻烦,但这也很容易修复)。但是,您确实可以确定在您不期望的地方(例如 MBR)没有任何东西。
第三,归零并重用一个实际上根本不是空的“空”文件系统是一个坏主意。当您可以从头开始创建一个新的 FS(没有陈旧的更改日记帐分录、不可见的项目、忘记的流、属性、碎片化的 MFT ......)时,这在性能方面很糟糕。从头开始重新创建所有内容不仅更加安全,而且速度也更快,并且可能会带来更好的整体性能。
tl;博士
大多数设备都有专用的安全擦除或“恢复出厂设置”选项(相同),由随附的管理工具或通过标准 ATA 命令的其他工具支持。该驱动器将使用最有效、破坏性最小的方法(某些驱动器确实会在缺乏真正支持该功能的情况下覆盖整个磁盘,但大多数驱动器只会转储加密或比特加扰密钥,无论磁盘大小如何,它几乎立即起作用)。
hdparm
几乎每一个开箱即用的 Linux 发行版都可以使用它,并且有一个--security-erase
用于该确切目的的选项。除了已经使用了一段时间外,这将为您提供“就像刚购买一样”的磁盘。它将以最快(在技术上可能的范围内)和最少磁盘谋杀的方式这样做。之后,对其进行分区并创建一个文件系统,完成。