{ "info": { "author": "Anmol Singh Jaggi", "author_email": "anmolj.65@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.7", "Topic :: Desktop Environment", "Topic :: System :: Archiving :: Backup", "Topic :: System :: Archiving :: Mirroring" ], "description": "\n# DirectSync\n\n[![PyPI version](https://badge.fury.io/py/directsync.svg)](https://badge.fury.io/py/directsync)\n![MIT License](https://img.shields.io/badge/license-MIT-green.svg)\n[![image](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/Anmol-Singh-Jaggi)\n\nAn efficient and easy-to-use utility to compare/synchronize/mirror folder contents.\n\n**Demo**\n\n![Demo gif](https://github.com/Anmol-Singh-Jaggi/directsync/raw/master/docs/demo.gif)\n\n**Usage:**\n\n directsync [-h] [-add] [-rm] [-ovr] [-rev] [-mirr] [-trash] [-cache]\n [-dry] [-no-bar]\n left-path right-path\n\n positional arguments:\n left-path The path of the left(source) directory.\n right-path The path of the right(destination) directory.\n\n optional arguments:\n -h, --help show this help message and exit\n -add, --add-missing Copy files from source which are absent in\n destination.\n -rm, --remove-extra Remove the files from destination which are absent in\n source.\n -ovr, --overwrite-content\n Overwrite the files having same name but different\n content.\n -rev, --reverse-sync-direction\n Use the right folder as source and the left as\n destination.\n -mirr, --mirror-contents\n Make the destination directory exactly same as the\n source. Shorthand for `-add -rm -ovr`.\n -trash, --use-trash Send to trash/recycle bin while deleting/overwriting.\n -cache, --use-cache Whether to use previously cached comparison-check\n result from disk.\n -dry, --dry-run Just simulate and report the file operations that will\n be performed with the current configuration.\n -no-bar, --hide-progress-bar\n Whether to hide the progress bar or not. Will result\n in a huge speedup iff the 2 directories are structured\n very differently.\n\n**Installation:**\n - `pip install directsync`\n\n**ToDo:**\n - Add `preserve-latest` option: Among the 2 files, the one with the latest modification date should be preserved.\n - Give more fine-tuned control of file comparison algorithm to the user.\n - Add `ignore-pattern` option to let the user ignore certain files based on the regex pattern provided.\n - Add test cases.\n - Add code coverage.\n - Setup `tox` and `Travis CI`.\n - Add coloured output.\n - Handle nested structures with symlinks.\n - Provide direct interface with online storage services.\n - Add developer guidelines.\n - ~~Add demo.~~\n - ~~Add `simulate` option.~~\n - ~~Add `use-trash` option to send to recycle bin instead of delete/overwrite.~~\n - ~~Add `cache` option to cache the results of the previous difference check to disk.~~\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/Anmol-Singh-Jaggi/directsync.git", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "directsync", "package_url": "https://pypi.org/project/directsync/", "platform": "", "project_url": "https://pypi.org/project/directsync/", "project_urls": { "Homepage": "https://github.com/Anmol-Singh-Jaggi/directsync.git" }, "release_url": "https://pypi.org/project/directsync/1.2.0/", "requires_dist": [ "tqdm", "binaryornot", "send2Trash" ], "requires_python": ">=3.4.0", "summary": "Compare(*diff*)/synchronize/backup/mirror folders quickly.", "version": "1.2.0" }, "last_serial": 5102307, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "96977c119a6af44ae6f77e0037a6cb08", "sha256": "b4f35823275cababe63c55fa254503a1d074c8ea19b910b34aab452dfbe79414" }, "downloads": -1, "filename": "directsync-1.0.0-py3-none-any.whl", "has_sig": true, "md5_digest": "96977c119a6af44ae6f77e0037a6cb08", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7.0", "size": 9549, "upload_time": "2019-04-03T22:24:07", "url": "https://files.pythonhosted.org/packages/ec/36/6b6738440f0def83b02fbc6602bc0021ddbab3271e103d84b9785399e6a1/directsync-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1439a1e52b086fa18f9734dd430d297f", "sha256": "2d36be417fb337672f331adcfa5080d8113b40d8425aea16bafd062629fa0ac7" }, "downloads": -1, "filename": "directsync-1.0.0.tar.gz", "has_sig": true, "md5_digest": "1439a1e52b086fa18f9734dd430d297f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 8674, "upload_time": "2019-04-03T22:24:10", "url": "https://files.pythonhosted.org/packages/4d/01/15c407fdffa4d457556d100dc9fbcdb0aa1e25bad13a280fd69a49478120/directsync-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "02295365743c6657a8ff449ceb185ede", "sha256": "c418f2f1d5a63682d9156633a72c169933b50b8fbcb8a745a5f4b21ac22742a2" }, "downloads": -1, "filename": "directsync-1.1.0-py3-none-any.whl", "has_sig": true, "md5_digest": "02295365743c6657a8ff449ceb185ede", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7.0", "size": 9712, "upload_time": "2019-04-03T23:47:58", "url": "https://files.pythonhosted.org/packages/af/2f/06059b8728f2bef3541272f122a6b825349ed548bf8be1a96a8f30238ff2/directsync-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "07b1323dbfd8b12c1686b063d77aaa1a", "sha256": "d0f64dbcd8f83398b2cbe58c8cb0175796305d68eb0bcf2b4ae588a941016e2c" }, "downloads": -1, "filename": "directsync-1.1.0.tar.gz", "has_sig": true, "md5_digest": "07b1323dbfd8b12c1686b063d77aaa1a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.0", "size": 8829, "upload_time": "2019-04-03T23:48:00", "url": "https://files.pythonhosted.org/packages/68/d9/669530eaf7987fc468604ad648b4580b4d628aaf6ac9382d9d801179f698/directsync-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "bfa09febede8f9bf73b4934be93de329", "sha256": "f74a5ad4990549ce5187b0ae7ac7c80c48d92423e667b78302a7e1c3afedd5ff" }, "downloads": -1, "filename": "directsync-1.1.1-py3-none-any.whl", "has_sig": true, "md5_digest": "bfa09febede8f9bf73b4934be93de329", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 9712, "upload_time": "2019-04-04T00:07:18", "url": "https://files.pythonhosted.org/packages/11/94/52bd7ca38bf94d2816533ad77281020ce3f102d18b70871773b35d33960a/directsync-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b1ee1ebfceca42be7c36388b916e331", "sha256": "a63d142201ec65c4af680a0430de27353ab52b15e4e3e51e8f6429f0adadc7ed" }, "downloads": -1, "filename": "directsync-1.1.1.tar.gz", "has_sig": true, "md5_digest": "5b1ee1ebfceca42be7c36388b916e331", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8828, "upload_time": "2019-04-04T00:07:20", "url": "https://files.pythonhosted.org/packages/5c/46/782d3edfd8f6e874427c48d0d4da8865a955e0484f3825d9a108619cd99b/directsync-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "086b9267a6d71f9e142f352716bef142", "sha256": "dfb49b0800ac06b762b17cff3166fe4f17712c53c741c5e6dae540b99afa18ea" }, "downloads": -1, "filename": "directsync-1.1.2-py3-none-any.whl", "has_sig": true, "md5_digest": "086b9267a6d71f9e142f352716bef142", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.0", "size": 9701, "upload_time": "2019-04-04T05:22:11", "url": "https://files.pythonhosted.org/packages/9c/4c/4c63d6b8e2da26c08d5a5d73b1d083256e9937eaf81e74ec233f98c72d74/directsync-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0bdf3633931522477f6a49399149241a", "sha256": "618fece66267a51e1521aadf9789e68a26c7b8edad5b1faf66e5994f8fccb53e" }, "downloads": -1, "filename": "directsync-1.1.2.tar.gz", "has_sig": true, "md5_digest": "0bdf3633931522477f6a49399149241a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 8810, "upload_time": "2019-04-04T05:22:12", "url": "https://files.pythonhosted.org/packages/70/f8/b46e6577019bb840a025e0f01f1584a66c4dcd9c6cd66c08bf8d9053ac87/directsync-1.1.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "47f83e6462a7a66dcf2807775c16000f", "sha256": "4ece1f8fafb3c19f91dfd6e2b9da88a75e1370c6862d7938cdb06cc17dd75721" }, "downloads": -1, "filename": "directsync-1.2.0-py3-none-any.whl", "has_sig": true, "md5_digest": "47f83e6462a7a66dcf2807775c16000f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.0", "size": 10766, "upload_time": "2019-04-05T06:41:03", "url": "https://files.pythonhosted.org/packages/ae/ad/3d1c942ee12c804305d9c235bdf20ca4d64a8eb669a086633b1525c8fb85/directsync-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5f245c3925b38f5db35914e2041ad0f", "sha256": "3b30f362b091552d4bdad52bd41b3c52c6b3a3ae5f9a40af86f1d308948fb91c" }, "downloads": -1, "filename": "directsync-1.2.0.tar.gz", "has_sig": true, "md5_digest": "c5f245c3925b38f5db35914e2041ad0f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 10143, "upload_time": "2019-04-05T06:41:05", "url": "https://files.pythonhosted.org/packages/d1/79/c8d0ee558ccaa50400b31105190dd45837babbbbd6220fc11cdd61716837/directsync-1.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "47f83e6462a7a66dcf2807775c16000f", "sha256": "4ece1f8fafb3c19f91dfd6e2b9da88a75e1370c6862d7938cdb06cc17dd75721" }, "downloads": -1, "filename": "directsync-1.2.0-py3-none-any.whl", "has_sig": true, "md5_digest": "47f83e6462a7a66dcf2807775c16000f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4.0", "size": 10766, "upload_time": "2019-04-05T06:41:03", "url": "https://files.pythonhosted.org/packages/ae/ad/3d1c942ee12c804305d9c235bdf20ca4d64a8eb669a086633b1525c8fb85/directsync-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c5f245c3925b38f5db35914e2041ad0f", "sha256": "3b30f362b091552d4bdad52bd41b3c52c6b3a3ae5f9a40af86f1d308948fb91c" }, "downloads": -1, "filename": "directsync-1.2.0.tar.gz", "has_sig": true, "md5_digest": "c5f245c3925b38f5db35914e2041ad0f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4.0", "size": 10143, "upload_time": "2019-04-05T06:41:05", "url": "https://files.pythonhosted.org/packages/d1/79/c8d0ee558ccaa50400b31105190dd45837babbbbd6220fc11cdd61716837/directsync-1.2.0.tar.gz" } ] }