Какова лучшая утилита / библиотека / стратегия с Python для копирования файлов на несколько компьютеров? - PullRequest
0 голосов
/ 08 марта 2012

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

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

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 09 марта 2012

Если целью является более плавная интеграция с python,

Duplicity

pyrsync

1 голос
/ 08 марта 2012

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

0 голосов
/ 08 марта 2012

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

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

...