Last active
December 19, 2015 12:59
-
-
Save puckbag/5958482 to your computer and use it in GitHub Desktop.
A shell script to automate syncing a website downstream during development, including a database and media directory.
Supports (MySQL,MsSQL) --> (MySQL,SQLite).
Requires wget and sequel.
Assumes broco environment.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
doc_root= | |
ftp_domain= | |
ftp_host= | |
ftp_user= | |
ftp_pass= | |
db_remote_type=tinytds | |
db_remote_data= | |
db_remote_host= | |
db_remote_user= | |
db_remote_pass= | |
db_local_type=mysql | |
db_local_data= | |
db_local_host= | |
db_local_user= | |
db_local_pass= | |
# record current working directory | |
PWD=`pwd` | |
# test for required commands | |
for c in 'wget' 'sequel'; do | |
command -v $c >/dev/null && continue || { echo "$c command not found."; exit 1; } | |
done | |
# display variables | |
echo | |
echo "doc_root: $doc_root" | |
echo "ftp_domain: $ftp_domain" | |
echo "ftp_host: $ftp_host" | |
echo "ftp_user: $ftp_user" | |
echo "ftp_pass: $ftp_pass" | |
echo "db_remote_data: $db_remote_data" | |
echo "db_remote_host: $db_remote_host" | |
echo "db_remote_user: $db_remote_user" | |
echo "db_remote_pass: $db_remote_pass" | |
echo "db_local_data: $db_local_data" | |
echo "db_local_host: $db_local_host" | |
echo "db_local_user: $db_local_user" | |
echo "db_local_pass: $db_local_pass" | |
echo | |
# http://www.linuxcommand.org/wss0150.php | |
PROGNAME=$(basename $0) | |
function error_exit | |
{ | |
echo "${PROGNAME}[$1]: ${2:-"Unknown Error"}" 1>&2 | |
cd $PWD | |
exit 1 | |
} | |
# change to document root | |
cd $doc_root || error_exit $LINENO "error changing to document root '$doc_root'" | |
# mirror media/ files | |
echo | |
echo 'copy media/...' | |
wget -q -r -nH --cut-dirs=1 "ftp://$ftp_user:$ftp_pass@$ftp_host/$ftp_domain/htdocs/media" | |
if [ $db_local_type='mysql' ]; then | |
# drop and create the database | |
echo | |
echo 'drop and create database...' | |
mysql -u"$db_local_user" -p"$db_local_pass" -e"DROP DATABASE $db_local_data; CREATE DATABASE $db_local_data DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;" | |
# copy the databaes | |
echo | |
echo 'copy database...' | |
sequel -C "$db_remote_type://$db_remote_user:$db_remote_pass@$db_remote_host/$db_remote_data" "mysql://$db_local_user:$db_local_pass@$db_local_host/$db_local_data" | |
fi | |
if [ $db_local_type='sqlite' ]; then | |
rm -Rf "$doc_root/data/${db_local_data}-data.sqlite" | |
sequel -C "$db_remote_type://$db_remote_user:$db_remote_pass@$db_remote_host/$db_remote_data" "sqlite:$doc_root/data/${db_local_data}-data.sqlite" | |
fi | |
# change back to original working directory | |
cd $PWD | |
# done | |
echo | |
echo 'done' | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment