除了输出文件和 /dev/urandom 输入文件之外没有其他选项的 dd 是否会导致分区上的其他文件被覆盖?

除了输出文件和 /dev/urandom 输入文件之外没有其他选项的 dd 是否会导致分区上的其他文件被覆盖?

我有一个 USB 硬盘,7 GB我尝试使用以下命令用伪随机数据填充可用空间:

$ cd /media/username/volume_name
$ sudo dd if=/dev/urandom of=random_data_file.txt

random_data_file.txt以前不存在。我期望该命令创建文件,向其中写入伪随机数据,并在包含分区已满时停止。文件管理器的状态栏最终显示0 bytes可用空间。但dd命令没有停止,终端仿真器和文件管理器都没有显示驱动器已满的任何通知。在我使用 终止命令后Ctrl+C,终端输出显示40 GB已写入。我在管理器中选择了该文件,其状态栏也显示了其大小40 GB,比之前的可用空间多了 33 GB。

  1. 此命令是否有可能覆盖或修改了我的其他一些文件、分区或其他分区?或者这是否意味着 random_data_file.txt已被写入和覆盖 40 GB / 7 GB = 5.7 次?如果是后者,那么为什么文件管理器显示其大小大于 7 GB?random_data_file.txt使用文件管理器删除后,其状态栏恢复为显示可用空间为 7 GB。
  2. 使用该dd命令创建并将伪随机数据写入输出文件直到其包含的分区已满为止的正确方法是什么,而不会覆盖任何内容(同一分区上的可用空间除外),包括该输出文件?

答案1

假设您的磁盘硬件良好(而不是显示虚假可用空间的欺诈性 SD 卡),并且您的文件系统没有损坏(损坏的空闲列表和块仍在空闲列表中的文件),那么dd if=/dev/urandom of=random_data_file.txt就不会损坏磁盘或覆盖任何内容(random_datafile.txt 除外)。

很可能您不需要前面的 sudo,并且如果您不确定 dd 命令是否正确,那么您当然不应该以 sudo 形式运行它。

它写入的数据比您预期的多的一个可能原因是,大多数文件系统都保留了一些可用空间(通常为 5%),以便当普通用户看到磁盘已满时,root 可以继续写入。(再次强调,不要使用 sudo 执行此操作...)

相关内容