{ "info": { "author": "maludwig", "author_email": "mitchell.ludwig@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3" ], "description": "# DuraSFTP\n\nA durable extension the pysftp SFTP client: https://pysftp.readthedocs.io/\n\n## Installation\n\n```bash\npip install durasftp\n```\n\n## Command Line Usage\n\nShow the help:\n\n```bash\npython -m durasftp --help\n```\n\nMirror an SFTP endpoint to your local with private keys:\n\n```bash\npython -m durasftp --host some.sftp.server.com --port 22 --username your_username \\\n --private-key ~/.ssh/id_rsa --private-key-pass 'ULTRASECUREPASSWORD' \\\n --local-base /tmp/local_copy_of_server\n```\n\nMirror an SFTP endpoint to your local with a password:\n\n```bash\n\npython -m durasftp --host some.sftp.server.com --port 22 --username your_username \\\n --password 'ULTRASECUREPASSWORD' \\\n --local-base /tmp/local_copy_of_server\n```\n\n## Package Usage\n\nThis package very closely mirrors the functionality of pysftp, except it automatically \nrecovers a connection in the event that network connectivity is intermittent.\n\nIt also introduces a mirroring functionality, where you can copy a local directory to\na remote server, or copy a remote directory to the local. It will ignore files that\nalready exist on the destination, if the file size and modification time are identical.\n\n### Basic Usage\n\nThe DurableSFTPConnection class is intended to be a drop-in replacement for the\npysftp.Connection class. With a stable network connection, it should be identical in\nevery way.\n\n```python\nfrom durasftp import DurableSFTPConnection\n\nconn = DurableSFTPConnection(host=\"some.sftp.server.com\", port=22, username=\"your_username\", password=\"ULTRASECUREPASSWORD\")\nconn.listdir('/')\n```\n\n### Mirror from remote server to local\n\n```python\nfrom durasftp import Mirrorer\n\nmirrorer = Mirrorer(\n local_base=\"/tmp/local_copy_of_server\",\n host=\"some.sftp.server.com\",\n port=22,\n username=\"your_username\",\n password=\"ULTRASECUREPASSWORD\",\n timeout=3,\n)\nmirrorer.mirror_from_remote(dry_run=True)\n```\n\n\n", "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/maludwig/durasftp", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "durasftp", "package_url": "https://pypi.org/project/durasftp/", "platform": "", "project_url": "https://pypi.org/project/durasftp/", "project_urls": { "Homepage": "https://github.com/maludwig/durasftp" }, "release_url": "https://pypi.org/project/durasftp/1.0.0/", "requires_dist": [ "pysftp (>=0.2.9)", "arrow (>=0.14.4)" ], "requires_python": ">=3.5", "summary": "Durable SFTP connections", "version": "1.0.0" }, "last_serial": 5706542, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "7014bda22420708969c77866e8075e25", "sha256": "53f960caec1610154b4da270148bbc3687cf4c2f77fb33270a624ad25e0943c6" }, "downloads": -1, "filename": "durasftp-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7014bda22420708969c77866e8075e25", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 21102, "upload_time": "2019-08-21T01:31:48", "url": "https://files.pythonhosted.org/packages/fb/3f/f136d1549339438c4cd41e36b94d8b4fb7c9ce8f613601caad04eb2f0f79/durasftp-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79efcea13074c9629dc95b227d667a1e", "sha256": "b31a3e8209c770a1ef5de5e814e1a6f918f807c80dfca9bc988cb3cb61c2ef1a" }, "downloads": -1, "filename": "durasftp-1.0.0.tar.gz", "has_sig": false, "md5_digest": "79efcea13074c9629dc95b227d667a1e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 20537, "upload_time": "2019-08-21T01:31:51", "url": "https://files.pythonhosted.org/packages/08/75/5469f87d660dbfaac64dfd40d2de6ae4610ce5e2f217e637a2f95d8a9282/durasftp-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7014bda22420708969c77866e8075e25", "sha256": "53f960caec1610154b4da270148bbc3687cf4c2f77fb33270a624ad25e0943c6" }, "downloads": -1, "filename": "durasftp-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7014bda22420708969c77866e8075e25", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 21102, "upload_time": "2019-08-21T01:31:48", "url": "https://files.pythonhosted.org/packages/fb/3f/f136d1549339438c4cd41e36b94d8b4fb7c9ce8f613601caad04eb2f0f79/durasftp-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79efcea13074c9629dc95b227d667a1e", "sha256": "b31a3e8209c770a1ef5de5e814e1a6f918f807c80dfca9bc988cb3cb61c2ef1a" }, "downloads": -1, "filename": "durasftp-1.0.0.tar.gz", "has_sig": false, "md5_digest": "79efcea13074c9629dc95b227d667a1e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 20537, "upload_time": "2019-08-21T01:31:51", "url": "https://files.pythonhosted.org/packages/08/75/5469f87d660dbfaac64dfd40d2de6ae4610ce5e2f217e637a2f95d8a9282/durasftp-1.0.0.tar.gz" } ] }