Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 如果目录不具有相同的结构,我如何比较两个目录来比较丢失的文件?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我已经从我们正在使用的组织发送了一个包含新文件和更新文件的硬盘,但我们已经将大部分文件放在我们的服务器上,并希望更新我们的本地版本以匹配他们的文件. 通常情况下,这可能是像rsync这样的工作,但我们的问题是它们提供的目录结构非常糟糕,我们不得不重新安排他们的文件,以便最好地与我们的系统配合使用. 所以,我的问题是: How can I find out which files in the se
我已经从我们正在使用的组织发送了@L_944_0@包含新文件和更新文件的硬盘,但我们已经将大部分文件放在我们的服务器上,并希望更新我们的本地版本以匹配他们的文件.

通常情况下,这可能是像rsync这样的工作,但我们的问题是它们提供的目录结构非常糟糕,我们不得不重新安排他们的文件,以便最好地与我们的系统配合使用.

所以,我的问题是:

一旦回答了这个问题,我们就可以更新已更改的文件,并找出将新文件放在我们系统上的位置,可能需要手动操作.

解决方法

好的,这是我第一次尝试某事.它看起来适合我所需要的,但我愿意接受更好的建议:

首先,获取我们的文件系统和新数据中所有文件的md5sums:

find /LOCATIOn/of/data -type f -exec md5sum {} ';' > our.md5sums
find /media/newdisk -type f -exec md5sum {} ';' > their.md5sums

我写了@L_944_0@名为md5diff.py的简短python脚本:

#!/usr/bin/env python
import sys
print "Comparing",sys.argv[1],"to",sys.argv[2]

# Create a Dictionary based upon the hashes in source B
Dict = {}
for line in open(sys.argv[2]):
    p = line.partition(' ')
    Dict[p[0]] = p[2].Strip()


# Now go through source A and report where the file is in source B
for line in open(sys.argv[1]):
    p = line.partition(' ')
    if p[0] in Dict:
        print line.Strip(),"(",sys.argv[2],":",Dict[p[0]],")"
    else:
        print line.Strip(),"NOT IN",sys.argv[2]

所以现在我可以使用了

./md5diff.py their.md5sums our.md5sums

如果我加入| grep“NOT IN”它只会列出我们尚未拥有的媒体上的文件(或者与我们的文件不同).从他们我可以开始手动攻击已知的差异.

大佬总结

以上是大佬教程为你收集整理的linux – 如果目录不具有相同的结构,我如何比较两个目录来比较丢失的文件?全部内容,希望文章能够帮你解决linux – 如果目录不具有相同的结构,我如何比较两个目录来比较丢失的文件?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。