{ "info": { "author": "heiko huebscher", "author_email": "heiko.huebscher@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: System :: Archiving :: Backup" ], "description": "what\n==\n\nperforms incremental backups with `rsync` onto a `btrfs` filesystem.\nfinished backups are retained as read-only snapshots.\n\n\nusage\n==\n\ninstall\n--\n\n```commandline\npip install snapshotbackup\npip install snapshotbackup[ci] # install ci related dependencies\npip install snapshotbackup[dev] # install dev dependencies\npip install snapshotbackup[journald] # enable logging to journald with `--silent`\n```\n\n\nexample `config.ini`\n--\n\n```ini\n[DEFAULT]\n; retain_all = '1 day'\n; retain_daily = '1 month'\n; decay = '1 year'\n\n[data1]\nsource = /path/to/data1\nbackups = /backups/data1\n\n[data2]\nsource = /path/to/data2\nbackups = /backups/data2\nignore = /.cache\nretain_all = '1 week'\n; '1', 'true' or 'True' for `True`, everything else is `False`\nautodecay = 1\nautoprune = true\nnotify_remote = user@host\n```\n\n\nactions\n--\n\nthe setup-step can be skipped if configured backup directory already exists.\n\n```commandline\nsnapshotbackup setup data1\nsnapshotbackup backup data1\nsnapshotbackup list data1\nsnapshotbackup prune data1\nsnapshotbackup decay data1\n```\n\n\nretention policy\n--\n\n`prune` will preserve:\n- all backups not older than `retain_all`\n- daily backups not older than `retain_daily`\n- weekly backups forever (see `decay`)\n- the latest backup is always preserved\n\n`decay` removes all backups older than configured `decay`.\n\n\nnotification\n--\n\nwhen running via cron or using `notify_remote` you may need to add\n`DBUS_SESSION_BUS_ADDRESS` to execution environment, e.g.\n`DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus snapshotbackup backup data1`\n\n\nautomatization\n--\n\nwhen using advanced installation methods and `cron` make sure `PATH` is\nproperly setup, f.e.\n\n```\nPATH=/usr/local/bin:/bin:/usr/bin:/home/foo/.local/bin\n01 * * * * DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus snapshotbackup backup home -s\n```\n\nto allow non-interactive deletions configure `sudo` to allow your user \"foo\"\nto use some btrfs commands without password.\n\n```sudoers\nfoo ALL=(ALL) NOPASSWD: /usr/bin/btrfs subvolume list *\nfoo ALL=(ALL) NOPASSWD: /usr/bin/btrfs subvolume delete *\n```\n\n\ndev env\n==\n\n```commandline\nvirtualenv .env -p python3\n. .env/bin/activate\npip install -r requirements.txt\npip install -e . # or pip install -e .[journald]\n```\n\n\ndemo\n--\n\nif you don't have a `btrfs` filesystem at hand checkout the demo folder.\nit creates a `btrfs` image file and mounts it as loopback device.\n\n*DISCLAIMER*: i'm not sure if btrfs loopback files are safe in every environment. use at your own risk.\n\n```commandline\nmake -f makefile.demo setup\nmake -f makefile.demo backup\nmake -f makefile.demo list\nmake -f makefile.demo prune\nmake -f makefile.demo decay\nmake -f makefile.demo clean\n```\n\nplease read `makefile.demo` and `demo/config.ini` to understand what's happening.\n\n\nbuild\n--\n\n```commandline\n./setup.py bdist_wheel\n```\n\n\nthat's all\n==\n\nnot enough documentation? well, erm.., intended audience are developers.\nthat's what you get for hobby projects ;-)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hbschr/snapshotbackup", "keywords": "backup cli commandline", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "snapshotbackup", "package_url": "https://pypi.org/project/snapshotbackup/", "platform": "", "project_url": "https://pypi.org/project/snapshotbackup/", "project_urls": { "Homepage": "https://github.com/hbschr/snapshotbackup" }, "release_url": "https://pypi.org/project/snapshotbackup/0.0.16/", "requires_dist": null, "requires_python": "", "summary": "backups with `rsync` and `btrfs` snapshots", "version": "0.0.16" }, "last_serial": 6000943, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "666128b69df7b0db8ea5f960864ea753", "sha256": "413d17ba5ed40f1f89d6ffc00bc10ff627d64fca520df671ac72b50cfc003640" }, "downloads": -1, "filename": "snapshotbackup-0.0.10.tar.gz", "has_sig": false, "md5_digest": "666128b69df7b0db8ea5f960864ea753", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18840, "upload_time": "2018-06-23T21:26:24", "url": "https://files.pythonhosted.org/packages/05/b8/4fa4699bc3850ec2f8ab71483ae08ba2b65d5674f2608f30813147f75431/snapshotbackup-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "d8f577103ab493401a0e443cbe0e68fe", "sha256": "67fff3602456d358e928a036c1af9832d75707c34518beabd9c0649ced8e4935" }, "downloads": -1, "filename": "snapshotbackup-0.0.11.tar.gz", "has_sig": false, "md5_digest": "d8f577103ab493401a0e443cbe0e68fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19062, "upload_time": "2018-07-04T00:15:39", "url": "https://files.pythonhosted.org/packages/af/66/80394ad19da5b0dd222e54a4060f291912489200913862943c17de807fcc/snapshotbackup-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "a72b74386174249356b080dc2f10012f", "sha256": "4d4a5d044f555af8e2891a433532ea69e55da0e86dd88850680a008ede661983" }, "downloads": -1, "filename": "snapshotbackup-0.0.12.tar.gz", "has_sig": false, "md5_digest": "a72b74386174249356b080dc2f10012f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19503, "upload_time": "2018-07-09T13:48:36", "url": "https://files.pythonhosted.org/packages/ef/e6/1264cb44beacbefbcab37dd68edcdfa092dfc6c9a8ae11312720c4b5a705/snapshotbackup-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "da6003ff54ea7bf91bcb8060e078b845", "sha256": "670b3b93250e1cfff28aaf8e7bfef7da389cd472d9dcc471eb3f6f03b7c5aaf8" }, "downloads": -1, "filename": "snapshotbackup-0.0.13.tar.gz", "has_sig": false, "md5_digest": "da6003ff54ea7bf91bcb8060e078b845", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19504, "upload_time": "2018-08-18T12:49:47", "url": "https://files.pythonhosted.org/packages/77/47/73cea5b7c426137a098e40c5c7be5692bf1b78cd4d76fe8778848c7f514d/snapshotbackup-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "41773833d41fbeee376059608c1e89b7", "sha256": "af99a210b66259d162cb7185024099305ffa51d8bd4ba38a1ebcb597052a81e1" }, "downloads": -1, "filename": "snapshotbackup-0.0.14.tar.gz", "has_sig": false, "md5_digest": "41773833d41fbeee376059608c1e89b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25977, "upload_time": "2019-01-06T23:36:52", "url": "https://files.pythonhosted.org/packages/14/a9/efdcebc64c17456116bc2551c37e385681465fc78b289c171a08e2625c11/snapshotbackup-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "341ba8ef86cf00ed474b654a10ee0caa", "sha256": "1e05e7730e50f480fbbc4415c6cbace952113f23e4bbcbc166bacf529bec5056" }, "downloads": -1, "filename": "snapshotbackup-0.0.15.tar.gz", "has_sig": false, "md5_digest": "341ba8ef86cf00ed474b654a10ee0caa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27510, "upload_time": "2019-04-28T20:24:52", "url": "https://files.pythonhosted.org/packages/3a/b3/1feb42c42d20591f68ff96d0c6fa8d761e44f4b8c6d7c93d19f9947aa653/snapshotbackup-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "741fa13b7fc66c1be4c0055d2d607d66", "sha256": "6adc07fdf034a1a60ea08196e996e22966899aeb361c9adabc5822b54b7e20e9" }, "downloads": -1, "filename": "snapshotbackup-0.0.16.tar.gz", "has_sig": false, "md5_digest": "741fa13b7fc66c1be4c0055d2d607d66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27930, "upload_time": "2019-10-19T20:17:09", "url": "https://files.pythonhosted.org/packages/d2/cd/200d487e0ca97fd749406caeb7d46fc58a829a41067f41ad79725e63c454/snapshotbackup-0.0.16.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "23a759ac3ed00721c51463f39478426f", "sha256": "0798d4db5126ffa273339edd4e84e4727550a142ec3ffcfa63bff53c45b60755" }, "downloads": -1, "filename": "snapshotbackup-0.0.4.tar.gz", "has_sig": false, "md5_digest": "23a759ac3ed00721c51463f39478426f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13915, "upload_time": "2018-05-04T17:16:06", "url": "https://files.pythonhosted.org/packages/00/b4/00d4b039d05bdac74630d482d210cfc42fe1af764109b03c532068182691/snapshotbackup-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "82fcb173e17ab1174d1a7afc036c3a66", "sha256": "ad57f06fbd1e0395f224d0273339013424e4c430238942d460530bac25bb2fba" }, "downloads": -1, "filename": "snapshotbackup-0.0.5.tar.gz", "has_sig": false, "md5_digest": "82fcb173e17ab1174d1a7afc036c3a66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14242, "upload_time": "2018-05-06T00:32:34", "url": "https://files.pythonhosted.org/packages/24/59/079dd45cd17f1635213507bcd849b4c232c7dbe07953ad91b87d42853d84/snapshotbackup-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "fe17fe8363c4ebf507d359f66dcdd4e6", "sha256": "0069cd0ee2853b1d20e65c7c2a7f87782ad15ddf1c609e09d8e91ead113e0dfa" }, "downloads": -1, "filename": "snapshotbackup-0.0.6.tar.gz", "has_sig": false, "md5_digest": "fe17fe8363c4ebf507d359f66dcdd4e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15533, "upload_time": "2018-05-09T10:36:33", "url": "https://files.pythonhosted.org/packages/8a/84/ebe82a3bc4688d0ff749fb58a8b0b45a3edb03341a14ad411794212ff1ac/snapshotbackup-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "bbee8262e465f8e1b054003d6976e9aa", "sha256": "980569836a64bf885ba7a25114ebbbc5dc94e13f8027ec44006ea262a23730ad" }, "downloads": -1, "filename": "snapshotbackup-0.0.7.tar.gz", "has_sig": false, "md5_digest": "bbee8262e465f8e1b054003d6976e9aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18417, "upload_time": "2018-05-24T18:09:11", "url": "https://files.pythonhosted.org/packages/ba/0f/dcae012c18134ec35914dc114b01d4f1b748fc9e1d931258d467bcb0aa74/snapshotbackup-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "b6c1054ea9bff503ebddd1d953a5b64f", "sha256": "c39e5ea531b87b4535df57084a3c3d614d111a80c7899c2a3f341888cb6244b6" }, "downloads": -1, "filename": "snapshotbackup-0.0.8.tar.gz", "has_sig": false, "md5_digest": "b6c1054ea9bff503ebddd1d953a5b64f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17963, "upload_time": "2018-05-28T21:15:51", "url": "https://files.pythonhosted.org/packages/68/f6/b89da8bb7e7ecb9f4211e7548954a7125da3783b721f61b6bcafd1c10922/snapshotbackup-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "70c0751c1cb34f525bf0202e152edd8b", "sha256": "2b8035042808571ad27f248d80a20ded969f8a3a5266a2dd50b2f72169ccdb8e" }, "downloads": -1, "filename": "snapshotbackup-0.0.9.tar.gz", "has_sig": false, "md5_digest": "70c0751c1cb34f525bf0202e152edd8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18807, "upload_time": "2018-06-10T00:45:35", "url": "https://files.pythonhosted.org/packages/7e/e7/0fa93b9135272cf281161152a506de8031fed6bda6a136019efa91ec30ae/snapshotbackup-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "741fa13b7fc66c1be4c0055d2d607d66", "sha256": "6adc07fdf034a1a60ea08196e996e22966899aeb361c9adabc5822b54b7e20e9" }, "downloads": -1, "filename": "snapshotbackup-0.0.16.tar.gz", "has_sig": false, "md5_digest": "741fa13b7fc66c1be4c0055d2d607d66", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27930, "upload_time": "2019-10-19T20:17:09", "url": "https://files.pythonhosted.org/packages/d2/cd/200d487e0ca97fd749406caeb7d46fc58a829a41067f41ad79725e63c454/snapshotbackup-0.0.16.tar.gz" } ] }