{ "info": { "author": "Alexandru Ionica", "author_email": "alexandru@ionica.eu", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Programming Language :: Python :: 2.7", "Topic :: System :: Archiving :: Backup" ], "description": "README\n======\n\nWhat is this repository for?\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCommand line backup tool which backups local files to Amazon S3.\n\nAES-256 client side encryption support is also available.\n\nOnly regular files, symlinks and folders are backed up.\n\n**Requirements**: Linux or a Unix system (or a derivative) having Python\n2.7, the Pycrypto and Boto python libraries. If using encryption then at\nleast 60MB RAM need to be available for the backup tool.\n\n**Tested on**: Mac OS X *El Captian*\\ (10.11), Ubuntu 16.04, FreeBSD 9.3\n. Most likely will work on a lot more systems.\n\nInstallation\n~~~~~~~~~~~~\n\nInstall From Pip (recommended)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nInstall package: ``sudo pip install s3backuptool``\n\nCreate a config file based on the `provided\nsample `__.\n\nInstall From Source\n^^^^^^^^^^^^^^^^^^^\n\nFetch\n`s3backuptool.py `__\nand\n`config.sample `__\nfiles from source and make the release executable with\n``chmod +x s3backuptool.py``\n\nInstall dependencies\n''''''''''''''''''''\n\nfrom your distribution's package repositories:\n\n\n- for CentOS 6 or RHEL 6 with EPEL repo:\n ``yum install python-crypto2.6 python2-boto``\n- for CentOS 7 or RHEL 7 with EPEL repo:\n ``yum install python2-crypto python2-boto``\n- Ubuntu 12.04 / 14.04 / 16.04:\n ``apt-get install python-boto python-crypto``\n- Debian: ``apt-get install python-boto python-crypto`` ###### using\n pip ``pip install boto pycrypto`` ### Usage: backups ###\n- Edit the config file and adjust as needed.\n- Init the SQLite database(ese) which will store information about\n backed up files. The reason init is manually done is to ensure that\n in the case the database is lost, the user is always notified. Run:\n ``./s3backuptool.py -c config_file initdb``\n- Run the first backup: ``./s3backuptool.py -c config_file backup``\n\nVerbose messages can be enabled with ``--verbose`` or debug can be\nenabled with ``--debug``\n\nUsage: restores\n^^^^^^^^^^^^^^^\n\n- If you don't already have a config file then create it and adjust as\n needed so it resembles the config file used to backup files. Pay\n special attention to having the same configuration section(s), S3\n bucket name and path variables or otherwise restores will fail\n- If the system where you are going to restore does not have the\n database which used to store backed up file information then run the\n database init: ``./s3backuptool.py -c config_file initdb`` . This\n will be used to store information about files pending restored and\n also restored files\n- Start restore with: ``./s3backuptool.py -c config_file restore``.\n Once the file selection is complete even if somehow the restore\n fails, you should be able to resume the restore from where it was\n left\n\nUsage: information about backups\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- to show all files backed up to AWS S3 run:\n ``./s3backuptool.py -c config_file list_remote``\n- to show statistics about backed up files, run:\n ``./s3backuptool.py -c config_file stats``\n\nUsage: dealing with a corrupted or lost local database of the backed up files\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- if somehow you loose the local database(s) which store information\n about backedup files then you can rebuild the local DB using the\n metadata of the S3 stored files, by running:\n ``./s3backuptool.py -c config_file syncdb_remote``\n\nUsage: decrypting a manually downloaded file without having to setup a config file\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- if you downloaded a file from S3 which you had encrypted before\n storage then you can easily decrypt it without having to setup a\n config file (and maybe rebuild the local SQL database from the S3\n file metadata). Just run ``./s3backuptool.py quick_decrypt`` and when\n prompted list the path to the input (encrypted) file, output folder\n and the password to use for decryption.\n\nHow does it work ?\n~~~~~~~~~~~~~~~~~~\n\nThe purpose of the local SQLite databse(s)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nA SQLite database is used for each \"configuration section\" (section\ndefining how to backup files under a certain path). This database stores\nmetadata about files like last changed time, file size, permissions,\netc. When a backup operation runs file properties will be compared with\nthe data available in the database and based on this a decision will be\nmade if a new copy of the file needs to be uploaded to Amazon S3.\n\nUsing a local DB provides advantages as the fact that no S3 operations\nare need to be performed except for file uploads. Otherwise for each\nbacked up files, the file properties would have to be fetched from S3\nand compared to local files and this operation would be slow (and cost).\n\nMetadata stored in S3\n^^^^^^^^^^^^^^^^^^^^^\n\nFor each backed up file, properties like last change time, owner, group,\npermission modes are saved as S3 metadata attached to the S3 Key.\nOtherwise the file content is unchanged and you could directly download\nand use the file (except if it's encrypted)\n\nEncryption\n^^^^^^^^^^\n\nIf desired, files can be encrypted on the client side using\n`AES256 `__\nencryption but by default encryption is disabled. If you choose to\nenable encryption then each file is encrypted: \\* using a different\n`salt `__ and\n`initialization\nvector(IV) `__ \\*\nthe original(unencrypted) file size, salt and IV are stored at the\nbegining of the ecrypted file using the following format: original file\nsize (8 bytes) + IV (16 bytes) + salt (32 bytes) + encrypted file\ncontent \\* only file content is encrypted. File names or metadata like\nowner, permissions bits are not encrypted\n\nWARNINGS\n~~~~~~~~\n\nBefore using this tool please understand that: \\* it's a very very new\ntool, so there may be lots of bugs lurking \\* only regular files,\nsymlinks and folders are backed up. All other types of files are\nignored. This means the tool is geared at backing up content and less at\ndoing full system restores (because it ignores things like device files,\nsockets, etc)\n\nLicense\n~~~~~~~\n\nGPLv2\n\nContribution guidelines\n~~~~~~~~~~~~~~~~~~~~~~~\n\nPlease use 160 character width lines for formatting. Submit pull\nrequests with patches and adjusted/added unit tests, where needed.\n\nWho do I talk to?\n~~~~~~~~~~~~~~~~~\n\n- Repo owner or admin: Alexandru Ionica alexandru@ionica.eu\n\nShould I use this in production\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPlease understand this is alpha quality software. Use it on your own\nrisk.", "description_content_type": null, "docs_url": null, "download_url": "https://bitbucket.org/alexandru_ionica/s3backuptool/get/0.1.2.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/alexandru_ionica/s3backuptool", "keywords": "s3backup s3backuptool", "license": "GPLv2", "maintainer": null, "maintainer_email": null, "name": "s3backuptool", "package_url": "https://pypi.org/project/s3backuptool/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/s3backuptool/", "project_urls": { "Download": "https://bitbucket.org/alexandru_ionica/s3backuptool/get/0.1.2.tar.gz", "Homepage": "https://bitbucket.org/alexandru_ionica/s3backuptool" }, "release_url": "https://pypi.org/project/s3backuptool/0.1.2/", "requires_dist": [ "boto", "pycrypto" ], "requires_python": null, "summary": "Command line backup tool which backups local files to Amazon S3. AES-256 client side encryption support is also available. Only regular files, symlinks and folders are backed up.", "version": "0.1.2" }, "last_serial": 2537171, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "c6ec74c92ab3a21a74234384d6a6fb95", "sha256": "d78a4232cd9eb5d5df6f0bd4ae7506f73dc0cce10da4686ed353f0c7236efb8e" }, "downloads": -1, "filename": "s3backuptool-0.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "c6ec74c92ab3a21a74234384d6a6fb95", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 79441, "upload_time": "2016-12-22T11:24:59", "url": "https://files.pythonhosted.org/packages/e8/f9/86f9a5e49adc96fba4fbf242658504bf5bf9ee7bbb2a14ad319dddd9c5c3/s3backuptool-0.1.1-py2-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "ca3f7bdeef86cadab09de7d5fc868b1b", "sha256": "86b1a23b878b3e79e263fa3b8fd7cb7b89d927ec6f7742e9400a373dc47df314" }, "downloads": -1, "filename": "s3backuptool-0.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "ca3f7bdeef86cadab09de7d5fc868b1b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 82102, "upload_time": "2016-12-23T19:09:11", "url": "https://files.pythonhosted.org/packages/e2/7a/11dfe744b24d5ce0862dccee6e623df3caef3b20eb446dd9983261bf2156/s3backuptool-0.1.2-py2-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ca3f7bdeef86cadab09de7d5fc868b1b", "sha256": "86b1a23b878b3e79e263fa3b8fd7cb7b89d927ec6f7742e9400a373dc47df314" }, "downloads": -1, "filename": "s3backuptool-0.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "ca3f7bdeef86cadab09de7d5fc868b1b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 82102, "upload_time": "2016-12-23T19:09:11", "url": "https://files.pythonhosted.org/packages/e2/7a/11dfe744b24d5ce0862dccee6e623df3caef3b20eb446dd9983261bf2156/s3backuptool-0.1.2-py2-none-any.whl" } ] }