加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 16:52:20 所属栏目:Linux 来源:网络整理
导读:我有一个拥有150台 Linux服务器的客户端,涉及各种云服务和物理数据中心.这些基础设施大部分是获得的项目/团队和预先存在的服务器/安装. 客户端主要是图像处理,许多服务器都有大型SAN或本地磁盘阵列,其中包含数百万个jpeg / png文件. 每个盒子上都有一个配置
我有一个拥有150台 Linux服务器的客户端,涉及各种云服务和物理数据中心.这些基础设施大部分是获得的项目/团队和预先存在的服务器/安装.

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

每个盒子上都有一个配置管理代理,我可以看到很多磁盘都是100%,有些是非常空的,并且有很多重复的数据.

客户现在可以访问CDN.但目前只列举可能是一项艰巨的任务.

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

我看到像GlusterFS这样的工具来管理这些分布式文件系统,以及Hadoop HDFS

我想知道是否可以使用这些系统的索引工具而无需实际实现底层卷管理工具.

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

解决方法

我发现在一堆系统中找到重复文件的最简单方法是创建一个文件列表,其中包含每个系统的MD5总和,将它们合并为一个文件,然后使用排序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%sn",old_inline)
        }
        printf("%sn",$0)
        dup_count++
    }
    else {
        dup_count = 0
    }
    old_md5 = $2
    old_inline = $0
}'

这应该产生一个输出文件,该文件在块文件中分组,这些文件的内容在同一主机内或主机上是重复的.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读