Упаковка и копирование Data.fs с рабочего сервера на свой компьютер для дальнейшей разработки локально

В статье "Packing and copying Data.fs from production server for local development" автор приводит инструкции для копирования и передачи баз данных ZODB (Data.fs) с рабочего сервера на локальный компьютер для дальнейшей разработки. Автор Mikko Ohtamaa

Эти инструкции помогут Вам скопировать и передать базу данных ZODB (Data.fs) на ваш компьютер для дальнейшей разработки и тестирования. Это позволяет Вам тестировать копии реальных данных и настройки копии рабочего сервера Plone.

См. оригинал от cguardia.

Data.fs является хранилищем файлов ZODB для транзактных баз данных. Журнал истории занимает довольно большое дисковое пространство. Упаковка, т. е. очистка журнала истории, обычно значительно уменьшает размер файла, делая его легче для передачи. В зависимости от срока давности баз данных, упакованная копия составляет меньше чем 10 % от размера оригинала.

Эти инструкции подходят для всех Linux-систем, построенных на Debian.

Чтобы работать с базой данных нам понадобится пакет ZODB Python. Чтобы использовать его, мы создадим установку virtualenv Python в /tmp. При установке virtualenv установленные пакеты Python не загрязняют всю систему. Обратите внимание, что Вы можете использовать easy-install-2.4 в зависимости от Операционной Системы. Последний устойчивый ZODB можно выбрать из списка PyPi. По умолчанию в 3-иx версиях Plone стоит ZODB 3.7.x, который не доступен в виде пакета (egg), но Вы можете использовать ZODB 3.8.x.

sudo easy-install virtualenv

cd /tmp
virtualenv packer
/tmp/packer/bin/easy_install ZODB=3.8.3

Оригинал Data.fs нельзя изменять. Чтобы с ним работать, надо создать его копию. Копию Data.fs можно создать из работающей системы не опасаясь нарушить базы данных, так как ZODB добавляет только базу данных.

cp /yoursite/var/filestorage/Data.fs /tmp/Data.fs.copy

Затем создайте следующий фрагмент сценария /tmp/pack.py,  используя ваш любимый редактор.

import time
import ZODB.FileStorage
import ZODB.serialize

storage=ZODB.FileStorage.FileStorage('/tmp/Data.fs.copy')
storage.pack(time.time(),ZODB.serialize.referencesf)

И запустите его, используя  virtualenv Python setup с установленным ZODB:

/tmp/packer/bin/python /tmp/pack.py

Теперь терпение … упаковка может занять некоторое время, но это все же определенно быстрее, чем скорость передачи Вашего Интернет-соединения.

Проверьте успешно ли упакован файл:

ls -lh Data.fs.copy
-rw-r--r-- 1 user user 30M 2009-09-01 13:24 Data.fs.copy

Ух ты! 1 GB был сокращен до 30 MB. Затем скопируйте файл на свой компьютер, используя scp и поместите его в buildout.

scp user@server:/tmp/Data.fs.copy ~/mybuildout/var/filestorage/Data.fs

Вы только что сэкономили приблизительно 30-90 минут ожиданий передачи файла.

 

Оригинал статьи на blog.twinapex.fi

Перевод КОМТЕТ komtet.ru

 

Вам также может помочь