По долгу службы мне приходится часто делать дампы баз многочисленных установленных копий Magento.
Руками это делать довольно утомительно, так как приходится исключать из дампа самые большие по количеству данных таблицы со статистикой. Чтобы облегчить себе жизнь, написал небольшую консольную утилиту.
#!/bin/bash
usage
(){cat << EOF
usage: $
0 options
This script dumps magento database
excluding statistics
$
0 -d magento -f dump
will cause writing to dump.sql.bz2 with contents of
"magento" DB
OPTIONS
[required
]:
-d database name
-f file prefix to dump
OPTIONS
[optional
]:
-h msyql host
(localhost by default
) -u mysql user
(root by default
) -p password
(empty by default
) -s show
command only, not execute
-t log tables prefix
(empty by default
)EOF
}DB_HOST="localhost"DB_USER="root"DB_PASS=""DB_NAME=""SHOW_ONLY=""OUT_FILE=""TABLE_PREFIX=""while getopts “t:f:u:p:d:h:s” OPTION
do case $OPTION in s
) SHOW_ONLY="true" ;;
h
) DB_HOST=$OPTARG ;;
u
) DB_USER=$OPTARG ;;
p
) DB_PASS=$OPTARG ;;
d
) DB_NAME=$OPTARG ;;
f
) OUT_FILE=$OPTARG ;;
t
) TABLE_PREFIX=$OPTARG ;;
?
) usage
exit ;;
esacdoneif [[ -z
$DB_NAME ]] ||
[[ -z
$OUT_FILE ]]then usage
exit 1fiPASS_PART=""if [ ! -z
$DB_PASS ] then PASS_PART="--password=$DB_PASS"fiCOMMON="mysqldump ${DB_NAME} -h ${DB_HOST} --user=${DB_USER} ${PASS_PART}"SKIPPED_TABLES=("log_url_info" "log_visitor" "log_visitor_info" "log_url" "report_event")CMD="${COMMON}"CMD2="${COMMON} -d --tables "for table
in $
{SKIPPED_TABLES
[@
]}do CMD="$CMD --ignore-table=${DB_NAME}.${TABLE_PREFIX}${table}" CMD2="$CMD2 ${TABLE_PREFIX}${table}"doneif [ ! -z
$SHOW_ONLY ]then echo "$CMD > $OUT_FILE.sql" echo "$CMD2 >> $OUT_FILE.sql" echo "bzip2 $OUT_FILE.sql" else $CMD >
"$OUT_FILE.sql" $CMD2 >>
"$OUT_FILE.sql" bzip2
"$OUT_FILE.sql" ls -lash
"$OUT_FILE.sql.bz2"fi#