{ "info": { "author": "Jeff Katcher", "author_email": "dp@nowhere.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Customer Service", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: End Users/Desktop", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Operating System :: POSIX :: Other", "Operating System :: Unix", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Unix Shell", "Topic :: Desktop Environment :: File Managers", "Topic :: Internet", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving", "Topic :: System :: Archiving :: Backup", "Topic :: System :: Filesystems", "Topic :: System :: Systems Administration", "Topic :: Utilities" ], "description": "LF Backup\n=========\n\nLF Backup stands for large file backup.\n\nInstallation\n------------\n\nRHEL / CentOS:\n\n::\n\n sudo yum -y install epel-release\n sudo yum -y install python34 python34-setuptools python34-devel gcc postgresql-devel\n sudo easy_install-3.4 pip\n\nDebian/Ubuntu:\n\n::\n\n sudo apt-get install -y python3-dev libpq-dev\n\nand then install lf-backup\n\n::\n\n sudo pip3 install --upgrade pip\n sudo pip3 install lf-backup\n\nConfiguration\n-------------\n\ncreate a new swift container called \"large-file-backup\"\n\nadd the export statements for variables starting with ST\\_ and the postgres authentication to config\nfile .lf-backuprc and set the permissions to 600. Optionally export PGSQL to override the built-in\nSQL query.\n\n::\n\n > nano ~/.lf-backuprc\n > chmod 600 ~/.lf-backuprc\n > cat ~/.lf-backuprc\n export ST_AUTH=https://swiftcluster.domain.org/auth/v1.0\n export ST_USER=swift_account\n export ST_KEY=RshBXXXXXXXXXXXXXXXXXXXXX\n export PGHOST=pgdb.domain.org\n export PGPORT=32048\n export PGDATABASE=storcrawldb\n export PGUSER=xxxxxxxx\n export PGPASSWORD= \n\ncreate a cron job /etc/cron.d/ running as root starting ca 7pm:\n\n::\n\n > cat /etc/cron.d/lf-backup\n ## enabled on hostname xxx on 11-01-2016\n 55 18 * * * root /usr/local/bin/lf-backup --prefix /fh/fast \\\n --container large-file-backup-fast --sql >> /var/tmp/lf-backup-fast 2>&1\n\nExamples\n--------\n\n::\n\n lf-backup -C frobozz -c filelist.csv\n\nRead list of files from 1st column of 'filename.csv' and backup to Swift container 'frobozz' using\nenvironment for authentication.\n\n::\n\n lf-backup -C grue -s\n\nQuery the database specified in the environment for the files and backup to Swift container 'grue'\nusing environment for authentication.\n\n::\n\n lf-backup -C flathead -r 7 --prefix /fh/fast/restore42\n\nRestore all objects in Swift container 'flathead' newer than 7 days back to current environment. The\noptional --prefix parameter specifies a destination path where objects will be restored.\n\nTest & Dev\n----------\n\nFor modifications and change testing install a new system and install from local git folder\n\n::\n\n > git clone https://github.com/FredHutch/lf-backup\n > rm -rf /usr/local/lib/python3.5/dist-packages/*; rm -rf /usr/local/bin/*\n > pip3 install -e ./lf-backup\n\n make changes in lf-backup and run again:\n\n > rm -rf /usr/local/lib/python3.5/dist-packages/*; rm -rf /usr/local/bin/*\n > pip3 install -e ./lf-backup\n\nThe script had the following original feature requests:\n\n- take a file list from CSV file or SQL DB and backup each file to object storage (e.g. swift)\n\n- restore files from object storage newer than specified number of days (>1)\n\n- if the file has an atime within the last x days (configurable) take an md5sum of that file and\n store the md5sum in an attribute / meta data called md5sum (not yet implemented)\n\n- check if the file is already in object store and do not upload if the file size and mtime is\n identical\n\n- notify a list of email-addresses after finishing. attach list of files that were uploaded; create\n one file list per file owner (username)\n\n- log every file that was uploaded to syslog, detailed logging of success and failure to enable\n storage team to monitor success / failure via splunk\n\n- bash script lf-backup is a wrapper for python script lfbackup.py, lf-backup sources and sets env\n vars with credentials and lfbackup.py only reads environments vars\n\n- main script lfbackup.py only uses swift functions in lflib.py.\n\n- segment size should be 1GB, segment container name should be .segments-containername, object type\n is slo, not dlo\n\n- backup with full path but replace prefix, for example a file\n /fh/fast/lastname\\_f/project/file.bam would be copied to container/bucket bam-backup in account\n Swift\\_\\_ADM\\_IT\\_backup. The target path would be /bam-bucket/lastname\\_f/project/file.bam a\n --prefix=/fh/fast removes the fs root path from the destination", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/FredHutch/lf-backup/tarball/0.4.5", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/FredHutch/lf-backup", "keywords": "openstack,swift,cloud storage", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "lf-backup", "package_url": "https://pypi.org/project/lf-backup/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/lf-backup/", "project_urls": { "Download": "https://github.com/FredHutch/lf-backup/tarball/0.4.5", "Homepage": "https://github.com/FredHutch/lf-backup" }, "release_url": "https://pypi.org/project/lf-backup/0.4.5/", "requires_dist": null, "requires_python": null, "summary": "lf-backup is a tool for backing up large files to object storage\n, e.g. swift.", "version": "0.4.5" }, "last_serial": 2584310, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "97968d25dc2ae6671ff0c55dc8c65913", "sha256": "bba218870d78103cbb834dab30efac2971ec43030e183e7b747060fd5393bb61" }, "downloads": -1, "filename": "lf-backup-0.0.3.tar.gz", "has_sig": false, "md5_digest": "97968d25dc2ae6671ff0c55dc8c65913", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12751, "upload_time": "2016-10-26T01:47:45", "url": "https://files.pythonhosted.org/packages/af/21/9248047fdf1e09d82b9884a76792f366de749da923d957d48ae164dbc7dc/lf-backup-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "cd26fd0d7cd0a1e776d2c4c70cdb3ac6", "sha256": "fa0c344ef471afba28c76d6122574ee6ae4723f7d9f4b230bd7981288bbe377e" }, "downloads": -1, "filename": "lf-backup-0.0.4.tar.gz", "has_sig": false, "md5_digest": "cd26fd0d7cd0a1e776d2c4c70cdb3ac6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12754, "upload_time": "2016-10-26T01:51:15", "url": "https://files.pythonhosted.org/packages/44/6b/41de73854fcf2f58a8f59ce41fcd89ee123f9c977cac4d4a531aab1fac9d/lf-backup-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "5aa839528357bc74080d842ad3d266c0", "sha256": "0d6e841f818d03cd6b61c1250167ee5a64237c187abc9ddeb38334e33cf72ebe" }, "downloads": -1, "filename": "lf-backup-0.0.5.tar.gz", "has_sig": false, "md5_digest": "5aa839528357bc74080d842ad3d266c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12257, "upload_time": "2016-10-26T02:39:12", "url": "https://files.pythonhosted.org/packages/03/a5/5641607d377b4e8b33985c7a83f02b621889ad911bf30c43bba4784129dd/lf-backup-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "d7d411a1954ab5a79ee69b07ce219765", "sha256": "e7c4a7e9b8e885c90a578e34231d32d946d5ab74462d2082804604fdc7fbba2c" }, "downloads": -1, "filename": "lf-backup-0.0.6.tar.gz", "has_sig": false, "md5_digest": "d7d411a1954ab5a79ee69b07ce219765", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12287, "upload_time": "2016-10-26T03:16:04", "url": "https://files.pythonhosted.org/packages/b2/40/2403157704efa184138ac7cac2af2c5bb6895c6af0d4ee8eb54b6e448fd4/lf-backup-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "e03222278b5dcc19944523c77e6485f2", "sha256": "26bea526db2816195c49bf6e4c3f52818434eae3c65cb8719a02fcb7b6538cfe" }, "downloads": -1, "filename": "lf-backup-0.0.7.tar.gz", "has_sig": false, "md5_digest": "e03222278b5dcc19944523c77e6485f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12302, "upload_time": "2016-10-26T03:27:48", "url": "https://files.pythonhosted.org/packages/95/7f/09c3c1c4df46b62022933edbf884125f1b73aa50b1b7b0bf72646794c958/lf-backup-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "4f88fb35c48cacfcde3e00fc3b2ce2b8", "sha256": "90c3c5efdd1c203823c9bbe2db9d8dfe6c44e4f7ad3f8a8b033a7008b94761b3" }, "downloads": -1, "filename": "lf-backup-0.0.8.tar.gz", "has_sig": false, "md5_digest": "4f88fb35c48cacfcde3e00fc3b2ce2b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12320, "upload_time": "2016-10-26T04:06:31", "url": "https://files.pythonhosted.org/packages/c2/2b/0ac1478da323a406d0bec2a76b9957ba35f6597dc8ff6644114b96b9f420/lf-backup-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "582e6314e736ed340ed4f4cd6a4fc2dc", "sha256": "a4b6c29630fad613e82a6e528501d63144005423774da0ffa962666bd34a188e" }, "downloads": -1, "filename": "lf-backup-0.0.9.tar.gz", "has_sig": false, "md5_digest": "582e6314e736ed340ed4f4cd6a4fc2dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12329, "upload_time": "2016-10-29T13:55:05", "url": "https://files.pythonhosted.org/packages/de/ba/21f2634a12ef154345bc490b87bb3b9a03300c0abd2d21ac3250ed69bfce/lf-backup-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "4f70b1e3f6652b935fc83529e0da0afc", "sha256": "494badaf035c0f83e90fadb5a12b8758ae60ba35a9a0d76725e29188d1eface9" }, "downloads": -1, "filename": "lf-backup-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4f70b1e3f6652b935fc83529e0da0afc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12945, "upload_time": "2016-11-10T16:50:30", "url": "https://files.pythonhosted.org/packages/7e/76/3e863659a850e332ae83f54c2a05759ef938fdbfbf1c00a4d95a3b03bd09/lf-backup-0.1.0.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "8c8ca39c6b4838b5937795bede48dcbd", "sha256": "3d2a14a9ed9548d8a4b5ec0ac7d46a07efcab0e00819e4ddc8db2940aa1173b6" }, "downloads": -1, "filename": "lf-backup-0.2.tar.gz", "has_sig": false, "md5_digest": "8c8ca39c6b4838b5937795bede48dcbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12993, "upload_time": "2016-11-15T05:07:20", "url": "https://files.pythonhosted.org/packages/6e/ee/4cd4ac24a48c2099f651e0a053ebbaf82e2a8f2214602082a021f037060c/lf-backup-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "16a5061bfde1ee534d89c3090959d0b7", "sha256": "cc0d327bc0c21c71f68901a72cad6c4b3a34932333f729e0807a5dc3b1e4cd59" }, "downloads": -1, "filename": "lf-backup-0.3.tar.gz", "has_sig": false, "md5_digest": "16a5061bfde1ee534d89c3090959d0b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14086, "upload_time": "2016-11-15T06:01:31", "url": "https://files.pythonhosted.org/packages/95/2f/0e942a9fc04ec91905257c4839c27cbdc7ccb143f251d35a2e3ce936220e/lf-backup-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "ce747c8fec88b392ef011b2cc1dd22da", "sha256": "ec0d73a23696a15a2eb0958650b62710a47e601fa0a297a54da76b0962acff60" }, "downloads": -1, "filename": "lf-backup-0.4.tar.gz", "has_sig": false, "md5_digest": "ce747c8fec88b392ef011b2cc1dd22da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14628, "upload_time": "2016-12-15T19:03:23", "url": "https://files.pythonhosted.org/packages/47/8c/6c38d53ef31b91a992b14db363bdbd9b33dcdf14cca0eee2633ac56f262a/lf-backup-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "67a8b23e1585fe01ab7142f3f8987ac8", "sha256": "333650461753978e1862644442c4cdd5c9a82d83ecef56d5644dec68e0cf1754" }, "downloads": -1, "filename": "lf-backup-0.4.1.tar.gz", "has_sig": false, "md5_digest": "67a8b23e1585fe01ab7142f3f8987ac8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14644, "upload_time": "2016-12-15T19:25:17", "url": "https://files.pythonhosted.org/packages/78/d9/df06ad480589439da3d2317403232b419a4af8a5f1845683102e43cbd5c4/lf-backup-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "b7c5c3b8c672b2e24740869d5af76095", "sha256": "7819db6cb5c0a356f82da66243b1b5409f86fd7f4b55879d09e0c4cd78015778" }, "downloads": -1, "filename": "lf-backup-0.4.2.tar.gz", "has_sig": false, "md5_digest": "b7c5c3b8c672b2e24740869d5af76095", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14554, "upload_time": "2016-12-16T05:46:58", "url": "https://files.pythonhosted.org/packages/60/bd/88fd9c1db210301bc63065bed13bf706e9b30934bc872aaa1817d020afde/lf-backup-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "50c5ea4b8e3162264d6b5c8dd78d4b47", "sha256": "e929d4d0f6ff156fb88ae86f4a8d51cc18b439f78169570b26224f7b400d7a79" }, "downloads": -1, "filename": "lf-backup-0.4.3.tar.gz", "has_sig": false, "md5_digest": "50c5ea4b8e3162264d6b5c8dd78d4b47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14608, "upload_time": "2017-01-11T06:36:28", "url": "https://files.pythonhosted.org/packages/c9/d8/3e090aa8addfc282520b0963d82195ac0a9543f251be768b1ec3e35e9e56/lf-backup-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "5364ea310c2340597d07f6cd79c7b18d", "sha256": "942310fd7b8544ce6e19b46f9e23d3f829b6bae2f3cd8d5b2c1986a2c574225d" }, "downloads": -1, "filename": "lf-backup-0.4.4.tar.gz", "has_sig": false, "md5_digest": "5364ea310c2340597d07f6cd79c7b18d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14620, "upload_time": "2017-01-11T07:02:27", "url": "https://files.pythonhosted.org/packages/f7/65/51f8288276ed43d172a88407dd2bfd258d8919667a5e2a4f2ce21b339986/lf-backup-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "be4fb31b2c2944bb0efaef2df1ca82cd", "sha256": "5948e24d7cb2d32ed69e54812430afc5b1b59729c6f7f64a230a402d8eb4cc93" }, "downloads": -1, "filename": "lf-backup-0.4.5.tar.gz", "has_sig": false, "md5_digest": "be4fb31b2c2944bb0efaef2df1ca82cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14644, "upload_time": "2017-01-19T07:01:39", "url": "https://files.pythonhosted.org/packages/68/bf/239448edf47eac61c75d7281dddf0397f19e84ce08dc9702477d10d8f6df/lf-backup-0.4.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "be4fb31b2c2944bb0efaef2df1ca82cd", "sha256": "5948e24d7cb2d32ed69e54812430afc5b1b59729c6f7f64a230a402d8eb4cc93" }, "downloads": -1, "filename": "lf-backup-0.4.5.tar.gz", "has_sig": false, "md5_digest": "be4fb31b2c2944bb0efaef2df1ca82cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14644, "upload_time": "2017-01-19T07:01:39", "url": "https://files.pythonhosted.org/packages/68/bf/239448edf47eac61c75d7281dddf0397f19e84ce08dc9702477d10d8f6df/lf-backup-0.4.5.tar.gz" } ] }