Python eXist(XMLDB)のデータのバックアップを行う



eXistに登録しているデータをファイルに退避するソースです。
オフィシャルのマニュアルには見当たりませんが、


getDocumentListing(String collection)


このメソッドで該当のコレクションに登録されている
ドキュメントの一覧が取得できます。

ドキュメントの一覧を取得後、個別にデータを取得し、
ファイルに出力することで、バックアップ機能を
実現しています。


import xmlrpclib

#バックアップを行うコレクション
base_uri = '/db/sample/'
#バックアップファイルの保存先
backup_dir = 'data/'
#eXistサーバ
xmlrpc_url = 'http://www.example.com:8080/exist/xmlrpc'

def save_file(srv, doc_name):
  """
  ドキュメントの取得とファイル出力
  """
  result = srv.getDocumentAsString(base_uri + doc_name, {})
  f = open(backup_dir + doc_name, 'w')
  f.write(result)
  f.close()

if __name__ == '__main__':
  
  srv = xmlrpclib.ServerProxy(xmlrpc_url)
  
  #バックアップ対象のコレクションに登録されている
  #ドキュメントの一覧を取得する
  doc_list = srv.getDocumentListing(base_uri)
  
  for doc_name in doc_list:
    save_file(srv, doc_name)



もどる