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.