{ "info": { "author": "Stephen Drake", "author_email": "steve@synergyconsultingnz.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4" ], "description": "Sluice\n======\nSluice is a set of tools for managing ZFS snapshots inspired by\n`Time Machine`_.\n\nA goal of Sluice is to follow the Unix philosophy of simple, composable\ntools. To this end, the core functionality is broken into three\nindependent operations on snapshots: creation, synchronisation and\nculling.\n\nSnapshots essential to synchronisation are locked with zfs holds to prevent\ntheir accidental removal. This allows these operations to run independently\nbut cooperatively, and facilitates interoperation with other tools.\n\nEach of the tools is simple enough that it can be fully configured with\ncommand-line options - no configuration file is required. Some options,\nhowever, can be looked up from zfs user properties.\n\nComplex schemes can be effected by combining multiple cron jobs.\n\nSluice is implemented on top of `Weir`_, which provides support for remote\noperation. All commands can operate on remote datasets specifed as urls of\nthe form ``zfs://user@host/path@snapname``.\n\n.. _Time Machine: https://en.wikipedia.org/wiki/Time_Machine_%28OS_X%29\n.. _Weir: https://bitbucket.org/stevedrake/weir\n\nInstallation\n------------\nRequires Python 2.6, 2.7 or 3.4+.\n\nTo install Sluice, simply::\n\n\t$ pip install sluice\n\nzfs-autosnapshot\n----------------\nCreates snapshots with names generated from a |strftime|_-compatible date\nformat string::\n\n\t$ zfs-autosnapshot -v zroot/test@%Y-%m-%d\n\tINFO:sluice.autosnapshot:creating new snapshot zroot/test@2015-04-11\n\nIf no format string is specified, it will be looked up from the user property\n``sluice.autosnapshot:format`` or the default ISO 8601-compatible format\n``%Y-%m-%dT%H%M`` will be used::\n\n\t$ zfs set sluice.autosnapshot:format=auto-%Y-%m-%dT%H%M%S zroot/test\n\t$ zfs-autosnapshot -v zroot/test\n\tINFO:sluice.autosnapshot:creating new snapshot zroot/test@auto-2015-04-11T012611\n\n.. |strftime| replace:: ``strftime()``\n.. _strftime: http://pubs.opengroup.org/onlinepubs/007908799/xsh/strftime.html\n\nzfs-copy\n--------\nCombines ``zfs send`` and ``zfs receive``::\n\n\t$ zfs-copy -v zroot/test@2015-04-11 zfs://backup.local/wanaka/test-copy\n\tINFO:weir.process:sending from @ to zroot/test@2015-04-11\n\tINFO:weir.process:receiving full stream of zroot/test@2015-04-11 into wanaka/test-copy@2015-04-11\n\tINFO:weir.process:received 46.4KiB stream in 1 seconds (46.4KiB/sec)\n\nzfs-sync\n--------\nPerforms one-way synchronisation of snapshots between two datasets::\n\n\t$ zfs-sync -v zroot/test zfs://backup.local/wanaka/test-sync\n\tINFO:weir.process:sending from @ to zroot/test@auto-2015-04-11T012611\n\tINFO:weir.process:receiving full stream of zroot/test@auto-2015-04-11T012611 into wanaka/test-sync@auto-2015-04-11T012611\n\tINFO:weir.process:received 46.4KiB stream in 1 seconds (46.4KiB/sec)\n\n\t$ zfs-autosnapshot zroot/test\n\t$ zfs-sync -v zroot/test zfs://backup.local/wanaka/test-sync\n\tINFO:weir.process:sending from @auto-2015-04-11T012611 to zroot/test@auto-2015-04-11T014021\n\tINFO:weir.process:receiving incremental stream of zroot/test@auto-2015-04-11T014021 into wanaka/test-sync@auto-2015-04-11T014021\n\tINFO:weir.process:received 312B stream in 3 seconds (104B/sec)\n\nA hold is placed on the source snapshot to prevent inadvertently deleting it\nand thereby breaking incremental synchronisation::\n\n\t$ zfs holds zroot/test@auto-2015-04-11T014021\n\tNAME TAG TIMESTAMP\n\tzroot/test@auto-2015-04-11T014021 sluice.sync:zfs://backup.local/wanaka/test-sync Sat Apr 11 1:40 2015\n\nzfs-cull\n--------\nDestroys old snapshots.\n\nSnapshots can be removed by specifying a maximum age in ISO 8601 duration\nformat. The most recent snapshot and any held snapshots are preserved::\n\n\t$ zfs-autosnapshot zroot/test\n\t$ zfs-cull -v --max-age=t1m zroot/test\n\tINFO:sluice.cull:destroying zroot/test@2015-04-11\n\tINFO:sluice.cull:destroying zroot/test@auto-2015-04-11T012611\n\tINFO:sluice.cull:destroying zroot/test@auto-2015-04-11T014021\n\n\t$ zfs list -t all -r zroot/test\n\tNAME USED AVAIL REFER MOUNTPOINT\n\tzroot/test 144Ki 109Gi 144Ki /Volumes/zroot/test\n\tzroot/test@auto-2015-04-11T014021 0 - 144Ki -\n\tzroot/test@auto-2015-04-11T014754 0 - 144Ki -\n\nSnapshots can also be removed by density, defined as a / \u2206a, where a is\nsnapshot age and \u2206a is the age difference between adjacent snapshots.\nSnapshot density is thus defined in log-time rather than in linear-time.\nThe oldest snapshot is also preserved in this mode::\n\n\t$ zfs-autosnapshot zroot/test\n\t$ zfs-sync zroot/test zfs://backup.local/wanaka/test-sync\n\t$ zfs-cull -v --max-density=1 zfs://backup.local/wanaka/test-sync\n\tINFO:sluice.cull:destroying zfs://backup.local/wanaka/test-sync@auto-2015-04-11T014021\n\n\t$ zfs list -t all -r wanaka/test-sync\n\tNAME USED AVAIL REFER MOUNTPOINT\n\twanaka/test-sync 160Ki 109Gi 144Ki /Volumes/wanaka/test-sync\n\twanaka/test-sync@auto-2015-04-11T012611 8Ki - 144Ki -\n\twanaka/test-sync@auto-2015-04-11T014754 8Ki - 144Ki -\n\twanaka/test-sync@auto-2015-04-11T015628 0 - 144Ki -\n\nzfs-import\n----------\nProposed addition for v1.x - copy files from a non-zfs filesystem and create\na snapshot.\n\nzfs-export\n----------\nProposed addition for v1.x - create a clone of a zfs snapshot and copy files\nto a non-zfs filesystem.\n\nLicense\n-------\nLicensed under the Common Development and Distribution License (CDDL).", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/stevedrake/sluice", "keywords": "zfs", "license": "Common Development and Distribution License (CDDL)", "maintainer": null, "maintainer_email": null, "name": "sluice", "package_url": "https://pypi.org/project/sluice/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/sluice/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://bitbucket.org/stevedrake/sluice" }, "release_url": "https://pypi.org/project/sluice/0.3.1/", "requires_dist": null, "requires_python": null, "summary": "Tools for managing zfs snapshots", "version": "0.3.1" }, "last_serial": 1697734, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "d319fe6cd29ad3b4a2eb6a722019a63b", "sha256": "c7cf2619993d37cd993f8bdf116e9e85adb7250bc61a469925d3322819e383bc" }, "downloads": -1, "filename": "sluice-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d319fe6cd29ad3b4a2eb6a722019a63b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9424, "upload_time": "2015-02-25T02:49:27", "url": "https://files.pythonhosted.org/packages/f6/c7/4d0e13af65c944a5b01dc08b9c70cf3011c867c8d1e865279045ca1f0aaf/sluice-0.2.0.tar.gz" } ], "0.2.0.dev": [ { "comment_text": "", "digests": { "md5": "b95e79dfc5ddaf0f1555efbd16037423", "sha256": "bf8cb8f3adf78d5482f2144673ae52ee929926145d32ab22b0d936ad2f463f69" }, "downloads": -1, "filename": "sluice-0.2.0.dev.tar.gz", "has_sig": false, "md5_digest": "b95e79dfc5ddaf0f1555efbd16037423", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8706, "upload_time": "2015-02-09T00:13:26", "url": "https://files.pythonhosted.org/packages/d1/2b/738bf5cd591c200fba4f3f4848e9d82f3a11a33ee7f6a8c83c6426322689/sluice-0.2.0.dev.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "057564afbc08d3ba520fe474ba52470d", "sha256": "21901c65900acd53865579d735779792f5d1ab4390121754d6278a67a6a22442" }, "downloads": -1, "filename": "sluice-0.2.1.tar.gz", "has_sig": false, "md5_digest": "057564afbc08d3ba520fe474ba52470d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6796, "upload_time": "2015-03-16T01:22:07", "url": "https://files.pythonhosted.org/packages/22/b6/f2b0e7ed7bd0a7072b1f1033fd106fc1fdf2411f7212cc03e0f2154618d3/sluice-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "4032ad72e3f67d7c9f737fba4d7e8645", "sha256": "b485524d5b1d12f7639123644aa1b3374ce56e0302bb638d5446b32cabab2e52" }, "downloads": -1, "filename": "sluice-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4032ad72e3f67d7c9f737fba4d7e8645", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6846, "upload_time": "2015-04-10T14:52:43", "url": "https://files.pythonhosted.org/packages/03/58/4bcbc5dd1c59fbd8fdd913b9b83e97c4465512734d5ae62ea1198c40080b/sluice-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "1a6d4058720ccc923160f50758f21f34", "sha256": "ef85db9baffe1e84be956265413cd5b68f1bcfcd5d404dd7b07542382547a74f" }, "downloads": -1, "filename": "sluice-0.3.1.tar.gz", "has_sig": false, "md5_digest": "1a6d4058720ccc923160f50758f21f34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6918, "upload_time": "2015-08-28T09:08:10", "url": "https://files.pythonhosted.org/packages/8a/4f/641620a42d79c738e20e276b66ac9b09be623b8cb8ae99031f7515eb9569/sluice-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1a6d4058720ccc923160f50758f21f34", "sha256": "ef85db9baffe1e84be956265413cd5b68f1bcfcd5d404dd7b07542382547a74f" }, "downloads": -1, "filename": "sluice-0.3.1.tar.gz", "has_sig": false, "md5_digest": "1a6d4058720ccc923160f50758f21f34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6918, "upload_time": "2015-08-28T09:08:10", "url": "https://files.pythonhosted.org/packages/8a/4f/641620a42d79c738e20e276b66ac9b09be623b8cb8ae99031f7515eb9569/sluice-0.3.1.tar.gz" } ] }