+#!/bin/sh
+passfile=$1
+cfgfile=$(readlink -f $2)
+stordir=$(readlink -f $3)
+tempdir=/tmp/mysqlbak_$$
+currdat=$(date +%Y%m%d)
+archive=$(hostname -s)
+tarname=mysqlbak_${archive}_${currdat}
+
+case $(uname) in
+ FreeBSD) statres=$(stat -f %Sp/%Su ${passfile});;
+ Linux) statres=$(stat -c %A/%U ${passfile});;
+ *) echo Unknown OS.; exit 1;;
+esac
+
+if [ "${statres}" != "-r--------/$(whoami)" ]
+then
+ echo "Password file must have 400 permissions and must be owned by you! (And it must exist, by the way.)"
+ exit 1
+fi
+dbpass=$(cat ${passfile})
+
+umask 027
+mkdir ${tempdir}
+cd ${tempdir}
+cat ${cfgfile} | while read db
+do
+ sqlfile=mysqlbak_${db}_${currdat}.sql
+ if ! mysqldump --user root --password=${dbpass} --databases ${db} > ${sqlfile};
+ then
+ echo "Failed to dump ${db} to ${sqlfile}."
+ rm ${sqlfile}
+ fi
+done
+
+if tar cvf ${tarname}.tar *.sql;
+then
+ rm *.sql
+ bzip2 --best *.tar
+ mv ${tarname}.tar.bz2 ${stordir}
+
+ cd ${stordir}
+ rmdir ${tempdir}
+
+ shift 3
+ for target in "$@"
+ do
+ scp ${tarname}.tar.bz2 ${target}
+ done
+else
+ echo "Failed to create archive: ${tarname}."
+ exit 1
+fi