{ "info": { "author": "Praekelt Foundation", "author_email": "dev@praekelt.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Buildout", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "praekelt.recipe.backup\n======================\n**Filesystem and database backup Buildout recipe.**\n\nCreates a ``bin/`` script with which you can easily create backups of any path and/or database. Uses rsync to create incrementally complete backups, see: `Do-It-Yourself Backup System Using Rsync `_. \n\n**NOTE: This recipe is under active development and has not been fully tested in a production environment. Use at your own risk.**\n\nUsage\n-----\n\nAdd a part in ``buildout.cfg`` like so::\n\n [buildout]\n parts = backup\n \n [backup]\n recipe = praekelt.recipe.backup\n prefix = foobar\n local_storage_path = /var/backups\n\nRunning the buildout will add a backup script with the same name as your backup part in the ``bin/`` directory. In this case ``bin/backup``. The resulting script will create timestamped backups of the buildout path prefixed with the string ``foobar`` locally in ``/var/backups``.\n\nOptions\n-------\n**prefix**\n String prefixed to backup directory names. **Required.**\n**source_path**\n Path to recursively backup. **Defaults to the buildout directory.**\n**database_engine**\n Type of database to backup. **Supported options: mysql or postgres.**\n**database_name**\n Name of the database to backup.\n**database_username**\n Username of the database to backup.\n**database_password**\n Password of the database to backup.\n**local_count**\n Number of backups to keep locally. As new backups are created older backups are deleted. **Defaults to 3.**\n**local_storage_path**\n Local path in which to store backups. Make sure the user running the backup script has appropriate rights to this path. **Required.**\n**remote_host**\n Hostname of remote host on which to mirror local backups.\n**remote_storage_path**\n Remote path in which to store backups. Make sure the user running the backup script has appropriate rights to this path (via rsync).\n\n**Note: rsync functionality is limited to key based authentication. Make sure to setup your keys appropriately for passwordless remote authentication.**\n\nFull Example\n------------\n\nThe following example illustrates all available options::\n\n [buildout]\n parts = backup\n\n [backup]\n recipe = praekelt.recipe.backup\n prefix = foobar\n local_count = 2\n local_storage_path = /var/backups\n source_path = /var/foobar\n\n remote_host = www.my-backup-server.com\n remote_storage_path = /var/backups/foobar\n\n database_engine = postgres\n database_name = foobar_db\n database_username = db_username\n database_password = db_password\n \nThe resulting script will create timestamped backup folders prefixed with the string ``foobar`` locally in ``/var/backups``. The backup will contain all the files found in ``/var/foobar`` as well as a database dump of the postgres database named ``foobar_db``. A copy of each created backup will be sent to ``www.my-backup-server.com`` via rsync and stored in the ``/var/backups/foobar`` path. Only the latest 2 backups will be retained locally. Older backups will be deleted automatically.\n\nChangelog\n=========\n\n0.0.3\n-----\n#. Complete refactor to use rsync.\n\n0.0.2\n-----\n\n#. Dereference symbolic links.\n\n0.0.1\n-----\n#. Initial Release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/praekelt/praekelt.recipe.backup", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "praekelt.recipe.backup", "package_url": "https://pypi.org/project/praekelt.recipe.backup/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/praekelt.recipe.backup/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/praekelt/praekelt.recipe.backup" }, "release_url": "https://pypi.org/project/praekelt.recipe.backup/0.0.3/", "requires_dist": null, "requires_python": null, "summary": "Filesystem and database backup Buildout recipe.", "version": "0.0.3" }, "last_serial": 796644, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "f68c0155abbcb9a783ef3aef8af9e88f", "sha256": "f5c09412141cd46a42a6c9e368920b133c142cf8f7b8f040cb1d0edcb8bf4f70" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.1-py2.5.egg", "has_sig": false, "md5_digest": "f68c0155abbcb9a783ef3aef8af9e88f", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 8891, "upload_time": "2010-11-10T10:31:26", "url": "https://files.pythonhosted.org/packages/c9/15/c2c9148c8be2d051b6a237edbdd51bdd31b0ca6953c8802ffb4ef37e39fd/praekelt.recipe.backup-0.0.1-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "7f997a827d21a1cc064982886f6b0595", "sha256": "09f3710c956d12ab832f19be88669d5433aa71b752eda1357aae478bd2621f76" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.1-py2.6.egg", "has_sig": false, "md5_digest": "7f997a827d21a1cc064982886f6b0595", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 8888, "upload_time": "2010-11-10T10:27:50", "url": "https://files.pythonhosted.org/packages/5b/30/4fd58700b321e333ba0cee2ec3f89480538b870ce7f82517664cb4b7d17b/praekelt.recipe.backup-0.0.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "99dbcf227f0b249e73dd10bc8cf87572", "sha256": "e9bab77e41b4e24f1c968486a2f5d55579b5be802e972defbec3554eae62a491" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.1.tar.gz", "has_sig": false, "md5_digest": "99dbcf227f0b249e73dd10bc8cf87572", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4612, "upload_time": "2010-11-10T10:27:56", "url": "https://files.pythonhosted.org/packages/3a/e3/d68bf2f7d16d573cc385532743559f782a28f09e8d83ecedf089148be845/praekelt.recipe.backup-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "234619ad790e8545af478497cb2548c2", "sha256": "0ed89255532af637e9cda38a00d5e2be7441d7d9c740302fb4068614065854fd" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.2-py2.5.egg", "has_sig": false, "md5_digest": "234619ad790e8545af478497cb2548c2", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 9003, "upload_time": "2010-11-17T08:58:09", "url": "https://files.pythonhosted.org/packages/ca/0f/f7237032c729b737eb89799732a1962683d123f541eecba6daccef5ca1c0/praekelt.recipe.backup-0.0.2-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "3886d83d42bfa68af0e333b5379a85d8", "sha256": "8d23d6a1696ab92c04966b3d778c883d999f984582c71e19d61c61d129372606" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.2-py2.6.egg", "has_sig": false, "md5_digest": "3886d83d42bfa68af0e333b5379a85d8", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 9002, "upload_time": "2010-11-17T08:57:47", "url": "https://files.pythonhosted.org/packages/0e/63/e007b7dca556b667e7501398afc7be5f173676e6260d3fd5d66a7ece19c5/praekelt.recipe.backup-0.0.2-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "9f4c959dd7bcdd8a266dd0d6669f9539", "sha256": "55c2e155e9b090b44237df9f0d7231548c66fc265f197811fb38abdd224c66f3" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.2.tar.gz", "has_sig": false, "md5_digest": "9f4c959dd7bcdd8a266dd0d6669f9539", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5554, "upload_time": "2010-11-17T08:57:49", "url": "https://files.pythonhosted.org/packages/87/88/8ba6d19b7a8d42669a9b28f3933eebcb2024da36bdca5819c4b5497886d4/praekelt.recipe.backup-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "bb0c6070446cac0508f9c4724d78cc69", "sha256": "e83f7c2636cce63bcd5d1100c17a32f9318570eb6cff133b078c33dcc48737a0" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.3-py2.5.egg", "has_sig": false, "md5_digest": "bb0c6070446cac0508f9c4724d78cc69", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 7518, "upload_time": "2010-11-26T13:33:05", "url": "https://files.pythonhosted.org/packages/e6/6e/9c342ac3a119b7c6077e791b09c1105468dd21cc3577ca4b387fffe1a0db/praekelt.recipe.backup-0.0.3-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "fdb42097867fae879494407728e1e432", "sha256": "5566eaed0924ca193e7f07e01a038012b56107202c38914fc5b12375f815f2f9" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.3-py2.6.egg", "has_sig": false, "md5_digest": "fdb42097867fae879494407728e1e432", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 9661, "upload_time": "2010-11-26T13:32:51", "url": "https://files.pythonhosted.org/packages/07/c4/7537d7cba077164b545a095c8ff383140206078c094a9afff5fff42510f9/praekelt.recipe.backup-0.0.3-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "c9c49e9ed9c3ccacfa9d220fcd19e1e7", "sha256": "9113f7003c892a78f6da183636026c0d1d2d7c0e959bedd222a633ef1216c1f8" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.3.tar.gz", "has_sig": false, "md5_digest": "c9c49e9ed9c3ccacfa9d220fcd19e1e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5770, "upload_time": "2010-11-26T13:32:54", "url": "https://files.pythonhosted.org/packages/32/26/500a7bde3fe0ad0d53fc4d4d4340aa4b445f555cc54ae5c08680d79eef84/praekelt.recipe.backup-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bb0c6070446cac0508f9c4724d78cc69", "sha256": "e83f7c2636cce63bcd5d1100c17a32f9318570eb6cff133b078c33dcc48737a0" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.3-py2.5.egg", "has_sig": false, "md5_digest": "bb0c6070446cac0508f9c4724d78cc69", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 7518, "upload_time": "2010-11-26T13:33:05", "url": "https://files.pythonhosted.org/packages/e6/6e/9c342ac3a119b7c6077e791b09c1105468dd21cc3577ca4b387fffe1a0db/praekelt.recipe.backup-0.0.3-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "fdb42097867fae879494407728e1e432", "sha256": "5566eaed0924ca193e7f07e01a038012b56107202c38914fc5b12375f815f2f9" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.3-py2.6.egg", "has_sig": false, "md5_digest": "fdb42097867fae879494407728e1e432", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 9661, "upload_time": "2010-11-26T13:32:51", "url": "https://files.pythonhosted.org/packages/07/c4/7537d7cba077164b545a095c8ff383140206078c094a9afff5fff42510f9/praekelt.recipe.backup-0.0.3-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "c9c49e9ed9c3ccacfa9d220fcd19e1e7", "sha256": "9113f7003c892a78f6da183636026c0d1d2d7c0e959bedd222a633ef1216c1f8" }, "downloads": -1, "filename": "praekelt.recipe.backup-0.0.3.tar.gz", "has_sig": false, "md5_digest": "c9c49e9ed9c3ccacfa9d220fcd19e1e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5770, "upload_time": "2010-11-26T13:32:54", "url": "https://files.pythonhosted.org/packages/32/26/500a7bde3fe0ad0d53fc4d4d4340aa4b445f555cc54ae5c08680d79eef84/praekelt.recipe.backup-0.0.3.tar.gz" } ] }