Как я могу сравнить два каталога для сравнения недостающих файлов, когда каталоги не имеют той же структуры?

Исследуйте соглашение об уровне обслуживания от каждого поставщика ОЧЕНЬ ТЩАТЕЛЬНО.

Большинство кабельных соединений (даже "Бизнес-Кабель") не имеет гарантируемой пропускной способности, гарантируемой время работы или гарантируемые окна восстановления - Это означает, выходит ли Ваше соединение, и Вы снижаетесь, в то время как кабельная компания занимает неделю для фиксации его, Вам эффективно не повезло, и большинство, Вы выйдете из них, "Жаль..."

3
задан 10 September 2012 в 10:23
2 ответа

Хорошо, вот моя первая попытка кое-что сделать. Кажется, он неплохо работает для того, что мне нужно, но я открыт для лучших предложений:

Во-первых, получите md5-суммы всех файлов как в нашей файловой системе, так и новых данных:

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

И я написал короткий скрипт на Python под названием md5diff.py:

#!/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" он перечислит только те файлы на их носителе, которых у нас еще нет (или которые отличаются от того, что у нас есть). С их помощью я могу начать вручную исследовать известные различия.

2
ответ дан 3 December 2019 в 06:39

Вам не нужно использовать MD5 для сравнения изменений времени модификации. С учетом сказанного, вы, вероятно, могли бы (за исключением огромного набора данных) скопировать новые и обновленные файлы в локальное хранилище, использовать такой инструмент, как fslint , для выявления дубликатов, а затем использовать время модификации (а не только MD5-суммы) для согласования все остальное.

Один важный вопрос: как узнать, был ли файл обновлен, если путь в новом хранилище не тот? Если имена файлов не уникальны (например, «Отчет о продажах за август 2012.xls» может применяться ко многим отделам), то как узнать, что вы обновляете существующий файл, а не перезаписываете существующий файл несвязанным содержимым?

Я бы ошибся и оставил все, включая пути к файлам. Вы можете идентифицировать идентичные файлы и создавать символические ссылки на оригиналы для системы дедупликации бедняков, но на самом деле ваша система хранения должна справиться с этим за вас. В худшем случае пользовательские данные удаляются только для экономии места.

Вы можете идентифицировать идентичные файлы и создавать символические ссылки на оригиналы для системы дедупликации бедняков, но на самом деле ваша система хранения должна справиться с этим за вас. В худшем случае пользовательские данные удаляются только для экономии места.

Вы можете идентифицировать идентичные файлы и создавать символические ссылки на оригиналы для системы дедупликации бедняков, но на самом деле ваша система хранения должна справиться с этим за вас. В худшем случае пользовательские данные удаляются только для экономии места.

1
ответ дан 3 December 2019 в 06:39

Теги

Похожие вопросы