README.md in pg_export-0.3.2 vs README.md in pg_export-0.4.0

- old
+ new

@@ -1,29 +1,36 @@ # PgExport +[![Gem Version](https://badge.fury.io/rb/pg_export.svg)](https://badge.fury.io/rb/pg_export) +[![Build Status](https://travis-ci.org/maicher/pg_export.svg?branch=master)](https://travis-ci.org/maicher/pg_export) +[![Code Climate](https://codeclimate.com/github/maicher/pg_export/badges/gpa.svg)](https://codeclimate.com/github/maicher/pg_export) + CLI for creating and exporting PostgreSQL dumps to FTP. Can be used for backups or synchronizing databases between production and development environments. Example: pg_export --database database_name -keep 5 -Above command will perform database dump, gzip it, upload it to FTP and remove old dumps from FTP, keeping newest 5. +Above command will perform database dump, encrypt it, upload it to FTP and remove old dumps from FTP, keeping newest 5. -FTP connection params are configured by env variables. +FTP connection params and encryption key are configured by env variables. Features: -- uses shell command pg_dump +- uses shell command `pg_dump` and `pg_restore` - no external gem dependencies +- encrypts dumps by OpenSSL - uses ruby tempfiles, so local dumps are garbage collected automatically +- easy restoring dumps through interactive mode ## Dependencies * Ruby >= 2.1 * $ pg_dump + * $ pg_restore ## Installation Add this line to your application's Gemfile: @@ -45,54 +52,67 @@ Usage: pg_export [options] -d, --database DATABASE [Required] Name of the database to export -k, --keep [KEEP] [Optional] Number of dump files to keep on FTP (default: 10) -t, --timestamped [Optional] Enables log messages with timestamps + -i, --interactive Interactive, command line mode, for restoring dumps into databases -h, --help Show this message Setting can be verified by running following commands: -c, --configuration Prints the configuration -f, --ftp Tries connecting to FTP to verify the connection ## How to start -__Step 1.__ Prepare FTP account and put configuration into env variables. +__Step 1.__ Prepare FTP account and put configuration into env variables. Dumps will be exported into that location. - # /etc/enviranment + # /etc/environment BACKUP_FTP_HOST="yourftp.example.com" BACKUP_FTP_USER="user" BACKUP_FTP_PASSWORD="password" -Password cannot include `#` sign, [more info](http://serverfault.com/questions/539730/environment-variable-in-etc-environment-with-pound-hash-sign-in-the-value). +__Step 2.__ Put dump encryption key into env variable (at least 16 characters). Dumps will be SSL(AES-128-CBC) encrypted using that key. + + # /etc/environment + DUMP_ENCRYPTION_KEY="1234567890abcdef" + +Variables cannot include `#` sign, [more info](http://serverfault.com/questions/539730/environment-variable-in-etc-environment-with-pound-hash-sign-in-the-value). -__Step 2.__ Configure other variables (optional). +__Step 3.__ Configure how many dumps should be kept in FTP (optional). # /etc/environment KEEP_DUMPS=5 # default: 10 -__Step 3.__ Print the configuration to verify whether env variables has been loaded. +__Step 4.__ Print the configuration to verify whether env variables has been loaded. $ pg_export --configuration => database: keep_dumps: 5 + dump_password: k40*** ftp_host: yourftp.example.com ftp_user: user ftp_password: pass*** -__Step 4.__ Try connecting to FTP to verify the connection. +__Step 5.__ Try connecting to FTP to verify the connection. $ pg_export --ftp => Connect to yourftp.example.com Close FTP -__Step 5.__ Perform database export. +__Step 6.__ Perform database export. $ pg_export -d your_database => Create Dump Tempfile (1.36MB) - Create Compressed Dump Tempfile (1.34MB) + Create Encrypted Dump Tempfile (1.34MB) Connect to yourftp.example.com - Export Compressed Dump Tempfile (1.34MB) your_database_20161020_125747.gz to yourftp.example.com + Export Encrypted Dump Tempfile (1.34MB) your_database_20161020_125747 to yourftp.example.com Close FTP + +## How to restore a dump? + +Go to interactive mode and follow the instructions: + + pg_export -i ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.