无需root即可快速填满linux硬盘空间

use*_*236 4 linux

所以我和我的朋友正在比赛。他说他有一种方法可以在 linux 服务器上填充大量硬盘空间,而无需成为 root。显然,如果您是 root 用户,则可以使用 DD 来执行此操作,但我们的比赛没有 root 用户。有什么好的方法可以做到吗?

Jam*_*ude 10

作为普通用户,运行:

dd if=/dev/zero of=~/foo bs=1M
Run Code Online (Sandbox Code Playgroud)

这会在 ~/foo 处生成一个空的(但仍然占用空间的文件)。在我的电脑上,它以 39.9 MB/s 的速度膨胀文件(我的处理器是 3.0 GHz 64 位奔腾 4),尽管我想你可以打开多个终端并让它们同时运行......

如果它只是命令行,并且您一次只能打开一个终端,请执行以下操作:

dd if=/dev/zero of=~/foo0 & dd if=/dev/zero of=~/foo1 & dd if=/dev/zero of=~/foo2 & dd if=/dev/zero of=~/foo3
Run Code Online (Sandbox Code Playgroud)

..那应该瞬间填满那个硬盘。

  • 为什么你认为同时写入多个文件更快?在许多只运行一个 dd 的机器上,HDD 的容量已经达到最大值。添加更多只会增加开销,甚至可能会减慢速度。 (3认同)

Hen*_*nes 5

你不需要 root 来运行 dd。

您可以通过多种方式做到这一点。使用/dev/zero为零的无限来源是什么,这似乎发生我们所有的人,让喜欢的东西:

  • cat /dev/zero > ~/my_huge_partition_filling_file.
  • cp /dev/zero ~/my_huge_partition_filling_file.
  • 或者,不必要的复杂性用dd作为用户:
    dd if=/dev/zero of=~/my_huge_partition_filling_file bs=512K。(该bšIZE部分是可选的,但将其设置为一个值大于512个字节可以加快速度做较少的开销)。
  • 或者您可以创建自己的文件。取任何文件,将其与自身连接以创建两倍大小的第二个文件,然后重复该操作。这就是 Terdon 的回答所做的。
  • 或者您可以编写一个程序来无休止地写入文件。这可能是不必要的复杂,标准工具通常更快。此外,它感觉像'un-unix-like')。

您还可以通过创建一个稀疏文件来伪造一个大文件dd if=/dev/zero of=~/my_seemingly_huge_file skip=99999G将立即创建一个非常小的文件,它似乎是 99999 GB。如果你愿意,你可以从中读取 99999 GB。然而在实践中它几乎不占用空间。

将其与具有可移动页面的书进行比较。通常你有第 1、2、3、4、5、6 页……(书末)。跳过你有第 1、2、3、99999 页。(第 4、5、6、...等页在写入时会被插入,但在那之前书会很薄)。

最后,您尝试其中任何一个之前检查您正在写作的地方。

如果它打开/home(例如 to /home/myusername)并且/home安装在它自己的分区上,那么你所能做的就是填满 homedirs 的空间。如果有人做了一些愚蠢的事情,例如将 /home 放在根文件系统上,那么您可以将其填充到 95%。大多数管理员不会喜欢那样。

(95%,或者实际上是 92.2%,因为大多数文件系统上的默认设置似乎为 root 保留了 5%。这意味着它可以填充到 105%,作为用户填充它会使用 (100/105)%,或 95.2 %)