Windows 命令cipher /w
可以用于安全擦除硬盘的可用空间无需使用第三方工具或 GUI:
cipher
它的工作原理是在目标驱动器的根目录下创建一个名为的文件夹EFSTMPWP
;在这个文件夹内,它会依次用零、一和随机数分别填充三个临时文件,直到填充到驱动器上剩余空白空间的大小。
当文件占据了驱动器的所有空白空间时,它实际上会强制文件系统用文件新写入的数据覆盖其可用空间中保存的所有数据,从而导致之前保存的任何数据永久无法恢复。
我知道 Windows 通常不会像 Linux 那样授予用户访问原始驱动器的权限,但我很困惑为什么 Windows 自己的实用程序会选择以这种方式间接将数据写入文件并在此过程中受到磁盘 I/O 瓶颈的影响,而不是简单地写入原始磁盘本身。
它使用文件擦除磁盘而不是写入原始磁盘有什么特殊原因吗,或者这可能只是设计疏忽?
答案1
从命令行查看,cipher /?
我发现cipher
命令/应用程序所做的远不止使用该/w
选项时发生的操作。如帮助中所述,它用于显示和更改 NTFS 分区上的目录和文件的加密。
在我看来,/w
使用此命令的开关只是一个仅适用于 NTFS 分区上的文件和文件夹的简单函数按照其核心功能描述chipher /?
。
cipher /?
Displays or alters the encryption of directories [files] on NTFS partitions. /W Removes data from available unused disk space on the entire volume. If this option is chosen, all other options are ignored. The directory specified can be anywhere in a local volume. If it is a mount point or points to a directory in another volume, the data on that volume will be removed.
微软帖子中需要指出的几点具体事项“如何使用Cipher.exe覆盖Windows中已删除的数据~” 关于此工具的具体功能...
这个命令/应用程序显然是在 Windows 2003 时代设计的(可能更早),所以如果它不能满足您的任务/操作需求,请考虑使用其他工具。
选项功能中提到了处理
/w
小于 1 KB 的文件的陷阱,因此如果小于 1 KB 的文件对您很重要,请使用其他工具。它指出,如果有大量可用空间需要覆盖,则可能需要很长时间才能完成,所以他们并不是声称这个工具是一个高效的原始磁盘 I/O 野兽——如果这对您的需求来说是一个问题,请使用其他工具。
了解所有这些之后,似乎您提到的额外 I/O 开销和瓶颈风险在设计此功能时并不重要或令人担忧。
此工具对此功能(处理 NTFS 分区上的文件和文件夹)没有任何特殊功能,而其他本机 Windows 方法无法做到这一点;此特定功能不够强大。
查看“如何在 Windows 上将虚拟磁盘的可用空间填零以实现更好的压缩”发布并在那里回答有关fsutil
另一种用于将可用空间填充为零的本机 Windows 方法的问题。
fsutil volume diskfree f:
该报告显示:
Total # of free bytes : 249899469856 Total # of bytes : 249997291520 Total # of avail free bytes : 249899469856
我在以下命令中使用了可用字节总数:
fsutil file createnew F:\clear 249899469856 fsutil file setvaliddata F:\clear 249899469856 fsutil file setzerodata offset=0 length=249899469856 F:\clear del f:\clear
写入250GB的零大约需要4个小时。
更多资源
-
/w:PathName
Remove data from unused portions of a volume. PathName can indicate any directory on the desired volume. Cipher does not obtain an exclusive lock on the drive. This option can take a long time to complete and should only be used when necessary.
如何使用Cipher.exe覆盖Windows中已删除的数据~
注意 cipher /w 命令对小于 1 KB 的文件不起作用。因此,请务必检查文件大小以确认是否小于 1 KB。此问题计划在 longhorn 中修复。
未分配给文件或文件夹的数据将被覆盖。这将永久删除数据。如果要覆盖大量空间,则此过程可能需要很长时间。
答案2
它使用文件擦除磁盘而不是写入原始磁盘有什么特殊原因吗,或者这可能只是设计疏忽?
在挂载原始磁盘时对其进行写入非常危险——如果另一个进程创建或附加文件,cipher
可能会覆盖该数据。更糟糕的是,如果文件系统本身创建数据(如目录条目),cipher
最终也可能会覆盖该数据,从而导致文件系统损坏。
使用普通(尽管非常大)文件覆盖可用空间可消除这种风险,因为文件系统驱动程序将确保分配给该文件的任何空间不会用于其他目的。