{ "info": { "author": "Sergei S.", "author_email": "s@makeitwork.cz", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: System :: Archiving :: Backup" ], "description": "# bakauditor - Backup Auditor\n\n## What is this\n\n**bakauditor** is an automatic backup auditor robot.\n\nAll of us have backups. Every day something is backing up on background of our\ndesktops and somewhere on our servers. But what if backup has been failed and\nyou haven't even received an alert about it? Probably you'll find you miss\nimportant backups only when your system is crashed and you need them.\n\nPeople, who faced this problem at least once in a life, usually manually audit\ntheir backups from time to time. That's why I've decided to automate this\nboring stuff once and forever and created **bakauditor**.\n\n## What can it do\n\nCurrently, **bakauditor** supports backup audit via plugins:\n\n* **file** check backup, stored in file (modification time, min. size etc.)\n\n* **dir** get most recent file in directory and check it like **file** does\n\n* **zfs** check if ZFS snapshots exists on local or remote system\n\n* **borg** borg backup repositories, local or remote\n\n## How to use\n\nJust run\n\n```shell\nbakauditor\n```\n\nand it will show you list of all your backups and their status.\n\n![colorized cols](https://github.com/divi255/bakauditor/blob/master/out.png?raw=true)\n\nYou may also run\n\n```shell\nbakauditor -x\n```\n\nIn this case, only failed backups are printed, otherwise you get a message:\n\n```\nChecked: 14, failed: 0\n\nAll backups are fine\n```\n\n**bakauditor** process exits with code *0* when everything is fine, and with\nerror codes when something is wrong. So you may just get its output and send\nvia e-mail or what you prefer when something is wrong. And e.g. weekly receive\noutput even if everything is fine, to check **bakauditor** is running and all\nyour backups are safe.\n\n## Installation\n\n```shell\npip3 install bakauditor\n```\n\n## Configuration\n\nPut configuration file to */usr/local/etc/bakauditor.yml*. This is YAML file\nand it has the following sections.\n\n### default section\n\n```yaml\ndefault:\n time: 2d\n min-size: 10000000\n```\n\nOptions in this section apply to all backup configurations, unless overriden.\n\nThe size may be specified in bytes, you may also use suffix \"K\" for Kbytes\n(kilobytes, not kibitytes, 1K = 1000 bytes), \"M\" for MBytes, \"G\" for Gbytes,\n\"T\" for TBytes.\n\n### file\n\nExample:\n\n```yaml\nserver1:\n type: file\n path: /export/backups/server1/server1.dump.gz\n time: 3d\n min-size: 10000000\n```\n\nIn the above example, we ask **bakauditor** to check backup stored in the\nspecified file, the file should not be older than 3 days and have a minimal\nsize of 10 megabytes to be considered as good backup.\n\nOptions *time* and *min-size* are optional if specified in *default* section.\n\n### directory\n\nExample:\n\n```yaml\nserver1:\n type: dir\n path: /export/backups/server1\n time: 3d\n min-size: 10000000\n```\n\nThis example will to the same as previous, but automatically get the most\nrecent file in the specified directory and check it. Good, when you do e.g.\nincremental backups.\n\n### directory of directories\n\nExample:\n```yaml\nserver1:\n type: dod\n path: /export/backups/somebackup\n time: 3d\n min-size:\n```\n\nThis example considers backups are stored in separate directories inside\n\"somebackup\" directory. The program will find most recently created directory\nand calculate its total size.\n\n### zfs\n\nExample:\n\n```yaml\nserver1:\n type: zfs\n time-fmt: \"snapshot-%Y-%m%-%d-%H:%M:%S\"\n fs: bakpool/server1\n```\n\nOption *time-fmt* is used to get snapshot creation time from snapshot name. We\ncan not determine when ZFS snapshot has been created (unless we perform *zfs\nget creation* for every snapshot, which could be pretty slow), but if snapshot\nname contains time, we can decode it and check.\n\nOption *fs* specifies file system, where snapshots are located.\n\nOptionally, you may ask **bakauditor** to analyze ZFS snapshot on remote server\nvia ssh, specifying *ssh* option:\n\n```yaml\nserver1:\n type: zfs\n time-fmt: \"snapshot-%Y-%m%-%d-%H:%M:%S\"\n fs: bakpool/server1\n ssh: root@192.168.1.77\n```\n\nThis option is just converted to command *ssh zfs list ...* so\nyou may specify any options for ssh program you like.\n\nNote: *min-size* option for zfs snapshots is ignored.\n\n### borg\n\nExample:\n\n```yaml\nborg-local:\n type: borg\n repo: /bak\n password: 123\n```\n\nTo check repo on remote system, add \"ssh\" option.\n\nNote: plugin requires **borg** >= 1.1.0, for older version use *borg0* instead\n(doesn't check backup size).\n\n## TODO\n\nplugins for\n\n* bacula\n* HP Data Protector\n* VMWare DP\n* Acronis\n* etc.", "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/divi255/bakauditor", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "bakauditor", "package_url": "https://pypi.org/project/bakauditor/", "platform": "", "project_url": "https://pypi.org/project/bakauditor/", "project_urls": { "Homepage": "https://github.com/divi255/bakauditor" }, "release_url": "https://pypi.org/project/bakauditor/0.0.15/", "requires_dist": null, "requires_python": "", "summary": "Backup auditor", "version": "0.0.15", "yanked": false, "yanked_reason": null }, "last_serial": 6728570, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "79e5e356cd5c1837c9a05b849cadff46", "sha256": "35ef99a83bb0c3c991b88dcbd9f109a6275b857bf51a39cb8dab6a25eb509317" }, "downloads": -1, "filename": "bakauditor-0.0.1.tar.gz", "has_sig": false, "md5_digest": "79e5e356cd5c1837c9a05b849cadff46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2587, "upload_time": "2019-10-07T00:41:09", "upload_time_iso_8601": "2019-10-07T00:41:09.907757Z", "url": "https://files.pythonhosted.org/packages/1d/8d/77dd809538952778c3189bcb5a4be24184cf52ce3ff09191673d06345493/bakauditor-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "c1d3b3ae28a4f1f3d618da483466ee79", "sha256": "9ae378e75c7cefc1c0d6d4ea78ce7fb51a6775525dcd8dce21ae3f992a5bf677" }, "downloads": -1, "filename": "bakauditor-0.0.10.tar.gz", "has_sig": false, "md5_digest": "c1d3b3ae28a4f1f3d618da483466ee79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6055, "upload_time": "2019-10-20T19:25:49", "upload_time_iso_8601": "2019-10-20T19:25:49.006856Z", "url": "https://files.pythonhosted.org/packages/f4/0d/81b4385afe2dd799d5ebdbb6b00ffe655a737015453a6dc97ab046e16fbb/bakauditor-0.0.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "a15d6570f1e860f91e8b1749b9b91a16", "sha256": "5058832f43795868826090affc7ffcd76f474d5c524355fd6c90d2ae1f413836" }, "downloads": -1, "filename": "bakauditor-0.0.11.tar.gz", "has_sig": false, "md5_digest": "a15d6570f1e860f91e8b1749b9b91a16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6191, "upload_time": "2019-10-21T16:01:29", "upload_time_iso_8601": "2019-10-21T16:01:29.998948Z", "url": "https://files.pythonhosted.org/packages/9e/4b/25f25b13c55ef9f6735d86facd02ec38c3c80a0e9ea2276a37e091aeb4f2/bakauditor-0.0.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "54465f860f8c06c7afc1f760de73892e", "sha256": "2b8dd6a8136b39c017536118e61dddf5363c612601a2879069bb6a563790246a" }, "downloads": -1, "filename": "bakauditor-0.0.12.tar.gz", "has_sig": false, "md5_digest": "54465f860f8c06c7afc1f760de73892e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6200, "upload_time": "2019-10-21T16:30:51", "upload_time_iso_8601": "2019-10-21T16:30:51.307618Z", "url": "https://files.pythonhosted.org/packages/80/c2/86e26ebecdc4423e0e5a628f235272218c932d5134188ada3281ad3c76a4/bakauditor-0.0.12.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "3ce3f2d275fc5e86f390d9fb988f4dde", "sha256": "99cbfbe3ca14be0787fa874b2601d39990c13d0f2c948bacfecd0f0a7689425e" }, "downloads": -1, "filename": "bakauditor-0.0.13.tar.gz", "has_sig": false, "md5_digest": "3ce3f2d275fc5e86f390d9fb988f4dde", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6209, "upload_time": "2019-10-21T16:31:47", "upload_time_iso_8601": "2019-10-21T16:31:47.620849Z", "url": "https://files.pythonhosted.org/packages/7a/d1/1d5c2178902d070ffe135386c579faacc83098c2936dcd06c9b2d81b002c/bakauditor-0.0.13.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "99dc7a4335a91c0b29d1438f40905ccc", "sha256": "cce0664f3fa6ce059ac8478d68b849827eb15ce9f641d03c2fa897899f4f4ffe" }, "downloads": -1, "filename": "bakauditor-0.0.14.tar.gz", "has_sig": false, "md5_digest": "99dc7a4335a91c0b29d1438f40905ccc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6554, "upload_time": "2020-03-01T14:28:35", "upload_time_iso_8601": "2020-03-01T14:28:35.667690Z", "url": "https://files.pythonhosted.org/packages/e2/44/47ae68470b9b9e63c1b11c002a5f861b24fb8f1306b83c725e1f6ca8e7d8/bakauditor-0.0.14.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "72aede6a2212b21ccbaa46f1d3df419b", "sha256": "d810ce87f4f1e109bfefa35cb9ff20c1fcf1ddd62fd21626d2751c45837e3bb3" }, "downloads": -1, "filename": "bakauditor-0.0.15.tar.gz", "has_sig": false, "md5_digest": "72aede6a2212b21ccbaa46f1d3df419b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6548, "upload_time": "2020-03-01T14:30:41", "upload_time_iso_8601": "2020-03-01T14:30:41.627647Z", "url": "https://files.pythonhosted.org/packages/f9/e8/b2620cd3ded8ccd6030a63d3c7a07ed19b9ec79974e7ac8f84b4b559a69d/bakauditor-0.0.15.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "9085c8a328e9d60cad36a5aafea08df4", "sha256": "9580849ae1b960292e51da16e935d30774f1ac06f9faaa51596f942bc335f419" }, "downloads": -1, "filename": "bakauditor-0.0.2.tar.gz", "has_sig": false, "md5_digest": "9085c8a328e9d60cad36a5aafea08df4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3183, "upload_time": "2019-10-07T00:42:20", "upload_time_iso_8601": "2019-10-07T00:42:20.242932Z", "url": "https://files.pythonhosted.org/packages/b6/5f/ad15f58b7f404ec009c2a21a5b3990784ab1b6fdae10e001aa2e88519dcb/bakauditor-0.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "d5de44666b81af108bffeead324178c6", "sha256": "4cb0c4e56f601a30966d577bd164963f0b0b739879902befd21e81151d80cc61" }, "downloads": -1, "filename": "bakauditor-0.0.3.tar.gz", "has_sig": false, "md5_digest": "d5de44666b81af108bffeead324178c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3326, "upload_time": "2019-10-07T01:05:16", "upload_time_iso_8601": "2019-10-07T01:05:16.532869Z", "url": "https://files.pythonhosted.org/packages/52/83/dbfeeda9fdf4bd4617e920793b0f6d979ef1768167df072f056f45ea6f59/bakauditor-0.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "3946aa876de888d5de9ef2071e01bf9c", "sha256": "ec009d3d856356ae1e70686d8455a5190fbdea464225deb568d3b0e51da0e10e" }, "downloads": -1, "filename": "bakauditor-0.0.4.tar.gz", "has_sig": false, "md5_digest": "3946aa876de888d5de9ef2071e01bf9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3391, "upload_time": "2019-10-07T01:41:05", "upload_time_iso_8601": "2019-10-07T01:41:05.525381Z", "url": "https://files.pythonhosted.org/packages/b0/6b/6ca3e5fddc92bd4b692f66f81f082e53e8b3f13c5e037987d3d7a7b0fbc9/bakauditor-0.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "8416a0a8c3ef4f9aeb20a1044f0aec07", "sha256": "c7014a27462327774eee0fa27ab1b8c4476ea72d3605bec5261850ce00ef5326" }, "downloads": -1, "filename": "bakauditor-0.0.5.tar.gz", "has_sig": false, "md5_digest": "8416a0a8c3ef4f9aeb20a1044f0aec07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5348, "upload_time": "2019-10-09T22:20:34", "upload_time_iso_8601": "2019-10-09T22:20:34.826777Z", "url": "https://files.pythonhosted.org/packages/04/58/3550063ef60913acfe83e098af9f2e5b1d0cee76f08258ba638ea8303a1a/bakauditor-0.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "87e59101979a6211f2c94c18ce558a04", "sha256": "a6ef2e7356e671ea4b5dc240199a86c71517ab12f13b26e589719ccf05da4cbc" }, "downloads": -1, "filename": "bakauditor-0.0.6.tar.gz", "has_sig": false, "md5_digest": "87e59101979a6211f2c94c18ce558a04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5677, "upload_time": "2019-10-20T17:27:12", "upload_time_iso_8601": "2019-10-20T17:27:12.752551Z", "url": "https://files.pythonhosted.org/packages/ec/0a/dbd4cbaaddd87fce51346139e0cf8f97b209ca7a003c77d362557167988c/bakauditor-0.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "41054956c685f5305bdd9676bf1009e8", "sha256": "7577e598823050ce2f4ea943da4b79bc33555c3361a594f21d165abd8fb0290d" }, "downloads": -1, "filename": "bakauditor-0.0.7.tar.gz", "has_sig": false, "md5_digest": "41054956c685f5305bdd9676bf1009e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5877, "upload_time": "2019-10-20T18:51:17", "upload_time_iso_8601": "2019-10-20T18:51:17.783139Z", "url": "https://files.pythonhosted.org/packages/9e/2b/0dc1a8353dba702320ed9f06f58ede9d8f5a1bd83206e7431c7cda00faa5/bakauditor-0.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "66f53a6e6a56a56b6201f9e9e6a4d00c", "sha256": "0a12203a8ff4efc05c2a6c44ff83f9d895b9e9592897845c03933b618cad714c" }, "downloads": -1, "filename": "bakauditor-0.0.8.tar.gz", "has_sig": false, "md5_digest": "66f53a6e6a56a56b6201f9e9e6a4d00c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5877, "upload_time": "2019-10-20T18:52:33", "upload_time_iso_8601": "2019-10-20T18:52:33.073847Z", "url": "https://files.pythonhosted.org/packages/79/33/16cd08409099c22883f13ae79b0f3c466f43f1db75d5ee4ccb6849f85b1f/bakauditor-0.0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "e6805fb7d4c02d7f7c213d782f1219bc", "sha256": "461deb4b9f4bf00601f03dbbceb9fb497b38c67d862541ad71e4b978bcbfe3a2" }, "downloads": -1, "filename": "bakauditor-0.0.9.tar.gz", "has_sig": false, "md5_digest": "e6805fb7d4c02d7f7c213d782f1219bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4720, "upload_time": "2019-10-20T19:23:57", "upload_time_iso_8601": "2019-10-20T19:23:57.113783Z", "url": "https://files.pythonhosted.org/packages/9d/7e/234d2df926bc6ef1bf0ace52673e224b1effc259f0c7c90d8cdf494cfd70/bakauditor-0.0.9.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "72aede6a2212b21ccbaa46f1d3df419b", "sha256": "d810ce87f4f1e109bfefa35cb9ff20c1fcf1ddd62fd21626d2751c45837e3bb3" }, "downloads": -1, "filename": "bakauditor-0.0.15.tar.gz", "has_sig": false, "md5_digest": "72aede6a2212b21ccbaa46f1d3df419b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6548, "upload_time": "2020-03-01T14:30:41", "upload_time_iso_8601": "2020-03-01T14:30:41.627647Z", "url": "https://files.pythonhosted.org/packages/f9/e8/b2620cd3ded8ccd6030a63d3c7a07ed19b9ec79974e7ac8f84b4b559a69d/bakauditor-0.0.15.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }