{ "info": { "author": "Arnaud Levaufre", "author_email": "arnaud@levaufre.name", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: End Users/Desktop", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.7", "Topic :: System :: Archiving :: Backup", "Topic :: System :: Filesystems" ], "description": "Btrfs simple snapshots\n======================\n\nTake snapshots of your btrfs subvolumes and apply a retention policy in order\nto keep your snapshot directory somewhat clean and small.\n\nThe retention policy, defined bellow, is hardcoded for now but it should be enought for the\naverage use case. I may adjust it, or provide a way to change it at runtime if needed.\n\n* Hourly snapshots are kept for 24 hours\n* Daily snapshots are kept for 4 weeks\n* Weekly snapshots are kept for 12 weeks\n* Monthly snapshots are kept for a year\n* yearly snapshots are kept for 10 years\n\nEvery subvolume that should be snapshoted must be given as argument to the\nscript. For example if you want to snapshot every home directory created as\nsubvolumes and your `/etc` and `/srv` directory you would do\n\n.. code-block::\n\n btrfs-simple-snapshots /home/* /etc /srv\n\n\nOnce done, you will find a new subvolume named `.snapshots` inside the\nsnapshoted subvolume with a name formated as `%Y-%m-%d-%H%M%S`\n\nInstallation\n------------\n\nInstall from pip using `pip install btrfs-simple-snapshots`. Then you can run\nit as root or with a user able to manage btrfs subvolumes. It is probably a\ngood thing to run it automatically with a cron job. Depending on you need you\nmay run it once per day (at 2 a.m.) to snapshot every home folder (created as\nsubvolumes) with this kind of job definition.\n\n.. code-block::\n\n 0 2 * * * python -m btrfs_simple_snapshots /home/*\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ArnaudLevaufre/btrfs-simple-snapshots", "keywords": "btrfs snapshot subvolume backup", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "btrfs-simple-snapshots", "package_url": "https://pypi.org/project/btrfs-simple-snapshots/", "platform": "", "project_url": "https://pypi.org/project/btrfs-simple-snapshots/", "project_urls": { "Homepage": "https://github.com/ArnaudLevaufre/btrfs-simple-snapshots" }, "release_url": "https://pypi.org/project/btrfs-simple-snapshots/0.1.4/", "requires_dist": null, "requires_python": "", "summary": "Snapshot you btrfs subvolumes and apply a retention policy", "version": "0.1.4" }, "last_serial": 3933581, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "9ea52b1d6f7e7e1a9498a040caf1e888", "sha256": "b7b8d60434185a92251cc9c75b69cf6bc01a53a130a1f7fe3e041817358ac9ba" }, "downloads": -1, "filename": "btrfs_simple_snapshots-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9ea52b1d6f7e7e1a9498a040caf1e888", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3973, "upload_time": "2018-06-02T17:32:22", "url": "https://files.pythonhosted.org/packages/2b/f4/c2ec4a4a9dfa809e9c1c5935b6f984a390247410adf88d8360eece612025/btrfs_simple_snapshots-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a44b1275438cbc4aa353d189754e8c87", "sha256": "299133c93ae8a2b4bd581d2241140fb8fe5f65d7fea80ea5d1f030f588360716" }, "downloads": -1, "filename": "btrfs-simple-snapshots-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a44b1275438cbc4aa353d189754e8c87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2041, "upload_time": "2018-06-02T17:32:23", "url": "https://files.pythonhosted.org/packages/15/40/83368c4b9e142b0ec1d16ff1a211e275fb41c7742e132642ac105993a31f/btrfs-simple-snapshots-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5c3794a1722143f1e752c55280f908e3", "sha256": "68b8243b14e231ae0561c0b04904745e4aa44e3a75cc185365655cba3c720c41" }, "downloads": -1, "filename": "btrfs_simple_snapshots-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5c3794a1722143f1e752c55280f908e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5993, "upload_time": "2018-06-02T17:51:29", "url": "https://files.pythonhosted.org/packages/31/29/0f0d5fb9b07e5c2930b150babe25b0567f6972b7a1c5210ef77fb046ea4b/btrfs_simple_snapshots-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59a57ba1b943faf79ad2ac58c8dbf960", "sha256": "b6c5ce9f80ec6f892aedd0a21b696eea714c4ff1c3b820a88271d7b42e35ec19" }, "downloads": -1, "filename": "btrfs-simple-snapshots-0.1.1.tar.gz", "has_sig": false, "md5_digest": "59a57ba1b943faf79ad2ac58c8dbf960", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3825, "upload_time": "2018-06-02T17:51:30", "url": "https://files.pythonhosted.org/packages/69/e6/0ab670c628adcf571f47702ac887ed965bf78ed71dcf76e34f747716647c/btrfs-simple-snapshots-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "b72e110bcc1d823523e554b2db648c84", "sha256": "596dbb2cd766015e29489fd52b0da7a715e32fa39fcd24334af9e52401c1d49a" }, "downloads": -1, "filename": "btrfs_simple_snapshots-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b72e110bcc1d823523e554b2db648c84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5984, "upload_time": "2018-06-05T18:30:14", "url": "https://files.pythonhosted.org/packages/49/e9/d3ef6219487251fe8c17670d2936acee9d350b6cf37cf8192b6741aa7561/btrfs_simple_snapshots-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b191f3dfc306c22358adfe39763fb69", "sha256": "bfa2a834f0a03ff98865029d2f0b0ed4ec2f9afb2c2dcd4019fdb8378a6f77c9" }, "downloads": -1, "filename": "btrfs-simple-snapshots-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8b191f3dfc306c22358adfe39763fb69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3824, "upload_time": "2018-06-05T18:30:16", "url": "https://files.pythonhosted.org/packages/f9/d1/792a370d85f3e9f38a0f140ce4a05bcf432547e3570c8205d8cda529204c/btrfs-simple-snapshots-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "8049d5b38ec6a5f4ba1f0b64b27dda80", "sha256": "9905f6669ef04ccdc72288759b3e3efbdd212bbfc468cd09459ef76f3274e3eb" }, "downloads": -1, "filename": "btrfs_simple_snapshots-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8049d5b38ec6a5f4ba1f0b64b27dda80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5989, "upload_time": "2018-06-05T19:00:09", "url": "https://files.pythonhosted.org/packages/43/8e/9af2f9650eee44d97f3fd4cb747687f69af9934f92c51fe3e081b5feaba0/btrfs_simple_snapshots-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f77cb3b60d27a55fe8dbc2003644859", "sha256": "b329960f5b2e8893da8724a9fc36c6ae5980fe602568caac990e52e30942933e" }, "downloads": -1, "filename": "btrfs-simple-snapshots-0.1.3.tar.gz", "has_sig": false, "md5_digest": "2f77cb3b60d27a55fe8dbc2003644859", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3829, "upload_time": "2018-06-05T19:00:10", "url": "https://files.pythonhosted.org/packages/76/b5/c5e2808502a9e8912a1b13cdd02f5cd34aeed65e29d5cee0171ebc7d0ec4/btrfs-simple-snapshots-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "e90fb752fc8e3295a4c7728bd29411a7", "sha256": "3f4bf31934ea71c07d5c1ae83f6c4cb21df103584d6689c5cd1de443966e19b0" }, "downloads": -1, "filename": "btrfs_simple_snapshots-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "e90fb752fc8e3295a4c7728bd29411a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6056, "upload_time": "2018-06-05T19:40:50", "url": "https://files.pythonhosted.org/packages/47/25/063b56136db1f7f7f557e00846e307110b6355ef5d8c83000349b085d62a/btrfs_simple_snapshots-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4841c768ce26ebb12545baf36d00fdca", "sha256": "bde6d1d6cbf4105572c09e53f271a7166f1d695e212345f60efc234a7463ad8c" }, "downloads": -1, "filename": "btrfs-simple-snapshots-0.1.4.tar.gz", "has_sig": false, "md5_digest": "4841c768ce26ebb12545baf36d00fdca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3894, "upload_time": "2018-06-05T19:40:51", "url": "https://files.pythonhosted.org/packages/0e/e1/7382df14c15af6af35674b359032be5d281f42d9598337fe626c6f765452/btrfs-simple-snapshots-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e90fb752fc8e3295a4c7728bd29411a7", "sha256": "3f4bf31934ea71c07d5c1ae83f6c4cb21df103584d6689c5cd1de443966e19b0" }, "downloads": -1, "filename": "btrfs_simple_snapshots-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "e90fb752fc8e3295a4c7728bd29411a7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6056, "upload_time": "2018-06-05T19:40:50", "url": "https://files.pythonhosted.org/packages/47/25/063b56136db1f7f7f557e00846e307110b6355ef5d8c83000349b085d62a/btrfs_simple_snapshots-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4841c768ce26ebb12545baf36d00fdca", "sha256": "bde6d1d6cbf4105572c09e53f271a7166f1d695e212345f60efc234a7463ad8c" }, "downloads": -1, "filename": "btrfs-simple-snapshots-0.1.4.tar.gz", "has_sig": false, "md5_digest": "4841c768ce26ebb12545baf36d00fdca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3894, "upload_time": "2018-06-05T19:40:51", "url": "https://files.pythonhosted.org/packages/0e/e1/7382df14c15af6af35674b359032be5d281f42d9598337fe626c6f765452/btrfs-simple-snapshots-0.1.4.tar.gz" } ] }