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
    • 最新
    • 标签
主页 / server / 问题 / 486785
Accepted
davidgo
davidgo
Asked: 2013-03-05 20:47:43 +0800 CST2013-03-05 20:47:43 +0800 CST 2013-03-05 20:47:43 +0800 CST

如何根据哈希比较远程文件,并仅传输不同的块

  • 772

我想比较两个存储在不同 Linux 机器上的大型二进制文件,它们之间的带宽有限,然后只备份不同的块——在命令行上。为了简化任务,我们可以假设文件在比较过程中不会更改,并且文件大小相同。

这几乎就像我相信rsync的那样,只是我不想修改目标文件——我想保留我可以应用到基本图像的差异,这样我就可以在不同的点重新创建一个副本(即当差异被拍摄时).

我也知道xdelta,但这似乎只比较同一台机器上的文件。

我粗略设想的“过程”(希望全部由脚本/程序完成)可能是 -

  1. (在每台机器上)为每个块生成一个哈希列表。
  2. 比较 2 组哈希值。
  3. 生成一个文件,该文件仅以可以将它们“合并”回目标文件的方式拉取源中已更改的块。

有没有人知道无需我削减代码即可执行此操作的程序、脚本或优雅方法?

linux
  • 2 2 个回答
  • 274 Views

2 个回答

  • Voted
  1. Best Answer
    Mark Wagner
    2013-03-12T13:30:17+08:002013-03-12T13:30:17+08:00

    我建议检查 rsync 的批处理模式。特别是该--only-write-batch选项似乎可以实现您的目标。

    • 1
  2. Jeff Ferland
    2013-03-12T13:27:12+08:002013-03-12T13:27:12+08:00

    高效的比较通常需要在同一台机器上比较文件,因为如果你想考虑偏移量,你需要在这个过程中进行大量的范围检查。例如,如果我在文本文件中添加了一个字符,则该字符之后的所有内容可能需要在简单检查中作为“新”传输。

    Bit Torrent 实现了一个非常简单的检查方法示例。每个块都有一个校验和,每个文件都是由一系列块组成的。块可能跨越两个或多个文件的结尾/开头,但块验证也会检查这些跨度。只有与文件描述不匹配的块才会被更改。因此,如果您启动了一个客户端,其中一些文件是准确编写的,一些文件是不同的(通过损坏或更改),那么只会传输修复差异所必需的块。每个 torrent 描述文件的块大小可以按 2 的幂进行配置,并且有大量的开源客户端可以从中获取此代码。

    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve