最近,我的原始计算机被盗,因此我买了一台二手计算机,并在原始 Windows 操作系统上的 Linux 虚拟机中使用 dd 为 Bullseye 创建了启动盘。
这工作得很好,并且靶心一直工作得很好,但我想擦除我在其上创建启动盘的外部硬盘驱动器的内容。
当我插入它时,它不会像通常那样出现在桌面上,所以我运行
sudo fdisk -l
输出显示我的系统正在识别它,并将其列为“sdb”
所以我尝试了
cd /./;cd dev;ls -a
输出确实列出了它,但它显然不是我尝试时所述的文件夹
cd sdb
所以我的问题是,我可以从这里使用rm
简单地删除 sdb 及其在 dev 文件夹中列出的分区吗?
我怀疑这个问题与驱动器的内容是我用来安装我试图从中删除它的操作系统的启动盘有关。但这是我最好的猜测。
我还研究了该线程中提出的所有其他建议在 Debian 论坛上对于完全相同的问题。最后,他们似乎得出结论,外接硬盘有缺陷。
不过我知道我的电脑没有缺陷,因为虽然我没有另一台电脑,但我将它插入智能电视,并且能够毫无问题地查看其文件夹内容。
答案1
该sdb
设备不是要删除的文件夹或文件,它是实际磁盘设备的表示。您不能用于rm
擦除该设备上的分区。
如果您想删除分区,可以使用fdisk
.这不会清除分区中的数据,它只会从磁盘的分区表中删除分区信息。
如果您想从分区中删除文件,则必须安装要清理的分区。对于每个分区,这将是一系列命令,类似于:
# mount /dev/sdb1 /mnt/scratch
# rm -rf /mnt/scratch/*
# umount /mnt/scratch
然后您可以使用fdisk
删除分区定义。请注意,此过程具有破坏性,并将导致不可恢复的数据丢失(缺乏一些非常专业的恢复工具)。另请注意,擦除启动磁盘的内容很可能会导致磁盘无法启动,因此我不确定您是否确实想要执行此操作。
答案2
我的建议:
alias lsblk2='lsblk -o type,name,label,partlabel,size,fstype,model,serial,wwn,uuid'
然后运行lsblk2
并识别正确的设备...即/dev/sdb
在您的情况下...这样您就不会吹走错误的磁盘
# this will blow away the existing partition table in one easy step
# change "sdb" to the correct device for you, as identified by my lsblk2 alias
parted /dev/sdb mklabel gpt
正如前面提到的,简单地清除或重新创建分区和/或表并不会擦除磁盘上的数据,仍然存在从磁盘上恢复数据的风险。如果您认为有必要这样做,可以采用多种方法来处理此问题,例如将磁盘送给某人,或者如果您有税务信息和个人信息,但您不希望有人在您之后获得它已将磁盘扔进垃圾桶。
在执行上述parted命令之后,您将只sdb
显示没有分区的情况。
parted /dev/sdb mkpart primary 0 100
现在您将拥有一个分区,显示为/dev/sdb1
跨越整个磁盘,但它上面没有文件系统。
从这里您可以
mkfs.xfs /dev/sdb1
创建一个文件系统,然后您可以在 Linux 中挂载并读取/写入该文件系统;它将完全是空的,但是在磁盘本身上,从技术上讲,以前的数据仍然存在于磁盘零级别。如果您随后需要擦拭或者安全擦除磁盘,无论是硬盘驱动器 (hdd) 还是固态磁盘 (ssd),都有多种方法。当它是SSD时,我相信当SSD上有一个全新的空文件系统时,导致TRIM发生将有效地擦除SSD,并且使用是hdparm
实现这一目标的一种方法。
擦除外部硬盘驱动器上的启动盘
这种语法有点没有意义......但要删除引导扇区磁盘的一个简单的
dd if=/dev/zero of=/dev/sdb bs=512 count=1
会这样做,因为传统的 msdos 引导扇区是磁盘的前 512 个字节...bs=4096
非常确定,但是磁盘将无法使用,直到您重新创建正确的分区表,例如parted /dev/sdb mklabel gpt