{ "info": { "author": "Paul Landes", "author_email": "landes@mailc.net", "bugtrack_url": null, "classifiers": [], "description": "# Mount file systems and backup directories.\n\n[![Travis CI Build Status][travis-badge]][travis-link]\n\nThis program copies *source* paths optionally mountable *targets*. You can\nconfigure whether or not a target is mountable or not. If it is, the program\nmounts the file system by looking for a `info.conf` file and mounts if the file\nis not found. The program only looks to see if this file exists and does not\ndo anything with the contents.\n\nFeatures:\n\n* Mounts file systems only when necessary\n* Unmounts only file systems mounted\n* Customizable rsync (and mount/umount) commands.\n* Easy/intuitive configuration.\n* Need not be `rsync`, you can customize the backup to whatever you want.\n\n\n\n## Table of Contents\n\n- [Usage](#usage)\n - [Configuration](#configuration)\n - [Help](#help)\n- [Obtaining](#obtaining)\n- [Changelog](#changelog)\n- [License](#license)\n\n\n\n\n## Usage\n\n1. [Install](#obtaining) the library, which also installs the command.\n2. Create a configuration file (default is `/etc/rbak.conf` if `-c` is not\n given): See the [test case configuration file] for an example.\n3. Check your configuration: `$ rbak info`\n4. Backup using a dry run (i.e. careful with `rsync`'s `--delete`): `$ rbak\n --dryrun backup`\n5. Start the backup: `$ rbak backup`\n\n\n### Configuration\n\nSee the [test case configuration file], which has the explains each line of\nconfiguration in detail.\n\nHere's a sample:\n```ini\n## default section has configuration shared with all targets and sources\n[default]\n# name of file to look for in targets to determine if mounted\ninfo_file=info.conf\n# default name of backup directory for each target--this gets appended to the\n# target's path\nbackup_dir=bak\n# commands for mounting, un-mounting and backing up\nmount_cmd=/bin/mount -L {name} {path}\numount_cmd=/bin/umount {path}\nbackup_cmd=rsync -rltpgoDuv --delete {source.path}/ {target.backup_path}/{source.basename}\n# list of targets and sources, each of which need their own sections\ntargets=extbak2t\nsources=git\n\n## target `extbak2t` is an example of a mountable file system (i.e. USB drive)\n[extbak2t]\n# declare this to be a mountable file system\nmountable=true\n# path resolves to /mnt/extbak2t ({name} is the target/section name)\npath=/mnt/{name}\n\n## the one and only source for this configuration\n[git]\n# path of where files will be copied from\npath=/opt/var/git\n# override the basenme target backup directory\nbasename_dir=other/gitpath\n```\n\n\nThe `backup_cmd` need not be an `rsync` command, it can be anything\nand you can use any property of the source and target that are generated at\nruntime, but it can also by any property of these classes.\n\nThe global `default` section's `backup_dir` variable is shared with all targets\nand sources. This variable is appended to the target's path so the program can\ndifferentiate between the mount point and the path to back up files.\n\nThe `basename_dir` property in sources overrides the `source.basenme` property\nin `backup_cmd`. If this is not given it defaults to the basename of the\nsource's `path` property.\n\nThis program was written KISS (keep it simple) philosophy. If you have a\ntransitive backup situation (i.e. backup A -> B, then B -> C), it's better to\nbreak this out into two separate configuration files and two separate backup\ninvocations. That said, in some cases you may be able to utilize the\n`--sources` option to set which sources to backup.\n\n\n### Help\n\nThe usage is given with `-h`:\n\n```sql\n$ rbak -h\nUsage: rbak [options]\n\nOptions:\n --version show program's version number and exit\n -h, --help show this help message and exit\n -s, --short short output for list\n -w NUMBER, --whine=NUMBER\n add verbosity to logging\n -c FILE, --config=FILE\n configuration file\n\n\nUsage: rbak backup [additional options]\n\nRun the backup\n\nOptions:\n -d, --dryrun dry run to not actually connect, but act like it\n -n, --sources override the sources property in the config\n -h, --help show this help message and exit\n\n\nUsage: rbak mount [additional options]\n\nMount all targets\n\nOptions:\n -d, --dryrun dry run to not actually connect, but act like it\n -h, --help show this help message and exit\n\n\nUsage: rbak umount [additional options]\n\nUn-mount all targets\n\nOptions:\n -d, --dryrun dry run to not actually connect, but act like it\n -h, --help show this help message and exit\n```\n\n\n## Obtaining\n\nThe easist way to install the command line program is via the `pip` installer:\n```bash\npip install zensols.rbak\n```\n\nBinaries are also available on [pypi].\n\n\n## Changelog\n\nAn extensive changelog is available [here](CHANGELOG.md).\n\n\n## License\n\nCopyright (c) 2018 Paul Landes\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\n\n[test case configuration file]: test-resources/rbak.conf\n[pypi]: https://pypi.org/project/zensols.rbak/\n\n[travis-link]: https://travis-ci.org/plandes/rbak\n[travis-badge]: https://travis-ci.org/plandes/rbak.svg?branch=master\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/plandes/rbak/releases/download/v0.0.4/zensols.rbak-0.4-py3-none-any.whl", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/plandes/rbak", "keywords": "tooling", "license": "", "maintainer": "", "maintainer_email": "", "name": "zensols.rbak", "package_url": "https://pypi.org/project/zensols.rbak/", "platform": "", "project_url": "https://pypi.org/project/zensols.rbak/", "project_urls": { "Download": "https://github.com/plandes/rbak/releases/download/v0.0.4/zensols.rbak-0.4-py3-none-any.whl", "Homepage": "https://github.com/plandes/rbak" }, "release_url": "https://pypi.org/project/zensols.rbak/0.4/", "requires_dist": null, "requires_python": "", "summary": "Simple program to mount file systems and backup directories", "version": "0.4" }, "last_serial": 4089733, "releases": { "0.2": [ { "comment_text": "", "digests": { "md5": "651686ef8e8c7ba36f1773d7359b3bab", "sha256": "54bf685ef24133df7e0ee90cbbd110df7b186dbcceb39f53626cba4f8e60db93" }, "downloads": -1, "filename": "zensols.rbak-0.2.tar.gz", "has_sig": false, "md5_digest": "651686ef8e8c7ba36f1773d7359b3bab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6006, "upload_time": "2018-07-04T02:56:48", "url": "https://files.pythonhosted.org/packages/78/56/4bad5c2cdda20ae396165445e80d0835d1e7cee2dd40042b45bb01850728/zensols.rbak-0.2.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "5a559363ac120c9ae1e8fec0a847c242", "sha256": "5dae5ec97ef70ea001b6066a214af4d7e048dc280526944eb2757c11121530a4" }, "downloads": -1, "filename": "zensols.rbak-0.4-py3.6.egg", "has_sig": false, "md5_digest": "5a559363ac120c9ae1e8fec0a847c242", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 12415, "upload_time": "2018-07-22T05:39:53", "url": "https://files.pythonhosted.org/packages/d5/93/ae66b4145da91ea7afc2174b0d755811dd96e369a3553e027d3d8068010d/zensols.rbak-0.4-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "f5b9f20b10700325b27be3ae5d2ebd8d", "sha256": "3a18d915839bcabcaebcdcbcd11a25fe7838b3dca685048f3d9fc4630f5d74bc" }, "downloads": -1, "filename": "zensols.rbak-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f5b9f20b10700325b27be3ae5d2ebd8d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7234, "upload_time": "2018-07-22T05:39:52", "url": "https://files.pythonhosted.org/packages/0d/35/4e8729af1eaa71c177bc546bf8078cc7accb216bd632febcb4664545d4f8/zensols.rbak-0.4-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5a559363ac120c9ae1e8fec0a847c242", "sha256": "5dae5ec97ef70ea001b6066a214af4d7e048dc280526944eb2757c11121530a4" }, "downloads": -1, "filename": "zensols.rbak-0.4-py3.6.egg", "has_sig": false, "md5_digest": "5a559363ac120c9ae1e8fec0a847c242", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 12415, "upload_time": "2018-07-22T05:39:53", "url": "https://files.pythonhosted.org/packages/d5/93/ae66b4145da91ea7afc2174b0d755811dd96e369a3553e027d3d8068010d/zensols.rbak-0.4-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "f5b9f20b10700325b27be3ae5d2ebd8d", "sha256": "3a18d915839bcabcaebcdcbcd11a25fe7838b3dca685048f3d9fc4630f5d74bc" }, "downloads": -1, "filename": "zensols.rbak-0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f5b9f20b10700325b27be3ae5d2ebd8d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7234, "upload_time": "2018-07-22T05:39:52", "url": "https://files.pythonhosted.org/packages/0d/35/4e8729af1eaa71c177bc546bf8078cc7accb216bd632febcb4664545d4f8/zensols.rbak-0.4-py3-none-any.whl" } ] }