2012-03-08 5 views
0

У меня есть данные на нескольких компьютерах, хранящихся в папках. Многие из папок содержат 40-100 G файлов размером от 500 К до 125 МБ. Есть около 4 ТБ файлов, которые мне нужно архивировать, и создать незакрепленную систему метаданных в зависимости от метаданных, хранящихся на каждом компьютере.Что такое лучшая утилита/библиотека/стратегия с Python для копирования файлов на нескольких компьютерах?

Все системы работают под управлением Linux, и мы хотим использовать Python. Каков наилучший способ скопировать файлы и архивировать их.

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

Мы рассмотрели использование подпроцесса rsync и unison. POPEn для их запуска, но они по сути являются утилитами синхронизации. Они по сути копируются один раз, но копируются правильно. После копирования файлов пользователи перейдут на новую систему хранения.

Мои заботы: 1) Когда файлы копируются, не должно быть никакого искажения. 2) копирование файлов должно быть эффективным, хотя ожиданий скорости нет. ЛВС - 10/100, а гигабит - порты.

Есть ли какие-либо скрипты, которые могут быть включены, или любые предложения. На всех компьютерах будет включен ssh-keygen, поэтому мы можем сделать соединение без пароля.

Структуры каталогов будут поддерживаться на новом сервере, который очень похож на структуру старых компьютеров.

+1

Есть ли проблема с использованием синхронизацией утилиты для копирования? – zmccord

+0

Нет. Не совсем, но использует rsync или унисон внутри Python наилучшим образом рекомендованным способом. Нам нужно запустить весь процесс с помощью Python, так как есть программа egenrating met-data, которая обновляет несколько таблиц в базе данных – ramdaz

ответ

1

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

0

Я думаю, что решение rsync - это решение. Если вас беспокоит целостность данных, посмотрите на объяснение параметра «--checkum» на странице руководства.

Другие аргументы, которые могут пригодиться, это «--delete» и «--archive». Убедитесь, что код выхода команды правильно проверен.

1

Если более бесшовная интеграция питона является целью, которую вы можете посмотреть,

Duplicity

pyrsync