Skript, mis teeb varukoopia WordPressi instantsist - BASH: Difference between revisions
From ICO wiki
Jump to navigationJump to search
(Created page with '==Argumendid== WordPressi instantsi kodukataloogi asukoht. ==Tulemus== Tehakse varukoopia MySQL baasi vastavatest tabelitest ja WP kataloogipuust. Tabeli nime prefiks võetakse …') |
No edit summary |
||
Line 4: | Line 4: | ||
==Tulemus== | ==Tulemus== | ||
Tehakse varukoopia MySQL baasi vastavatest tabelitest ja WP kataloogipuust. Tabeli nime prefiks võetakse WP konfiguratsioonifailist. Kogu asi pakitakse kokku kujul ''(prefiks)-yymmddhhss.tar.gz'' | Tehakse varukoopia MySQL baasi vastavatest tabelitest ja WP kataloogipuust. Tabeli nime prefiks võetakse WP konfiguratsioonifailist. Kogu asi pakitakse kokku kujul ''(prefiks)-yymmddhhss.tar.gz'' | ||
==Skript== | |||
wp-backup.sh | |||
<source lang="bash"> | |||
#!/bin/bash | |||
#if [ $# -ne 1 ] || [ "$UID" -ne 0 ] || [ ! -r $1 ] | |||
if [ $# -lt 1 ] || [ ! -r $1 ] || [ $# -gt 2 ] | |||
then | |||
echo "Kasutamine: $(basename $0) <wp-dir> [-q]" | |||
echo "<wp-dir> peab viitama eksisteerivale WordPressi installatsiooniasukohale." | |||
exit 1 | |||
else | |||
export LC_ALL=C | |||
WP_PATH=${1%/} # eemaldame vajadusel liigse kaldkriipsu | |||
WPCONFIG="$WP_PATH/wp-config.php" | |||
#echo $WPCONFIG | |||
if [ ! -r $WPCONFIG ] | |||
then | |||
echo "wp-config.php faili ei leitud!" | |||
exit 1 | |||
fi | |||
# loeme wp-config.php-st vajalikud parameetrid -- VAJAB HÄDASTI REGULAARAVALDISI (aga hetkel pole viitsimist) | |||
# mysql username | |||
MYSQL_USER=`grep -i DB_USER $WPCONFIG` | |||
MYSQL_USER=${MYSQL_USER%%\');} # eemaldame kõik alates viimasest ülakomast | |||
MYSQL_USER=${MYSQL_USER##*\'} # eemaldame kõik enne viimast ülakoma (k.a.) | |||
# mysql password | |||
MYSQL_PASSWORD="" | |||
MYSQL_PASSWORD=`grep -i DB_PASSWORD $WPCONFIG` | |||
MYSQL_PASSWORD=${MYSQL_PASSWORD%%\');} # eemaldame kõik alates viimasest ülakomast | |||
MYSQL_PASSWORD=${MYSQL_PASSWORD##*\'} # eemaldame kõik enne viimast ülakoma (k.a.) | |||
# mysql database | |||
MYSQL_DB="" | |||
MYSQL_DB=`grep -i DB_NAME $WPCONFIG` | |||
MYSQL_DB=${MYSQL_DB%%\');} # eemaldame kõik alates viimasest ülakomast | |||
MYSQL_DB=${MYSQL_DB##*\'} # eemaldame kõik enne viimast ülakoma (k.a.) | |||
# mysql host | |||
MYSQL_HOST="" | |||
MYSQL_HOST=`grep -i DB_HOST $WPCONFIG` | |||
MYSQL_HOST=${MYSQL_HOST%%\');} # eemaldame kõik alates viimasest ülakomast | |||
MYSQL_HOST=${MYSQL_HOST##*\'} # eemaldame kõik enne viimast ülakoma (k.a.) | |||
# table prefix | |||
TABLE_PREFIX="" | |||
TABLE_PREFIX=`grep -i table_prefix $WPCONFIG` | |||
TABLE_PREFIX=${TABLE_PREFIX%%\';} | |||
TABLE_PREFIX=${TABLE_PREFIX##*\'} | |||
if [ "$2" != "-q" ] | |||
then | |||
echo "" | |||
echo "Leidsin alltoodud parameetrid: " | |||
echo "MYSQL_USER: $MYSQL_USER" | |||
echo "MYSQL_PASSWORD: $MYSQL_PASSWORD" | |||
echo "MYSQL_DB: $MYSQL_DB" | |||
echo "MYSQL_HOST: $MYSQL_HOST" | |||
echo "TABLE_PREFIX: $TABLE_PREFIX" | |||
echo "" | |||
echo "Tundub usutav? [J/e]:" | |||
read CONFIRM | |||
if [ ! $CONFIRM ] || [ ${CONFIRM,,} = "j" ] | |||
then | |||
echo "Oota natuke..." | |||
else | |||
echo "Selge pilt, katkestame." | |||
exit 1 | |||
fi | |||
fi | |||
MYSQL_PARAMS="" | |||
if [ "$MYSQL_USER" != "" ] | |||
then | |||
MYSQL_PARAMS=$MYSQL_PARAMS" --user=$MYSQL_USER" | |||
fi | |||
if [ "$MYSQL_PASSWORD" != "" ] | |||
then | |||
MYSQL_PARAMS=$MYSQL_PARAMS" --password=$MYSQL_PASSWORD" | |||
fi | |||
if [ "$MYSQL_HOST" != "" ] | |||
then | |||
MYSQL_PARAMS=$MYSQL_PARAMS" --host=$MYSQL_HOST" | |||
fi | |||
if [ "$MYSQL_DB" != "" ] | |||
then | |||
MYSQL_PARAMS=$MYSQL_PARAMS" $MYSQL_DB" | |||
fi | |||
FILENAME=wp-backup_$(date +%Y%m%d-%H%M%S.%N) | |||
if [ "$TABLE_PREFIX" != "" ] | |||
then | |||
mysqldump $MYSQL_PARAMS --tables $(mysql $MYSQL_PARAMS -e \"show tables\" --batch | grep $TABLE_PREFIX) > $FILENAME.sql | |||
else | |||
mysqldump $MYSQL_PARAMS > $FILENAME.sql | |||
fi | |||
#tar | |||
mv ./$FILENAME.sql $WP_PATH/$FILENAME.sql | |||
pushd $WP_PATH > /dev/null | |||
tar cfz $FILENAME.tar.gz * && rm $FILENAME.sql | |||
popd > /dev/null | |||
mv $WP_PATH/$FILENAME.tar.gz . | |||
echo "Tehtud! Sinu varukoopia asub failis $FILENAME.tar.gz" | |||
exit 0 | |||
fi | |||
</source> | |||
==Parameetrid== | |||
* wp-config.php asukoht (kohustuslik) | |||
* -q -- vaikne režiim, teeb töö ära ilma ekraanile teateid kuvamata. | |||
==Teadaolevad kitsaskohad== | |||
* Testitud ainult ühe WP konfiguratsioonifailiga. | |||
* Vajaks hädasti universaalsemaid regulaaravaldisi wp-config.php lugemisel. | |||
* Praegune versioon eeldab, et mysql on juba süsteemis olemas. Selle puudumist ei ole testitud. |
Latest revision as of 14:16, 23 January 2011
Argumendid
WordPressi instantsi kodukataloogi asukoht.
Tulemus
Tehakse varukoopia MySQL baasi vastavatest tabelitest ja WP kataloogipuust. Tabeli nime prefiks võetakse WP konfiguratsioonifailist. Kogu asi pakitakse kokku kujul (prefiks)-yymmddhhss.tar.gz
Skript
wp-backup.sh
#!/bin/bash
#if [ $# -ne 1 ] || [ "$UID" -ne 0 ] || [ ! -r $1 ]
if [ $# -lt 1 ] || [ ! -r $1 ] || [ $# -gt 2 ]
then
echo "Kasutamine: $(basename $0) <wp-dir> [-q]"
echo "<wp-dir> peab viitama eksisteerivale WordPressi installatsiooniasukohale."
exit 1
else
export LC_ALL=C
WP_PATH=${1%/} # eemaldame vajadusel liigse kaldkriipsu
WPCONFIG="$WP_PATH/wp-config.php"
#echo $WPCONFIG
if [ ! -r $WPCONFIG ]
then
echo "wp-config.php faili ei leitud!"
exit 1
fi
# loeme wp-config.php-st vajalikud parameetrid -- VAJAB HÄDASTI REGULAARAVALDISI (aga hetkel pole viitsimist)
# mysql username
MYSQL_USER=`grep -i DB_USER $WPCONFIG`
MYSQL_USER=${MYSQL_USER%%\');} # eemaldame kõik alates viimasest ülakomast
MYSQL_USER=${MYSQL_USER##*\'} # eemaldame kõik enne viimast ülakoma (k.a.)
# mysql password
MYSQL_PASSWORD=""
MYSQL_PASSWORD=`grep -i DB_PASSWORD $WPCONFIG`
MYSQL_PASSWORD=${MYSQL_PASSWORD%%\');} # eemaldame kõik alates viimasest ülakomast
MYSQL_PASSWORD=${MYSQL_PASSWORD##*\'} # eemaldame kõik enne viimast ülakoma (k.a.)
# mysql database
MYSQL_DB=""
MYSQL_DB=`grep -i DB_NAME $WPCONFIG`
MYSQL_DB=${MYSQL_DB%%\');} # eemaldame kõik alates viimasest ülakomast
MYSQL_DB=${MYSQL_DB##*\'} # eemaldame kõik enne viimast ülakoma (k.a.)
# mysql host
MYSQL_HOST=""
MYSQL_HOST=`grep -i DB_HOST $WPCONFIG`
MYSQL_HOST=${MYSQL_HOST%%\');} # eemaldame kõik alates viimasest ülakomast
MYSQL_HOST=${MYSQL_HOST##*\'} # eemaldame kõik enne viimast ülakoma (k.a.)
# table prefix
TABLE_PREFIX=""
TABLE_PREFIX=`grep -i table_prefix $WPCONFIG`
TABLE_PREFIX=${TABLE_PREFIX%%\';}
TABLE_PREFIX=${TABLE_PREFIX##*\'}
if [ "$2" != "-q" ]
then
echo ""
echo "Leidsin alltoodud parameetrid: "
echo "MYSQL_USER: $MYSQL_USER"
echo "MYSQL_PASSWORD: $MYSQL_PASSWORD"
echo "MYSQL_DB: $MYSQL_DB"
echo "MYSQL_HOST: $MYSQL_HOST"
echo "TABLE_PREFIX: $TABLE_PREFIX"
echo ""
echo "Tundub usutav? [J/e]:"
read CONFIRM
if [ ! $CONFIRM ] || [ ${CONFIRM,,} = "j" ]
then
echo "Oota natuke..."
else
echo "Selge pilt, katkestame."
exit 1
fi
fi
MYSQL_PARAMS=""
if [ "$MYSQL_USER" != "" ]
then
MYSQL_PARAMS=$MYSQL_PARAMS" --user=$MYSQL_USER"
fi
if [ "$MYSQL_PASSWORD" != "" ]
then
MYSQL_PARAMS=$MYSQL_PARAMS" --password=$MYSQL_PASSWORD"
fi
if [ "$MYSQL_HOST" != "" ]
then
MYSQL_PARAMS=$MYSQL_PARAMS" --host=$MYSQL_HOST"
fi
if [ "$MYSQL_DB" != "" ]
then
MYSQL_PARAMS=$MYSQL_PARAMS" $MYSQL_DB"
fi
FILENAME=wp-backup_$(date +%Y%m%d-%H%M%S.%N)
if [ "$TABLE_PREFIX" != "" ]
then
mysqldump $MYSQL_PARAMS --tables $(mysql $MYSQL_PARAMS -e \"show tables\" --batch | grep $TABLE_PREFIX) > $FILENAME.sql
else
mysqldump $MYSQL_PARAMS > $FILENAME.sql
fi
#tar
mv ./$FILENAME.sql $WP_PATH/$FILENAME.sql
pushd $WP_PATH > /dev/null
tar cfz $FILENAME.tar.gz * && rm $FILENAME.sql
popd > /dev/null
mv $WP_PATH/$FILENAME.tar.gz .
echo "Tehtud! Sinu varukoopia asub failis $FILENAME.tar.gz"
exit 0
fi
Parameetrid
- wp-config.php asukoht (kohustuslik)
- -q -- vaikne režiim, teeb töö ära ilma ekraanile teateid kuvamata.
Teadaolevad kitsaskohad
- Testitud ainult ühe WP konfiguratsioonifailiga.
- Vajaks hädasti universaalsemaid regulaaravaldisi wp-config.php lugemisel.
- Praegune versioon eeldab, et mysql on juba süsteemis olemas. Selle puudumist ei ole testitud.