{ "info": { "author": "R\u00f3man Joost", "author_email": "roman@bromeco.de", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: Python", "Topic :: Internet", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving :: Backup", "Topic :: System :: Archiving :: Mirroring", "Topic :: System :: Systems Administration" ], "description": "==========\n Zyklop \u25ce\n==========\n\nThis program is a wrapper around rsync. It will help you:\n\n * if you need to sync files from remote server frequently\n * No need to keep the location of the file in your mind. It finds\n them for you.\n\nRequirements\n==============\n\n * Python >= 2.6 (Python >= 2.7 for tests)\n * rsync installed\n * locate installed with up-to-date database on the remote system\n\n\nFirst Steps\n===========\n\nIf you are new to ssh, setup an ssh configuration first. If you are\ndealing with a lot of servers, giving them an alias makes them easier to\nremember and you don't have to type as much.\n\n #. Create an ssh configuration in your SSH home, e.g.::\n\n vim ~/.ssh/config\n\n You can use the following example as a starter::\n\n Host spameggs\n Hostname 12.112.11.122\n Compression yes\n CompressionLevel 9\n User guido\n\n but be sure to check the `documentation\n `_\n or the man page (5) for `ssh_config`\n\n #. Make the config only readable for the owner::\n\n chmod 600 ~/.ssh/config\n\n #. Test if you can login to your configured host using only your\n alias::\n\n ssh spameggs\n\nExamples\n========\n\n #. Syncing ZODB from remote server configured in ``~/.ssh/config``\n as spameggs. We choose not the first database, but the second::\n\n $ zyklop spameggs:Data.fs .\n Use /opt/otherbuildout/var/filestorage/Data.fs? Y(es)/N(o)/A(bort) n\n Use /opt/buildout/var/filestorage/Data.fs? Y(es)/N(o)/A(bort) y\n\n #. Syncing a directory providing a path segment::\n\n $ zyklop spameggs:buildout/var/filestorage$ .\n\n #. Syncing a directory which ends with `blobstorage``, excluding any\n other `blobstorage` directories with postfixes in the name (e.g.\n `blobstorage.old`)::\n\n $ zyklop spameggs:blobstorage$ .\n\n #. Use an **absolute path** if you know exactly where to copy from::\n\n $ zyklop spameggs:/tmp/Data.fs .\n\n #. Syncing a directory which needs higher privileges. We use the\n ``-s`` argument::\n\n $ zyklop -s spameggs:blobstorage$ .\n\n #. **Dry run** prints out all found remote paths and just exits::\n\n $ zyklop -d spameggs:blobstorage$ .\n /opt/otherbuildout/var/blobstorage\n /opt/otherbuildout/var/blobstorage.old\n /opt/buildout/var/blobstorag\n\n #. Sync the first result zyklop finds automatically **without\n prompting**::\n\n $ zyklop -y spameggs:blobstorage$ .\n\n\nKnown Problems\n--------------\n\nZyklop just hangs\n This can be caused by paramiko and a not sufficient SSH setup. Make\n sure you can login without problems by simply issuing a::\n\n ssh myhost\n\n If that does not solve your problem, try to provide an absolute path\n from the source. Sometimes users don't have many privileges on the\n remote server and the paramiko just waits for the output of a remote\n command::\n\n zyklop myhost:/path/to/file .\n\nMotivation\n==========\n\nI'm dealing with Zope servers most of my time. Some of them have a\n*huge* Data.fs - an object oriented database. I do have in 99% of the\ncases an older version of the clients database on my PC. Copying the\nwhole database will take me ages. Using rsync and simply downloading a\nbinary patch makes updating my local database a quick thing.\n\nTo summarize, with zyklop I'd like to address two things:\n\n 1. Downloading large ZODBs takes a long time and\n bandwidth. I simply don't want to wait that long and download that\n much.\n 2. Most of the time I can not remember the exact path where the item\n to copy is on the remote server.\n\nTODO\n====\n\n * tty support: sometimes needed if SSH is configured to only allow\n tty's to connect.\n * Don't hang if only password auth is configured for SSH\n\nDevelopment\n===========\n\nIf you're interested in hacking, clone zyklop on github:\n\n https://github.com/romanofski/zyklop\n\n\nCHANGES\n=======\n\n0.5.2 (2013-02-12)\n------------------\n\n * Bugfix: use one function to retrieve the username.\n\n0.5.1 (2013-02-12)\n------------------\n\n * Command line utility now shows version information.\n * Bugfix: now uses the 'user' configured in the ssh config and falls\n back to the environment user\n\n0.5 (2013-02-06)\n----------------\n\n * Added -d or --dry-run switch to only print out found\n remote paths by zyklop\n * Added -y or --assume-yes switch to sync the first result found.\n * Fixed b0rked README.rst\n\n0.4 (2013-02-05)\n----------------\n\n * Improved documentation\n * Fixed bug, which lead to a hanging command when issuing a remote\n command in order to find the target path\n\n0.3 (2013-01-14)\n----------------\n\n * Changed host, match parameters: Now you can specify the source\n host and path match in one parameter delimited by a column,\n similar to scp (e.g. foohost:/path)\n * Allow to provide an absolute path to the file you'd like to copy.\n\n0.2 (2012-03-08)\n----------------\n\n * Added basic support for using sudo in finding and syncing (rsync)\n * Added argparse as dependency as Python 2.6 won't have it\n * New positional argument to provide destination to copy\n file/directory", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://zyklop.rtfd.org", "keywords": "server", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "zyklop", "package_url": "https://pypi.org/project/zyklop/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/zyklop/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://zyklop.rtfd.org" }, "release_url": "https://pypi.org/project/zyklop/0.5.2/", "requires_dist": null, "requires_python": null, "summary": "Rsync wrapper making syncing easy", "version": "0.5.2" }, "last_serial": 802452, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "55b8691782f5900530cd76bd6b2a8d02", "sha256": "7440c18d0b2b34a350c0ed14520489692937e75bf7d18fc9626fb72d1ce02aa1" }, "downloads": -1, "filename": "zyklop-0.1.zip", "has_sig": true, "md5_digest": "55b8691782f5900530cd76bd6b2a8d02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22315, "upload_time": "2012-02-28T10:08:31", "url": "https://files.pythonhosted.org/packages/d0/99/a91291c2786c3bb313a7bb5a862e572622b3cfa90a1e963deef0c56956c7/zyklop-0.1.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "d9ea5754d07fcb7b05651c25f9935aca", "sha256": "9e146463b1b48b660bc29b22527a412fc5ae65068bd7bd6d518c59d445f30335" }, "downloads": -1, "filename": "zyklop-0.2.zip", "has_sig": true, "md5_digest": "d9ea5754d07fcb7b05651c25f9935aca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24608, "upload_time": "2012-03-08T11:47:53", "url": "https://files.pythonhosted.org/packages/9a/ac/b598a9c9f6fe7d3fc585b369f28f010d4ebcee3a9fa85c48ba097a919e73/zyklop-0.2.zip" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "3f30e8856bdd97429e1f2490f29105b7", "sha256": "a199132832dfe880a251e02f6d230f381639e3226498aa60aae62a73a6489ef1" }, "downloads": -1, "filename": "zyklop-0.3.zip", "has_sig": true, "md5_digest": "3f30e8856bdd97429e1f2490f29105b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26242, "upload_time": "2013-01-14T02:28:12", "url": "https://files.pythonhosted.org/packages/4e/4d/5a54acd135734e24846e3f68991d9bb2aa7948e55c4d9b6d280210e13e0a/zyklop-0.3.zip" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "d9d5aabd718280b948bedf52e36d8d23", "sha256": "cac69cdbcf897ca0fd1e446c23418d9ce276cd292591d657b7c0b309efef9e90" }, "downloads": -1, "filename": "zyklop-0.4.zip", "has_sig": true, "md5_digest": "d9d5aabd718280b948bedf52e36d8d23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27517, "upload_time": "2013-02-05T00:40:00", "url": "https://files.pythonhosted.org/packages/1c/d7/c555831e6e7060b7ea5ad2940e8620de3b596b70f78b95bb874bc847b965/zyklop-0.4.zip" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "6cd0c6286259d1380cedceb1ba413a96", "sha256": "6a7f4d496c84d42f8ecfe0a4a0c2423a97347b298ed8d5603d9badeac569ebb8" }, "downloads": -1, "filename": "zyklop-0.5.zip", "has_sig": true, "md5_digest": "6cd0c6286259d1380cedceb1ba413a96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28268, "upload_time": "2013-02-06T05:41:02", "url": "https://files.pythonhosted.org/packages/88/3c/fe9eca7bf7a91cef34783b2cd99ee562388cff26bf46e4aea9d1b61ded30/zyklop-0.5.zip" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "dbbdd8373821ad20f91fd9658146cb01", "sha256": "72b0c4fc2ca5a13d4d4c9eaecf4865dc9a8a0ed45464a23ba61e73e6381eeac7" }, "downloads": -1, "filename": "zyklop-0.5.1.zip", "has_sig": true, "md5_digest": "dbbdd8373821ad20f91fd9658146cb01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29451, "upload_time": "2013-02-12T00:10:31", "url": "https://files.pythonhosted.org/packages/eb/4c/b9d31250c42150444e05a4b1f56ce2f35a528d583b2c1888598eebed0cca/zyklop-0.5.1.zip" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "ba365296740e3ae71b3322e44e909a06", "sha256": "255a57a782d9f872e334261ccc499f797e6ee22561c1a0b260b87d54586f5461" }, "downloads": -1, "filename": "zyklop-0.5.2.zip", "has_sig": true, "md5_digest": "ba365296740e3ae71b3322e44e909a06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29694, "upload_time": "2013-02-12T03:02:23", "url": "https://files.pythonhosted.org/packages/6c/00/664e1e87b3708ac5fbd145456aacc0c5b7805fad5b02491f9907c0cc7767/zyklop-0.5.2.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ba365296740e3ae71b3322e44e909a06", "sha256": "255a57a782d9f872e334261ccc499f797e6ee22561c1a0b260b87d54586f5461" }, "downloads": -1, "filename": "zyklop-0.5.2.zip", "has_sig": true, "md5_digest": "ba365296740e3ae71b3322e44e909a06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29694, "upload_time": "2013-02-12T03:02:23", "url": "https://files.pythonhosted.org/packages/6c/00/664e1e87b3708ac5fbd145456aacc0c5b7805fad5b02491f9907c0cc7767/zyklop-0.5.2.zip" } ] }