Last active
September 10, 2019 14:33
-
-
Save yvoronoy/e55973a12cd573c86261452ebfb4040f to your computer and use it in GitHub Desktop.
Magento 2 Code and DB dumps
This file contains 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
#!/usr/bin/env bash | |
function runCommand | |
{ | |
echo "${CMD}" | |
eval ${CMD}; | |
} | |
function getDb | |
{ | |
echo $(grep [\']db[\'] -A 20 app/etc/env.php | grep $1 | head -n1 | sed "s/.*[=][>][ ]*[']//" | sed "s/['][,]//"); | |
return 0; | |
} | |
function encryptFile | |
{ | |
echo "Encrypting $1 file" | |
openssl enc -aes-256-cbc -in /tmp/$1 -out pub/media/$1.enc | |
} | |
function printCommandsToDownloadDump | |
{ | |
echo "curl -k -L -O ${URL}media/${1}.enc && openssl enc -d -aes-256-cbc -in ${1}.enc -out ${1};" | |
} | |
export DB_NAME=$(getDb dbname) | |
export DB_HOST=$(getDb host) | |
export DB_USER=$(getDb username) | |
export DB_USER_PASSWORD=$(getDb password) | |
codeDumpFilename=`date +%Y-%m-%d`_$(whoami).tar.gz | |
dbDumpFilename=`date +%Y-%m-%d`_$(whoami).sql.gz | |
CMD="tar cfh - ./ | |
--exclude=pub/media/catalog/* | |
--exclude=pub/media/* | |
--exclude=pub/media/backup/* | |
--exclude=pub/media/import/* | |
--exclude=pub/media/tmp/* | |
--exclude=pub/static/* | |
--exclude=var/* | |
--exclude=private | |
--exclude=tests | gzip > /tmp/${codeDumpFilename}" | |
runCommand | |
CMD="(mysqldump --no_data --routines --force --skip-opt --single-transaction --create-options --disable-keys --extended-insert --set-charset --quick --add-drop-table -h $DB_HOST -u $DB_USER --password=$DB_USER_PASSWORD $DB_NAME | sed -e 's/DEFINER[ ]*=[ ]*[Backup dumps without backup.sh script^*]*\*/\*/' && mysqldump --force --skip-opt --skip-add-drop-table --no-create-info --skip-triggers --single-transaction --quick \ | |
--ignore-table=$DB_NAME.cache_tag \ | |
--ignore-table=$DB_NAME.sales_bestsellers_aggregated_daily \ | |
--ignore-table=$DB_NAME.core_cache \ | |
--ignore-table=$DB_NAME.magento_logging_event \ | |
--ignore-table=$DB_NAME.magento_logging_event_changes \ | |
--ignore-table=$DB_NAME.customer_log \ | |
--ignore-table=$DB_NAME.report_event \ | |
--ignore-table=$DB_NAME.report_viewed_product_index \ | |
--ignore-table=$DB_NAME.search_query \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_final_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_bundle_opt_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_bundle_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_downlod_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_cfg_opt_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_opt_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_cfg_opt_agr_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_opt_agr_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_bundle_sel_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_eav_decimal_idx \ | |
--ignore-table=$DB_NAME.cataloginventory_stock_status_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_eav_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_idx \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_downlod_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_cfg_opt_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_eav_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_opt_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_cfg_opt_agr_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_eav_decimal_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_opt_agr_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_bundle_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_bundle_sel_tmp \ | |
--ignore-table=$DB_NAME.cataloginventory_stock_status_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_final_tmp \ | |
--ignore-table=$DB_NAME.catalog_product_index_price_bundle_opt_tmp \ | |
--ignore-table=$DB_NAME.magento_catalogpermissions_index_tmp \ | |
--ignore-table=$DB_NAME.magento_catalogpermissions_index_product_tmp \ | |
--ignore-table=$DB_NAME.catalog_category_product_index_tmp \ | |
-h $DB_HOST -u $DB_USER --password=$DB_USER_PASSWORD $DB_NAME &) | gzip > /tmp/${dbDumpFilename}" | |
runCommand | |
URL=$(mysql -h $DB_HOST -u $DB_USER --password=$DB_USER_PASSWORD $DB_NAME -e "SELECT core_config_data.value FROM core_config_data WHERE path = 'web/unsecure/base_url'" | grep http | head -1) | |
encryptFile ${codeDumpFilename} | |
encryptFile ${dbDumpFilename} | |
echo "Run these commands on your host to download and decrypt dumps" | |
echo "#############################################################" | |
printCommandsToDownloadDump ${codeDumpFilename} | |
printCommandsToDownloadDump ${dbDumpFilename} | |
echo "rm ${codeDumpFilename}.enc ${dbDumpFilename}.enc" | |
echo "#############################################################" | |
read -p "Press [Enter] key to continue and remove dumps from public directory" | |
CMD="rm pub/media/${codeDumpFilename}.enc /tmp/${codeDumpFilename}" | |
runCommand | |
CMD="rm pub/media/${dbDumpFilename}.enc /tmp/${dbDumpFilename}" | |
runCommand | |
echo "Dumps has been removed" | |
echo "Exit" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment