AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1129857
Accepted
AlienDrew
AlienDrew
Asked: 2019-03-31 00:43:03 +0800 CST2019-03-31 00:43:03 +0800 CST 2019-03-31 00:43:03 +0800 CST

如何一次性将零写入 FAT32 驱动器上的可用空间?[复制]

  • 772
这个问题在这里已经有了答案:
如何安全地擦除硬盘驱动器? (19 个回答)
3年前关闭。

大多数人会认为使用dd或sfill通常用零擦除可用空间......但是,FAT32 驱动器的限制是最大文件大小只能是 4 GB。

如何创建多个较小的文件来擦除 FAT32 驱动器的可用空间以克服此限制?

command-line fat32 secure-erase
  • 2 2 个回答
  • 4389 Views

2 个回答

  • Voted
  1. egmont
    2019-03-31T02:08:05+08:002019-03-31T02:08:05+08:00

    这听起来确实像一个XY 问题。

    sfill,或者shred更普遍可用的(coreutils的一部分)覆盖现有文件的内容(如果一切顺利,例如文件系统覆盖到位,请参阅其手册中提到的其他陷阱)。

    如果你想要这个,你可以用shred -n 1 --random-source /dev/zero; 或一个很小的 ​​shell 脚本,它获取文件的大小,然后执行dd conv=notrunc if=/dev/zero of=the_file_to_be_zeroed_out bs=... count=....

    但据我了解,这不是您所需要的。(除非可以确保您只在将文件归零后才删除它,这听起来确实很麻烦且几乎不可行。)您需要将任何文件当前未使用的空间归零,以便代替先前删除的剩余空间文件(仍然需要压缩)未使用的区域尽可能可压缩,也就是说,最好是全零。

    您应该创建一个尽可能大且全为零的新文件。使用类似的东西dd if=/dev/zero of=tmpfile bs=1M,等到它退出并显示错误消息“设备上没有剩余空间”,然后删除此文件。您的图像已准备好进行压缩 - 但不要忘记先压缩umount它!

    • 2
  2. Best Answer
    AlienDrew
    2019-03-31T02:22:58+08:002019-03-31T02:22:58+08:00

    这些说明已经过时,如果您想可靠地将 FAT32 驱动器上的数据归零,请使用该脚本。(如果可以,请随时编辑和更新这些说明)

    1. 始终确保您已更新,并安装安全删除工具

       sudo apt-get update
       sudo apt-get install secure-delete
      
    2. 挂载 FAT32 驱动器

      ###在Linux上

       fdisk -l
       sudo mount -t vfat /dev/sdb1 /PATH/TO/MOUNTED/DRIVE
      

      (sdb1你的sdxx卷名在哪里)

      ###使用 WSL

       sudo mount -t drvfs F: /PATH/TO/MOUNTED/DRIVE
      

      (F你的驱动器号在哪里)

      此外,如果尝试挂载到现有文件夹名称,则可能存在挂载不起作用的错误/mnt,在这种情况下,如果您尝试挂载,则需要卸载sudo umount /mnt/f,重新启动 WSL,删除文件夹(sudo rmdir /mnt/f),重新创建文件夹( sudo mkdir /mnt/f),最后再次挂载

      (f小写的驱动器号在哪里)

    3. 在驱动器的根目录创建一个临时文件夹并移入其中

       mkdir /PATH/TO/MOUNTED/DRIVE/tmp
       cd /PATH/TO/MOUNTED/DRIVE/tmp
      
    4. 找到可用空间然后创建虚拟文件

       df -h /PATH/TO/MOUNTED/DRIVE
       for i in $(seq START ( END-1 )); \
         do fallocate -l 1G emptyfile${i} && echo Created ${i} out of ( END-1 ); \
       done
      

      其中START1 GBEND是可用空间df -h-> 要写入多少 GB,例如

       for i in $(seq 1 ( 10-1 )); do \
         fallocate -l 1G ${i} && echo Created ${i} out of ( 10-1 ); \
       done
      

      这将产生九个 1 GB 的“空文件”。

    5. 找到最后一点要写入的可用空间

       df  /PATH/TO/MOUNTED/DRIVE
       fallocate -l ( REST-1 ) emptyfileEND
      

      (其中 REST 是显示的可用空间df -hB)

    6. 返回驱动器的根目录,现在使用srm(安全删除工具)删除 tmp 文件夹

       cd /PATH/TO/MOUNTED/DRIVE
       srm -llrvz /PATH/TO/MOUNTED/DRIVE/tmp
      

    我创建了一个脚本,它在不使用 fallocate 来支持截断的情况下工作,现在应该可以正常工作。我没有分配 1 GB,而是让脚本分配了 4 GiB 的字节,所以我会更好地填满驱动器。(最后的截断将使文件小于 4 GiB)

    ###Bash 脚本(与 WSL 兼容)(下载)

    • 2

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve