【问题标题】:Creating md5 checksum while copying file in Ruby在 Ruby 中复制文件时创建 md5 校验和
【发布时间】:2015-07-07 08:56:02
【问题描述】:

我想创建一个 Ruby 程序,以尽可能快地将文件从 SD 卡复制到硬盘,同时创建源文件和目标文件的 md5 校验和以确保数据完整性。

我相信分块读取文件并创建校验和会比

  • 创建源校验和
  • 复制文件
  • 创建目标校验和

    $md5 = 摘要::MD5.file('文件名').hexdigest 创建校验和,但我不知道如何使 md5 创建和文件复制同时发生?

【问题讨论】:

    标签: ruby performance file copy md5


    【解决方案1】:

    您可以在流式传输文件时计算摘要以避免重新读取文件。

    def copy_md5(source, target)
      chunk_size=1024
      md5 = Digest::MD5.new
      open(target,'w') do |t|
        open(source) do |s|
          while chunk=s.read(chunk_size)
            md5.update chunk
            t.write chunk
          end
        end
      end
      md5
    end
    

    【讨论】:

    • 您完全回答了我发布的原始问题。与此同时,我发现了一个不同的哈希函数,虽然 rubygems.org/gems/ruby-xxHash/versions/0.3.0 (ruby-xxHash) 对于我的(非加密)校验和需求来说似乎更快!
    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2014-06-21
    • 2012-05-18
    相关资源
    最近更新 更多