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 / 问题 / 390794
Accepted
Tom
Tom
Asked: 2012-05-21 03:48:23 +0800 CST2012-05-21 03:48:23 +0800 CST 2012-05-21 03:48:23 +0800 CST

在 150 台 Linux 机器上对图像目录进行重复数据删除和索引

  • 772

我的客户有 150 台 Linux 服务器,分布在各种云服务和物理数据中心。这种基础设施的大部分是收购的项目/团队和预先存在的服务器/安装。

客户端主要用于图像处理,许多服务器都有大型 SAN 或本地磁盘阵列,其中包含数百万个 jpeg/png 文件。

每个盒子上都有一个配置管理代理,我看到很多磁盘都是100%,有的还挺空的,还有很多重复的数据。

客户端现在可以访问 CDN。但目前仅列举可能的情况是一项艰巨的任务。

是否有任何工具可以为所有这些数据创建有用的索引?

我看到了用于管理这些分布式文件系统的GlusterFS和Hadoop HDFS等工具

我想知道是否可以在不实际实现底层卷管理工具的情况下使用这些系统的索引工具。

生成潜在重复数据删除候选索引的起点应该是什么?

linux distributed-filesystems
  • 1 1 个回答
  • 157 Views

1 个回答

  • Voted
  1. Best Answer
    Derek Pressnall
    2012-05-21T04:30:29+08:002012-05-21T04:30:29+08:00

    我发现在一堆系统中查找重复文件的最简单方法是为每个系统创建一个文件列表及其 MD5 总和,将它们合并到一个文件中,然后使用 sort + 一个 AWK 脚本来查找重复文件,如下所示:

    首先,在每个系统上运行它,根据需要替换路径:

    #!/bin/sh
    find /path/to/files -type f -exec md5sum {} \; |\
    while read md5 filename
    do
        echo -e "${HOSTNAME}\t${md5}\t${filename}"
    done >/var/tmp/${HOSTNAME}.filelist
    

    这将在每台主机上生成一个文件 /var/tmp/HOSTNAME.filelist,您必须将其复制到一个中央位置。一旦收集了所有这些文件列表,就可以运行以下命令:

    #!/bin/sh
    export LANG=C
    cat *.filelist |sort -t$'\t' +1 -2 |\
    awk '
    BEGIN {
        FS = "\t"
        dup_count = 0
        old_md5 = ""
    }
    
    {
        if ($2 == old_md5) {
            if (dup_count == 0 ) {
                printf("\n%s\n", old_inline)
            }
            printf("%s\n", $0)
            dup_count++
        }
        else {
            dup_count = 0
        }
        old_md5 = $2
        old_inline = $0
    }'
    

    这应该产生一个输出文件,该文件将内容在同一主机内或跨主机重复的块文件分组。

    哦,作为第一个脚本(在每个主机上运行)的替代方案,请检查正在使用的备份系统,看看您是否可以从备份报告中获得类似的东西(至少包括 md5 和文件名)。

    • 2

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

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