A Python 3 script to automate the download of SQL backups via a phpMyAdmin web interface.
This is useful when your web hosting provider does not grant you access the the console (for mysqldump) but you want to automate the backup of your database (without having to manually use the browser).
It has been tested with Python 3.4+ on Linux and Windows and phpMyAdmin 4.3.6, 4.5.4.1 and 4.7.0-dev
Note: The web interface of phpMyAdmin may change in the future and break this script. Please file a bug report (including your version of phpMyAdmin) if you encounter this issue.
usage: phpmyadmin_sql_backup.py [-h] [-o OUTPUT_DIRECTORY] [-p]
[-e EXCLUDE_DBS]
[--compression {none,zip,gzip}]
[--basename BASENAME] [--timeout TIMEOUT]
[--overwrite-existing]
[--prefix-format PREFIX_FORMAT] [--dry-run]
URL USERNAME PASSWORD
Automates the download of SQL dump backups via a phpMyAdmin web interface.
positional arguments:
URL phpMyAdmin login page url
USERNAME phpMyAdmin login username
PASSWORD phpMyAdmin login password
optional arguments:
-h, --help show this help message and exit
-o OUTPUT_DIRECTORY, --output-directory OUTPUT_DIRECTORY
output directory for the SQL dump file (default: the
current working directory)
-p, --prepend-date prepend current UTC date & time to the filename; see
the --prefix-format option for custom formatting
-e EXCLUDE_DBS, --exclude-dbs EXCLUDE_DBS
comma-separated list of database names to exclude from
the dump
--compression {none,zip,gzip}
compression method for the output file - must be
supported by the server (default: none)
--basename BASENAME the desired basename (without extension) of the SQL
dump file (default: the name given by phpMyAdmin); you
can also set an empty basename "" in combination with
--prepend-date and --prefix-format
--timeout TIMEOUT timeout in seconds for the requests (default: 60)
--overwrite-existing overwrite existing SQL dump files (instead of
appending a number to the name)
--prefix-format PREFIX_FORMAT
the prefix format for --prepend-date (default:
"%Y-%m-%d--%H-%M-%S-UTC_"); in Python's strftime
format. Must be used with --prepend-date to be in
effect
--dry-run dry run, do not actually download any file
--http-auth Basic http authentication, using format
"username:password"
Written by Christoph Haunschmidt, version: 2016-03-12.3
phpmyadmin_sql_backup.py "http://www.example.com/phpmyadmin/" your_user your_password
Downloads a plain text .sql backup of all databases to the current working directory.
phpmyadmin_sql_backup.py "http://www.example.com/phpmyadmin/" your_user your_password --exclude-dbs mydb2,mydb4 --prepend-date --basename example_dump --output-directory /tmp --compression zip
Downloads a zipped dump with databases mydb2 & mydb4 excluded, the base name example_dump and a prepended UTC date / time to the directory /tmp, e.g. /tmp/2016-03-11--15-19-04-UTC_example_dump.zip.
- A Python 3.4+ installation on your system
- Grab - python web-scraping framework: Install via
pip install -U Grabor see the installation instructions if you run into problems.
Currently, there is no changelog; the best option at the moment is to read the commit messages.
- Christoph Haunschmidt