Skript, mis teeb varukoopia WordPressi instantsist - BASH
From ICO wiki
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.