【问题标题】:Using perl script to fill up hard drive - can this be done more efficiently?使用 perl 脚本来填充硬盘驱动器 - 这可以更有效地完成吗?
【发布时间】:2020-04-11 10:55:04
【问题描述】:

我已经编写了一个 Perl 脚本 (Strawberry) 来用一些半随机数字填充一些旧硬盘驱动器几次,然后再将它们发送到回收站。
该脚本创建一个约 100mb 的文件,其中包含随机的 0 和 1,然后将其写入文件 10 次。
然后根据硬盘大小重复此过程(在示例中仅 3 次用于测试目的)。

目前,每个文件大约需要 36 秒。
我的问题是:我可以对脚本进行哪些更改以加快速度?

这是完整的脚本:

my $master = "c:/programme/tools/filluphd/master.txt";
my $rd;

my $log = "c:/programme/tools/filluphd/log.log";

my $file = "f:/file_";

#create master
open (MASTER, ">", $master);

for ($i = 0; $i < 100000000; $i++)
{
    $rd = int(rand(2)); 
    print MASTER $rd;
}

close (MASTER);

open (LOG, ">", $log);
print LOG "start: ".localtime()."\n";
my $start_time = time();
my $random;
open (MASTER, "<", $master) or die "cannot open master: $!"."\n";
while (<MASTER>)
{
    $random .= $_;
}
close (MASTER);
for ($n = 0; $n <= 2 ; $n++) 
{
    my $file_start = time();
    my $filename = $file.$n.".txt";
    my $i = 0;
    open (FILE, ">", $filename);
    for ($i; $i <= 10; $i++)
    {
        print FILE $random;
    }
    close (FILE);
    my $file_end = time();
    my $file_runtime = $file_end - $file_start;
    print LOG "file ".$filename." took ".$file_runtime." seconds!"."\n";
}

my $end_time = time();
my $run_time = $end_time - $start_time;
print LOG "run time: ".$run_time." seconds"."\n";
print LOG "finish: ".localtime()."\n";
close (LOG);

【问题讨论】:

  • 我会去这里:partedmagic.com
  • 是的,不是我想要的。我知道有专业的解决方案,但为什么不自己动手呢?
  • 3) 您只尝试一次通过,但洗涤器通常会多次通过(多次写入同一位置)。但这可能没有必要;这取决于您的威胁模型。但是一次通过还不足以完全消除构成数据的磁场。
  • Re "1) 是的,这会填满我的硬盘,直到空间不足",也许吧,但那不是你用 1s 填满了硬盘和 0,这绝对不意味着一切都被覆盖了。我的评论站得住脚。您的工具甚至无法擦除您的驱动器。

标签: perl strawberry-perl


【解决方案1】:

我做了一些测量,发现 HD 所在的机箱仅支持 USB2。 这意味着大约 30MB/s 的速度完全饱和,Windows 工具显示了这一点。 Speedwise,没有什么可做的。

【讨论】:

    猜你喜欢
    • 2015-03-26
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2012-10-30
    • 2012-02-24
    • 2011-06-10
    相关资源
    最近更新 更多