{ "info": { "author": "Richard Terry", "author_email": "code@radiac.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Topic :: System :: Archiving :: Backup" ], "description": "=====\nSerac\n=====\n\n.. image:: https://travis-ci.org/radiac/serac.svg?branch=master\n :target: https://travis-ci.org/radiac/serac\n\n.. image:: https://coveralls.io/repos/radiac/serac/badge.svg?branch=master&service=github\n :target: https://coveralls.io/github/radiac/serac?branch=master\n\n\nIncremental permanent data archiver with encryption.\n\nDesigned for permanently backing up data which does not change frequently,\nsuitable for write-only storage such as Amazon Glacier.\n\n\nInstallation\n============\n\nThis requires Python 3.7.\n\nInstall serac with::\n\n pip install serac\n\nIf you don't have Python 3.7 installed, you can install it with\n`pyenv `_::\n\n curl https://pyenv.run | bash\n # restart your shell\n pyenv update\n pyenv install 3.7.3\n pip install virtualenv\n virtualenv python=python3.7 venv\n . venv/bin/activate\n pip install serac\n\n\nUsage\n=====\n\nSerac must always be run with the config file path as the first argument, then\nthe command to perform as the second argument.\n\nTo run serac::\n\n /path/to/venv/bin/serac CONFIG COMMAND [OPTIONS]\n\nIt is safe to run Serac from a cron job; it will not allow multiple processes to work\nwith the same config file at the same time.\n\n\nCommands\n--------\n\nAfter that it accepts one of the following commands:\n\n``test``\n Test the configuration file\n\n``init``\n Initialise an index for a new config by creating the database\n\n``archive``\n Archive any changes since the last archive was performed\n\n``ls [--at=DATE] [--pattern=PATTERN]``\n Show the state of the archive.\n\n This follows the roughly the same layout as ``ls -l``, with the following\n columns:\n\n * File permissions\n * Owner (as it will be restored to on this system)\n * Group (as it will be restored to on this system)\n * Size (in kibi/mebib/gibibytes, or in bytes if not specified)\n * Last modified date (this year if not specified)\n * Last modified timestamp (for ease of use in calls to ``ls`` and\n ``restore``)\n * Path (as it was on the originating system)\n\n``restore DESTINATION [--at=DATE] [--pattern=PATTERN]``\n Restore some or all of an archive\n\n If an archived object is in glacier it will be marked for retrieval.\n\n\nArguments\n~~~~~~~~~\n\n``DATE``\n This should be a date in one of the following formats:\n\n * epoch timestamp, eg ``1582165202``\n * ``YYYY-MM-DD``, eg ``2020-02-20``\n * ``YYYY-MM-DD HH:MM:SS``, eg ``2020-03-20 02:20:02``\n * ``YYYY-MM-DDTHH:MM:SS``, eg ``2020-03-20T02:20:02``\n\n``PATTERN``\n This can either be an exact path to a file, or a partial path to a\n directory.\n\n Globs are not yet supported.\n\n\nConfiguration\n=============\n\nConfigure serac using a config file::\n\n [source]\n # Define the source for the backups\n\n # List of paths to include and exclude (glob patterns)\n include =\n /path/to/source\n /path/somewhere/else\n exclude =\n /path/to/source/unprocessed\n /path/somewhere/else/*.jpg\n\n [archive]\n # Define where the backups are saved\n\n # Backup to a local path\n #storage = local\n #path = /path/to/backup\n\n # Backup to S3\n storage = s3\n key = 4p1_k3y\n secret = 53cr3t\n bucket = arn:aws:s3:::my_bucket_name\n path = path/within/bucket\n\n # Encrypt backups with this password\n password = l0ng_s3cr3t\n\n [index]\n # Define how indexed files are treated\n\n # Location for index database\n # This should then be backed up by another service, eg duplicity\n path = /path/to/index.sqlite\n\n\nContributing\n============\n\nTo work on serac, install it in a virtual environment::\n\n mkdir serac\n cd serac\n git clone repo\n virtualenv --python=python3.7 venv\n . venv/bin/activate\n pip install pip-tools\n cd repo\n pip-sync\n\nTo run during development::\n\n python -m serac CONFIG COMMAND [OPTIONS]\n\nTo run tests::\n\n cd serac/repo\n . ../venv/bin/activate\n pytest\n\n\nChangelog\n=========\n\n0.0.3, 2019-10-12\n-----------------\n\nBugfix:\n\n* Correct entrypoint\n\n\n0.0.2, 2019-09-25\n-----------------\n\nFeature:\n\n* Add process locking\n\n\n0.0.1, 2019-09-23\n-----------------\n\nFeature:\n\n* Initial release", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://radiac.net/projects/serac/", "keywords": "backup archive glacier", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "serac", "package_url": "https://pypi.org/project/serac/", "platform": "", "project_url": "https://pypi.org/project/serac/", "project_urls": { "Homepage": "http://radiac.net/projects/serac/" }, "release_url": "https://pypi.org/project/serac/0.0.3/", "requires_dist": null, "requires_python": "", "summary": "Incremental permanent data archiver with encryption", "version": "0.0.3" }, "last_serial": 5965678, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "384ac0365c4d6c773928fed12c373e09", "sha256": "808b3d9cec1bfea637a074dfd9d1c193c797e01641d55d0e5d9bb5600f7a6c44" }, "downloads": -1, "filename": "serac-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "384ac0365c4d6c773928fed12c373e09", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19735, "upload_time": "2019-09-23T01:35:53", "url": "https://files.pythonhosted.org/packages/f2/1c/33166f5a3dddb6df7882566b473e78dea404fbefbd113e8fcc8cf93c1aa2/serac-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f7aa9a529ac25a901b1a5997cc73d02", "sha256": "70ec988192d7e2f716c6bc61821c74500318a4bf86b22234e593a7ef3a50f510" }, "downloads": -1, "filename": "serac-0.0.1.tar.gz", "has_sig": false, "md5_digest": "3f7aa9a529ac25a901b1a5997cc73d02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30175, "upload_time": "2019-09-23T01:35:55", "url": "https://files.pythonhosted.org/packages/2d/51/30c7c85dbf5071272b85d2a4ef8220d67dda5cfa1fb0d4d43142b33a5894/serac-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "d2adb9c6552e4e2ae30a9af08922b95c", "sha256": "5ab1ab635dcda0e156b4b737e879dfec1c062d72f393a40c25b79f546384e2df" }, "downloads": -1, "filename": "serac-0.0.2.tar.gz", "has_sig": false, "md5_digest": "d2adb9c6552e4e2ae30a9af08922b95c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30647, "upload_time": "2019-09-25T01:22:18", "url": "https://files.pythonhosted.org/packages/56/5a/4213f7ba2edd2afb300c5559d95a34101d96782438a25d1544da8d855055/serac-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "accd5134af9c239a2c87ece280d5986a", "sha256": "e2a34662c29f342565b4757ad630ecbc1bc39dcb212154f72c8073ae6be223dd" }, "downloads": -1, "filename": "serac-0.0.3.tar.gz", "has_sig": false, "md5_digest": "accd5134af9c239a2c87ece280d5986a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30738, "upload_time": "2019-10-12T22:58:17", "url": "https://files.pythonhosted.org/packages/22/36/99a6599e7e95101f9c28bf67d162ab7fd3694eebad381387c5ba5678117c/serac-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "accd5134af9c239a2c87ece280d5986a", "sha256": "e2a34662c29f342565b4757ad630ecbc1bc39dcb212154f72c8073ae6be223dd" }, "downloads": -1, "filename": "serac-0.0.3.tar.gz", "has_sig": false, "md5_digest": "accd5134af9c239a2c87ece280d5986a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30738, "upload_time": "2019-10-12T22:58:17", "url": "https://files.pythonhosted.org/packages/22/36/99a6599e7e95101f9c28bf67d162ab7fd3694eebad381387c5ba5678117c/serac-0.0.3.tar.gz" } ] }