如何在 Windows 上的 cygwin 上使用 dd 擦除 USB 驱动器?

如何在 Windows 上的 cygwin 上使用 dd 擦除 USB 驱动器?

我正在尝试使用dd使用以下方法擦除 USB 驱动器赛格威在 Windows 上。我应该使用什么参数of

dd if=/dev/null of=?

答案1

需要注意的是,写入/dev/null块设备不会有任何作用。块设备的意思/dev/sdc不是/dev/sdc1sdc1 指的是第一个分区,而不是整个设备。

您想要使用:

/dev/zero

或者:

/dev/urandom

答案2

Cygwin 用途遵循设备映射对于类似硬盘的设备:

POSIX device name     Internal NT device name

/dev/sda          \device\harddisk0\partition0  (whole disk)
/dev/sda1         \device\harddisk0\partition1  (first partition)
...
/dev/sda15        \device\harddisk0\partition15 (fifteenth partition)

/dev/sdb          \device\harddisk1\partition0
/dev/sdb1         \device\harddisk1\partition1

[up to]

/dev/sddx         \device\harddisk127\partition0
/dev/sddx1        \device\harddisk127\partition1
...
/dev/sddx15       \device\harddisk127\partition15

您可以在管理控制台的磁盘管理中看到 NT 设备名称。

也可使用/dev/zero而不是/dev/null作为输入。

答案3

假设 Cygwin 具有与 Unix/Linux 安装相同的核心命令,您可以使用df—它会告诉您设备上有多少可用空间(磁盘可用空间),还会为您提供良好的文件系统数据——您可以在这样的情况下使用。

例如,以下是输出df从我的 Mac OS X 终端:

Filesystem    512-blocks       Used  Available Capacity   iused     ifree %iused  Mounted on
/dev/disk0s2   975093952  135358704  839223248    14%  16983836 104902906   14%   /
devfs                381        381          0   100%       660         0  100%   /dev
map -hosts             0          0          0   100%         0         0  100%   /net
map auto_home          0          0          0   100%         0         0  100%   /home
/dev/disk2s2  3906357344 2097411968 1808945376    54% 262176494 226118172   54%   /Volumes/Moe
/dev/disk1s2   235154168  118616008  116538160    51%  14826999  14567270   50%   /Volumes/Larry
/dev/disk1s3  3670941032 2100018304 1570922728    58% 262502286 196365341   57%   /Volumes/Curly

请注意最后三个条目,它们显示了挂载点以及您连接到的文件系统。假设我想擦除/Volumes/Curly它,并在某个时候用来自名为 的地方的数据替换它/Volumes/Shemp,我会擦除驱动器上的所有数据,然后运行此dd命令:

dd if=/dev/zero of=/dev/disk1s3/wipe_file.txt

为了让大家了解该命令的作用,if它指示输入文件是什么(获取它,if),并of指示输出文件(类似地...获取它,of),就是这样。我使用 而/dev/zero不是/dev/null因为 是/dev/null您不需要的数据的输入目的地,而是字符/dev/zero流的输出源。0

所以当你运行它时dd命令的内容/dev/zero(只是无休止的0字符流)将被复制到wipe_file.txt/dev/disk1s3/这意味着将创建一个名为 的新文件wipe_file.txt,该文件会不断增长,直到填满 的全部容量/dev/disk1s3/

但是根据你对数据的偏执程度,你也可以改成if这样random

dd if=/dev/random of=/dev/disk1s3/wipe_file.txt

使用zero将明确地仅填充wipe_file.txt字符0,而random将用随机字符填充文件。请注意,用随机数据填充文件将比用空字符填充文件需要更多的计算能力,因此该random方法将花费更长的时间。但是,如果您担心窥探者恢复数据,那么这可能是确保销毁驱动器上已删除数据的最佳方法。

答案4

对我来说,驱动器号映射最可靠的来源是 diskpart、blkid 和 /proc/partitions 的组合

    user@system:~$ diskpart
    
    Microsoft DiskPart-Version 10.0.19041.964
    
    Copyright (C) Microsoft Corporation.
    Auf Computer: SYSTEM
    
    DISKPART> list disk
    
      Datenträger ###  Status         Größe    Frei     Dyn  GPT
      ---------------  -------------  -------  -------  ---  ---
      Datenträger 0    Online         1863 GB  1024 KB        *
      Datenträger 1    Online            9 TB  1024 KB        *
      Datenträger 2    Kein Medium        0 B      0 B
      Datenträger 3    Kein Medium        0 B      0 B
      Datenträger 4    Kein Medium        0 B      0 B
      Datenträger 5    Kein Medium        0 B      0 B
      Datenträger 6    Kein Medium        0 B      0 B
      Datenträger 7    Online         1863 GB  1863 GB
    
    DISKPART> select disk 1
    
    Datenträger 1 ist jetzt der gewählte Datenträger.
    
    DISKPART> list part
    
      Partition ###  Typ               Größe    Offset
      -------------  ----------------  -------  -------
      Partition 1    Reserviert          15 MB    17 KB
      Partition 2    Primär               9 TB    16 MB
    
    DISKPART>
    
    user@system:~$ cat /proc/partitions
    major minor  #blocks  name   win-mounts
        8     0 1953514584 sda
        8     1    113664 sda1
        8     2     16384 sda2
        8     3 1952839766 sda3   C:\
        8     4    541696 sda4
        8    16 9766436864 sdb
        8    17     16367 sdb1
        8    18 9766418432 sdb2   D:\
        8    32         0 sdc
        8    48         0 sdd
        8    64         0 sde
        8    80         0 sdf
        8    96         0 sdg
        8   112 1953514584 sdh
        8   128   8388608 sdi
        8   129   8385536 sdi1

user@system:~$ /sbin/blkid.exe
/dev/sda1: LABEL="SYSTEM" UUID="2A05-C09D" TYPE="vfat"
/dev/sda3: LABEL="Windows" UUID="087A36A47A368E86" TYPE="ntfs"
/dev/sda4: UUID="A080B84E80B82CA2" TYPE="ntfs"
/dev/sdb2: LABEL="Data" UUID="1864245164243442" TYPE="ntfs"
/dev/sdi1: LABEL="PortableBaseLayer" UUID="6278D53678D50A25" TYPE="ntfs"

虽然我当然更喜欢包含真实驱动器名称(Seagate ST2000DM001 或类似名称)的设备列表,但我可以通过检查前面命令的输出轻松找出驱动器映射。一定要仔细检查,没有什么比鞭打 C:-Drive 更有趣的了。

相关内容